黑狐家游戏

cas sso单点登出原理,cas单点登录和token的区别

欧气 2 0

本文目录导读:

  1. CAS单点登录概述
  2. Token相关概念
  3. CAS单点登录与Token的区别

《深入解析CAS单点登录与Token:从单点登出原理看二者的区别》

CAS单点登录概述

(一)CAS工作流程

1、用户访问

- 当用户首次访问一个受CAS保护的应用(称为服务提供商,Service Provider,SP)时,由于没有有效的票据(Ticket),SP会将用户重定向到CAS服务器(Central Authentication Server)的登录页面。

cas sso单点登出原理,cas单点登录和token的区别

图片来源于网络,如有侵权联系删除

2、身份验证

- 在CAS服务器上,用户输入用户名和密码进行身份验证,如果验证成功,CAS服务器会创建一个包含用户身份信息的票据(TGT,Ticket - Granting Ticket),这个TGT是与用户会话相关联的,并且存储在CAS服务器端。

3、票据授予

- CAS服务器会为用户生成一个ST(Service Ticket),这个ST是专门针对用户要访问的SP的,然后将用户重定向回SP,并在重定向的URL中携带这个ST。

4、服务验证

- SP接收到带有ST的请求后,会拿着ST到CAS服务器进行验证,CAS服务器验证ST的有效性,如果有效,则向SP返回用户的身份信息,SP根据这些信息允许用户访问相应的资源。

(二)CAS单点登出原理

1、全局登出请求

- 当用户在一个SP上发起登出操作时,SP会向CAS服务器发送一个登出请求,这个请求包含了用户的相关标识(如TGT标识等)。

2、清除相关票据

- CAS服务器收到登出请求后,会根据请求中的标识找到对应的TGT,并将其标记为无效,CAS服务器还会维护一个已登出的TGT列表。

3、通知相关SP

- CAS服务器会查询与该TGT相关联的所有ST,并向这些ST对应的SP发送通知,告知它们用户已经登出,SP收到通知后,会清除本地与该用户相关的会话信息,例如清除在本地缓存的用户身份信息、权限信息等,从而实现单点登出。

Token相关概念

(一)Token的定义与生成

1、定义

cas sso单点登出原理,cas单点登录和token的区别

图片来源于网络,如有侵权联系删除

- Token是一种用于表示用户身份或者授权的字符串,它可以包含用户的身份信息、权限信息等经过加密或者编码后的数据。

2、生成方式

- 通常是由服务器端的认证服务生成,在基于JSON Web Token(JWT)的认证系统中,服务器会使用一个密钥(Secret),结合用户的一些信息(如用户ID、用户名、角色等),通过特定的算法(如HS256算法)生成一个签名的Token,这个Token可以在不同的服务之间传递,以证明用户的身份和权限。

(二)Token的验证与使用

1、验证过程

- 当客户端携带Token请求服务时,服务端会首先对Token进行验证,如果是JWT,服务端会使用相同的密钥按照与生成时相反的操作对Token进行解密和验证签名,如果签名验证通过,说明Token没有被篡改,然后服务端可以解析出其中包含的用户身份和权限信息。

2、基于Token的访问控制

- 根据解析出的用户权限信息,服务端可以决定是否允许客户端进行相应的操作,如果Token中表明用户只有只读权限,那么当客户端请求写入操作时,服务端会拒绝该请求。

CAS单点登录与Token的区别

(一)架构差异

1、CAS单点登录架构

- CAS是一个集中式的认证架构,有专门的CAS服务器作为中央认证中心,多个SP依赖于CAS服务器进行身份验证和授权,这种架构下,所有的身份验证逻辑集中在CAS服务器,SP只需要与CAS服务器交互来获取用户身份信息。

2、Token架构

- Token架构相对更加分散,每个服务都可以独立生成和验证Token,虽然可能存在一个专门的认证服务来生成Token,但验证可以在各个需要使用用户身份信息的服务中进行,在微服务架构中,不同的微服务可以根据自己的需求验证Token中的权限信息。

(二)单点登出实现方式的区别

1、CAS单点登出

cas sso单点登出原理,cas单点登录和token的区别

图片来源于网络,如有侵权联系删除

- 在CAS单点登出中,是通过CAS服务器统一管理票据(TGT和ST)来实现的,当用户在一个SP登出时,CAS服务器会清除全局的TGT,并通知所有相关的SP清除本地会话,这种方式确保了在多个SP之间的登出一致性,只要与CAS集成的SP都能及时收到登出通知并处理。

2、Token的登出挑战

- Token本身没有像CAS那样内置的单点登出机制,由于Token是分布式的,可能被多个服务使用,如果要实现登出,一种常见的方法是在服务端维护一个Token黑名单,当用户登出时,将对应的Token加入黑名单,但是这种方法存在一些问题,比如如何在多个服务之间同步黑名单,以及黑名单可能会无限增长等。

(三)安全性方面的区别

1、CAS安全性

- CAS通过票据(TGT和ST)的方式来保证安全性,TGT在CAS服务器端存储并且有一定的有效期和安全策略,ST是一次性使用的票据,并且在传输过程中通常是加密的,CAS服务器和SP之间的通信也可以采用加密协议,如HTTPS,来防止信息泄露。

2、Token安全性

- Token的安全性取决于其生成和验证算法以及传输过程中的保护,如果使用强加密算法(如JWT中的HS256)并且在传输过程中采用安全协议(如HTTPS),可以保证一定的安全性,如果Token被窃取,由于它包含了用户身份和权限信息,攻击者可能会利用它来访问相应的资源,除非服务端及时将其加入黑名单或者采用其他防范措施。

(四)适用场景的区别

1、CAS适用场景

- CAS适用于企业内部多个应用系统的单点登录集成,特别是当这些应用系统有统一的管理和安全策略要求时,一个大型企业内部的办公系统、人力资源管理系统、财务系统等,可以通过CAS实现用户一次登录,在各个系统中无缝切换访问。

2、Token适用场景

- Token更适合于分布式系统、微服务架构和跨域的身份认证,在微服务架构中,不同的微服务可能由不同的团队开发和部署,使用Token可以方便地在各个微服务之间传递用户身份和权限信息,而不需要依赖于一个集中式的认证服务器,在跨域的场景下,Token可以很容易地在不同的域之间传递,只要遵循相应的安全协议。

标签: #cas sso #单点登出 #单点登录 #token

黑狐家游戏
  • 评论列表

留言评论