zoukankan      html  css  js  c++  java
  • 前后端分离中使用CAS认证

    跨域问题

    CAS登录过程
    Browser -> CAS -> Browser(ticket) -> BackEnd(验证ticket) -> Browser
    前后端分离中,后端返回302让浏览器跳转到CAS认证中心时因为ajax跨域被阻止,这里提供一种解决思路。
    在前端检测登录状态,未登录则直接(带着service)跳转到CAS认证中心。登录后认证中心会让浏览器跳转会service中的路径,前端取service和ticket发给后端,
    后端手动验证ticket是否有效,请求地址如下(Get请求)。成功则会返回一个包含用户信息的xml,可以直接用regex筛选,未找到即为验证失败。

    String validateUrl = serverUrlPrefix + "p3/serviceValidate?ticket=" + ticket
                         + "&service=" + URLEncoder.encode(service, "UTF-8");
    
    //正则表达式提取字符串
    public static void pickByRegex() {
        String line = "<cas:user>admin</cas:user>";
        String regex = "<cas:user>(.*)</cas:user>";
        Matcher matcher = Pattern.compile(regex).matcher(line);
        if (matcher.find()) {
            System.out.println(matcher.group(0));
            //提取出的值
            System.out.println(matcher.group(1));
        }
    }
    

    如有错漏,欢迎指正!谢绝转载。
  • 相关阅读:
    Java输入/输出
    JSP第二天 JavaBean加强
    JSP 第一天学习
    java集合
    Github配置SSH Keys
    Android Fragment学习笔记
    Android开源资源整理
    centos终端显示字母重叠
    好用的log查看工具log2console
    .NET 日期转换
  • 原文地址:https://www.cnblogs.com/srczhang/p/15272698.html
Copyright © 2011-2022 走看看