cas单点登录(实现了SSO架构)

cas单点登录(实现了SSO架构)

cas(具体)是实现sso(抽象)的一种手段
SSO 是英文 Single Sign On 的缩写,翻译过来就是单点登录。顾名思义,它把两个及以上个产品中的用户登录逻辑抽离出来,达到只输入一次用户名密码,就能同时登录多个产品的效果。
cas单点登录(实现了SSO架构)_第1张图片
单点登录(SSO)思路(多个产品都是在一个域名下)

  1. 用户访问产品 a,向 后台服务器发送登录请求。
  2. 登录认证成功,服务器把用户的登录信息写入 session。
  3. 服务器为该用户生成一个 cookie,并加入到 response header 中,随着请求返回而写入浏览器。该 cookie 的域设定为 http://dxy.cn。
  4. 下一次,当用户访问同域名的产品 b 时,由于 a 和 b 在同一域名下,也是 http://dxy.cn,浏览器会自动带上之前的 cookie。此时后台服务器就可以通过该 cookie 来验证登录状态了。
    cas单点登录(实现了SSO架构)_第2张图片
    详解COS
  • 术语
    Client:用户。
    Server:中心服务器,也是 SSO 中负责单点登录的服务器。
    Service:需要使用单点登录的各个服务,相当于上文中的产品 a/b。
  • 接口
    /login:登录接口,用于登录到中心服务器。
    /logout:登出接口,用于从中心服务器登出。
    /validate:用于验证用户是否登录中心服务器。
    /serviceValidate:用于让各个 service 验证用户是否登录中心服务器。
  • 票据

1、TGT:Ticket Grangting Ticket
TGT 是 CAS 为用户签发的登录票据,拥有了 TGT,用户就可以证明自己在 CAS 成功登录过。TGT 封装了 Cookie 值以及此 Cookie 值对应的用户信息。当 HTTP 请求到来时,CAS 以此 Cookie 值(TGC)为 key 查询缓存中有无 TGT ,如果有的话,则相信用户已登录过。

2、TGC:Ticket Granting Cookie
CAS Server 生成TGT放入自己的 Session 中,而 TGC 就是这个 Session 的唯一标识(SessionId),以 Cookie 形式放到浏览器端,是 CAS Server 用来明确用户身份的凭证。

3、ST:Service Ticket
ST 是 CAS 为用户签发的访问某一 service 的票据。用户访问 service 时,service 发现用户没有 ST,则要求用户去 CAS 获取 ST。用户向 CAS 发出获取 ST 的请求,CAS 发现用户有 TGT,则签发一个 ST,返回给用户。用户拿着 ST 去访问 service,service 拿 ST 去 CAS 验证,验证通过后,允许用户访问资源。
在这里插入图片描述

  • CAS实现SSO思路:

1、用户访问产品 a,域名是 http://www.a.cn。
2、由于用户没有携带在 a 服务器上登录的 a cookie,所以 a 服务器返回 http 重定向,重定向的 url 是 SSO 服务器的地址,同时 url 的 query 中通过参数指明登录成功后,回跳到 a 页面。重定向的url 形如 http://sso.dxy.cn/login?service=https%3A%2F%2Fwww.a.cn。
3、由于用户没有携带在 SSO 服务器上登录的 TGC(看上面,票据之一),所以 SSO 服务器判断用户未登录,给用户显示统一登录界面。用户在 SSO 的页面上进行登录操作。
4、登录成功后,SSO 服务器构建用户在 SSO 登录的 TGT(又一个票据),同时返回一个 http 重定向。这里注意:
cas单点登录(实现了SSO架构)_第3张图片
cas单点登录(实现了SSO架构)_第4张图片
CAS原理与介绍:
在这里插入图片描述

你可能感兴趣的:(ssh+jpa,安全,ssh,服务器)