一、CAS协议介绍
集中式认证服务(Central Authentication Service,简称CAS)是一种针对web应用的单点登录协议,旨在为 Web 应用系统提供一种可靠的单点登录方法,它允许一个用户访问多个应用程序,而只需向认证服务器提供一次凭证(如用户名和密码)。这样用户不仅不需在登陆web应用程序时重复认证,而且这些应用程序也无法获得密码等敏感信息。“CAS”也指实现了该协议的软件包。
发展历史
CAS最初由耶鲁大学的Shawn Bayern开发实现,后来由耶鲁大学的Drew Mazurek维护。CAS1.0实现了单点登录。 CAS2.0引入了多级代理认证(Multi-tier proxy authentication)。CAS其他几个版本已经有了新的功能。
2004年12月,CAS成为Jasig的一个项目,2008年该组织负责CAS的维护和发展。CAS原名“耶鲁大学CAS”,现在则被称为“Jasig CAS”。
2005年5月,CAS协议版本2发布,引入代理和服务验证。2006年12月,安德鲁·W·梅隆基金会授予耶鲁大学第一届梅隆技术协作奖,颁发50000美元的奖金对耶鲁大学开发CAS进行奖励。颁奖之时,CAS在“成百上千的大学校园”中使用。
2012年12月,JASIG与Sakai基金合并,CAS改名为Apereo CAS。2016年11月,基于Spring Boot的CAS软件版本5发布。
CAS协议角色介绍
1.CAS Clients
客户端,也可以叫做服务,通常是我们浏览器访问的web应用。
2.CAS Server
认证服务器,它的主要用途是颁发票据和对用户进行身份验证。
CAS协议常见概念以及数据的基本介绍
局部会话:浏览器-客户端之间的会话。
全局会话:浏览器-认证服务器之间的会话。
TGT(Ticket Granting Ticke):建立全局会话的凭证,包含用户信息、票据生命周期等信息。
TGC(Ticket Granting Cookie):认证服务器认证成功后返回给浏览器的cookie,与存储在认证服务器上的TGT相对应,TGC和TGT类似于cookie和session的关系。
ST(Service Ticket):服务凭证,用于客户端验证用户身份。
上面这图是CAS协议的经典架构,从图中我们可以看到,用户访问不同语言、不同架构的服务,服务又通过CAS、SAML、Oauth等协议与认证服务器进行交互,基于spring mvc框架的认证服务器从LDAP、数据库、或AD获取数据对用户进行身份验证,然后向用户颁发凭据。
当前版本的CAS集成的身份验证机制有AD、Generic、LDAP、JDBC等等,由于发展的需要,现在的CAS已经支持其他的一些身份协议,例如OIDC、Oauth 2.0等等。
CAS协议认证流程
以下为CAS官方规范协议流程:
我们可以将这个流程分为两个部分,第一个部分为未登陆时浏览器向第一个网站app1请求资源的过程,可以分为以下几步:
1. 浏览器访问网站app1
2. 网站app1对浏览器的请求