cas单点登录案例场景

91 阅读1分钟

简单案例

说明:

  1. 当前客户有一个现有pc网站(A站), 需要从A站登录之后的控制台,提供另外一个B站的直接单点进入B站。这里只提供相同账号进行单点进入。
  2. 这种场景是需要满足A站和B站拥有相同的账号。
  3. 这种只是一种较为简单的情况案例,只能用于特定简单的场景。

/** 
* A站调用B站的白名单接口
* B站提供的单点接口 
* @param // username 账号
* @param // redirect B站的登录地址(回调地址)
*/
@GetMapping("xxLogin")
public void xxLogin(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
    HttpSession httpSession = request.getSession(); 

    String username = request.getParameter("username"); // 账号
    String redirectUrl = request.getParameter("redirect"); // 成功后回调地址
    
    // 通过账号生成Token, 具体生成规则与实际情况而定
    String ACCESS_TOKEN = ""; // token值

    // T1 = "存储token名称",这里假设为 token
    Cookie token_Cookie = new Cookie(T1, ACCESS_TOKEN);
    token_Cookie.setPath("/"); 
    response.addCookie(token_Cookie);
    
    // T2 = "刷新token名称",这里假设为 refresh_token
    Cookie refresh_token_Cookie = new Cookie(T2, ACCESS_TOKEN);
    refresh_token_Cookie.setPath("/");
    response.addCookie(refresh_token_Cookie);
    
    // 设置后端认证成功标识(可有可无,看实际场景而定)
    // T3 = "B站前端重定向存储的token名称",这里假设为 token
    httpSession.setAttribute(T3, ACCESS_TOKEN);
    
    // 登录成功后跳转到B站登录成功后的首页
    response.sendRedirect(redirectUrl);
 }