
CAS认证协议
- Gavain Juan
- 认证 , 协议
- 2024年11月21日
介绍
Centeral Authentication Service 基于web的单点登录认证协议。它允许一个用户通过一个凭证(如用户名和密码)在多个应用程序中实现身份验证。CAS 主要用于 web环境中,它通过提供一个中央服务器来处理认证请求,使得用户只需登录一次,就可以访问多个不同的服务。
概念
CAS client: 需要单点登录访问的应用。 CAS server:负责处理用户的认证请求并提供一个集中的认证服务,主要功能:认证用户,生成票据,服务票据分发,票据验证。
TGT:Ticket Granting Ticket用户身份认证成功后,CAS会为用户签发登录票据,通过此票据可以证明用户已经登录成功,后续的服务访问而无需重新认证,CAS会将此票据存储起来,可以有效期内一直使用。
[!INFO] TGT是一种特殊的票据,它能够“授予”或生成其他类型的票据,即Service Ticket(ST)。当用户想要访问一个受保护的服务时,他们会使用TGT来请求一个ST,ST是用于访问特定服务的临时凭证。
TGC:存储在浏览器中的认证中心 cookie,认证成功后会返回一个 TGC到浏览器,与 TGC关联。
ST:一个临时的、一次性的凭据,由认证服务器生成,并颁发给已经通过身份验证的用户。用户使用这个服务票据来访问一个或多个服务,而不需要在每个服务上重新进行身份验证。一旦服务票据被验证,它通常就会被废弃,以防止重放攻击。
接入流程
- 第三方应用在认证中心进行服务注册,确保第三方应用能够通过认证中心进行单点登录。
- 第三方应用后台增加认证
filter(具体实现的话,可以是集成cas apereo的cas-client相关依赖,也可以是集成spring security cas相关依赖)。cas client集成参考:cas client单点登录集成
认证过程
- 用户访问第三方应用的目标地址,
- 后台认证
filter检测到请求未认证,携带着目标地址重定向到认证中心的登录页面 - 用户登录成功之后,会生成用户登录成功的票据:
TGT&TGC,并生成ST,将TGC和ST返回给用户浏览器,重定向到第三方应用的目标地址,此时携带着ST。 - 应用程序收到带有服务票据的请求后,会将其发送回
CAS服务器进行验证。 CAS服务器验证服务票据的有效性。如果服务票据有效,CAS服务器返回认证响应:是否成功,成功的话携带用户信息。ST使用后此时已失效,第三方应用可以据此创建会话。- 当第三方应用会话过期或被清理后,如果
TGT还在有效期内,但此时ST已经过期,还是会重定向到登录页面,不过此时不需要再次输入用户名密码,可能会看到页面闪烁(为了更好的用户体验,CAS实现可能会使用一个透明的中间页面或者直接在后台完成新的ST的发放,从而避免用户看到登录页面的闪现)

