CAS原理与基本概念

最近在搞公司的单点登录,后面会对CAS单点登录做详细的讲解,并一步一步的介绍如何搭建企业级的单点登录。并且会介绍如何对原生的CAS进行改造,然后支持WEB/WAP第三方登录以及APP端的登录

系统原理

集中式认证服务(英语:Central Authentication Service,缩写CAS)是一种针对万维网的单点登录协议。它的目的是允许一个用户访问多个应用程序,而只需提供一次凭证(如用户名和密码)。它还允许web应用程序在没有获得用户的安全凭据(如密码)的情况下对用户进行身份验证。“CAS”也指实现了该协议的软件包。

CAS 协议涉及到至少三个方面:客户端Web浏览器、Web应用请求的身份验证和CAS服务器。当客户端访问访问应用程序,请求身份验证时,应用程序重定向到CAS。CAS验证客户端是否被授权,通常通过在数据库对用户名和密码进行检查(例如Kerberos、LDAP或Active Directory)。

如果身份验证成功,CAS令客户端返回到应用程序,并传递身份验证票(Security ticket)。然后,应用程序通过安全连接连接CAS,并提供自己的服务标识和验证票。之后CAS给出了关于特定用户是否已成功通过身份验证的应用程序授信信息。

客户端浏览器首次登录如下所示:

​​​​​​​

授权认证后,再次请求CAS客户端2(其他业务系统)时,就可以免登录,从而达到一次登录,全站访问的效果。

最后提供一下具体的交互序列图,如下所示:

​​​​​​​

基本概念

CAS系统中设计了5中票据:TGC、ST、PGT、PGTIOU、PT

Ticket-granting cookie(TGC):存放用户身份认证凭证的cookie,在浏览器和CAS Server间通讯时使用,并且只能基于安全通道传输(Https),是CAS Server用来明确用户身份的凭证;

Service ticket(ST):服务票据,服务的惟一标识码,由CAS Server发出(Http传送),通过客户端浏览器到达业务服务器端;一个特定的服务只能有一个惟一的ST;

Proxy-Granting ticket(PGT):由CAS Server颁发给拥有ST凭证的服务,PGT绑定一个用户的特定服务,使其拥有向CAS Server申请,获得PT的能力;

Proxy-Granting Ticket I Owe You(PGTIOU):作用是将通过凭证校验时的应答信息由CAS Server 返回给CAS Client,同时,与该PGTIOU对应的PGT将通过回调链接传给Web应用。Web应用负责维护PGTIOU与PGT之间映射关系的内容表;

Proxy Ticket (PT):是应用程序代理用户身份对目标程序进行访问的凭证;

Ticket Granting ticket(TGT):票据授权票据,由KDC的AS发放。即获取这样一张票据后,以后申请各种其他服务票据(ST)便不必再向KDC提交身份认证信息(Credentials);

Authentication service(AS) :认证用服务,索取Credentials,发放TGT;

Ticket-granting service (TGS):票据授权服务,索取TGT,发放ST;

KDC( Key Distribution Center ):密钥发放中心;