zoukankan      html  css  js  c++  java
  • CAS单点登录原理

    单点登录

    单点登录流程

    第一次登录

    image-20210824154131459

    1. 用户请求http://shopping.com,会经过AuthenticationFilter认证过滤器(在cas client 的web.xml中配置)

      主要作用:判断是否登录,如果没有登录则重定向到认证中心。

      image-20210824155129543

    2. AuthenticationFilter发现用户没有登录,则返回浏览器重定向地址。
      在这里插入图片描述

    3. 浏览器根据响应回来的重定向地址,向cas.com认证系统发出请求

    4. 认证系统cas.com接收请求,响应登陆页面

    5. 用户登陆页面输入用户名密码,提交请求

    6. CAS Server 认证服务器接收用户名和密码,就行验证,验证逻辑CAS Server 已经实现,并响应给浏览器信息
      image-20210824161348031

      当认证服务器验证通过之后,根据请求参数service的值,进行重定向,其实就是回到了请求的客户端,同时会携带一个ticket令牌参数。同时会在Cookie中设置一个TGC,该cookie是网站认证系统cas.xiaogui.com的cookie,只有访问这个网站才会携带这个cookie过去。
      这个携带TGC的Cookie是实现CAS单点登录的关键所在

      Cookie中的TGC:向cookie中添加该值的目的是当下次访问cas.xiaogui.com认证系统时,浏览器将Cookie中的TGC携带到服务器,服务器根据这个TGC,查找与之对应的TGT。从而判断用户是否登录过了,是否需要展示登录页面。TGT与TGC的关系就像SESSION与Cookie中SESSIONID的关系。
      TGT:Ticket Granted Ticket(俗称大令牌,或者说票根,他可以签发ST)
      TGC:Ticket Granted Cookie(cookie中的value),存在Cookie中,根据他可以找到TGT。
      ST:Service Ticket (小令牌),是TGT生成的,默认是用一次就生效了。
      image-20210824161409671

    7. 客户端拿到请求中的ticket信息,经过一个ticket过滤器Cas20ProxyReceivingTicketValidationFilter,去认证系统CAS Server判断ticket是否有效

      这个过滤器的主要工作就是校验客户端传过来的ticket是否有效
      image-20210824161553272
      CAS Client 客户端 shopping.xiaogui.com 中web.xml的配置
      image-20210824161729176

    8. 向CAS Server认证系统发出验证ticket的请求,然后执行ticket验证

    9. 通过校验之后,把用户信息保存到客户端的session中,并把客户端的SessionID设置在Cookie中,同时告知客户端ticket有效。当用户再次访问该客户端,就可以根据Cookie 中的SessionID找到客户端的Session,获取用户信息,就不用再次进行验证了。也就是图中响应给浏览器的部分。

    10. 客户端接收到cas-server的返回,知道了用户已经登录,ticket有效,告知浏览器可以进行访问
      image-20210824161749574

    第二次登录

    image-20210824163448849

    1. :当用户第二次访问,仍然会经过AuthenticationFilter过滤器,但与第一次访问不同的是此时客户端session中已经存在用户的信息,浏览器中的Cookie会根据SessionID找到Session,获取用户信息,所以不需要进行验证,可以直接访问。
    2. 客户端告知浏览器可以进行访问。
    3. 用户向CAS Client客户端发出请求
    4. 接收到请求,发现第一次访问,于是给他一个重定向的地址,让他去找认证中心登录。
      image-20210824163626142
    5. 浏览器根据上面响应的地址,发起重定向,因为之前访问过一次了,因此这次会携带上次返回的Cookie:TGC到认证中心
    6. 认证中心收到请求,发现TGC对应了一个TGT,于是用TGT签发一个ticket,并且返回给浏览器,让他重定向到pay.xiaogui.comCAS Client客户端。
      image-20210824163726686
    7. 根据上面响应回来的地址,进行重定向到pay.comCAS Client客户端
    8. pay.xiaogui.comCAS Client客户端带着ticket去认证中心验证是否有效。
    9. 认证成功,把用户信息保存到客户端的session中,并把客户端的SessionID设置在Cookie中。当用户下次访问pay.comCAS Client客户端,直接登录,无需验证。image-20210824163807846
    10. 告知浏览器可以进行访问

    单点登录原理:

    原文链接:https://blog.csdn.net/qq_41258204/article/details/84036875

    单点登录实现
    原文链接:https://blog.csdn.net/qq_41258204/article/details/84112091

  • 相关阅读:
    jchdl
    jchdl
    UVa 10256 (判断两个凸包相离) The Great Divide
    UVa 11168 (凸包+点到直线距离) Airport
    LA 2572 (求可见圆盘的数量) Kanazawa
    UVa 10652 (简单凸包) Board Wrapping
    UVa 12304 (6个二维几何问题合集) 2D Geometry 110 in 1!
    UVa 10674 (求两圆公切线) Tangents
    UVa 11796 Dog Distance
    LA 3263 (平面图的欧拉定理) That Nice Euler Circuit
  • 原文地址:https://www.cnblogs.com/fkxiaozhou/p/15180917.html
Copyright © 2011-2022 走看看