翻译自:CAS 官网
介绍
CAS
CAS 是Yale(耶鲁)大学的一个开源的企业级单点登录系统,它的特点:
- Java (Spring Webflow/Spring Boot) 服务组件
- 可插拔身份验证支持(LDAP,Database,X.509,MFA)
- 支持多种协议(CAS,SAML,OAuth,OpenID,OIDC)
- 跨平台客户端支持(Java,.Net,PHP,Perl,Apache等)
- 与uPortal,Liferay,BlueSocket,Moodle,Google Apps等集成
CAS提供了一个友好的开源社区,方便开发者积极支持和贡献项目。
知识扩展
SSO
单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
业务流程
当用户第一次访问应用系统A的时候,因为还没有登录会被引导到认证系统中进行登录;根据用户提供的登录信息,认证系统进行身份校验,如果通过校验,应该返回给用户一个认证的凭据(ticket);用户再访问别的应用的时候,就会将这个ticket带上,作为自己认证的凭据,应用系统接受到请求之后会把ticket送到认证系统进行校验,检查ticket的合法性。如果通过校验,用户就可以在不用再次登录的情况下访问应用系统B和应用系统C了。
认证系统功能要求
- 所有应用系统共享同一个身份认证系统
- 统一的认证系统是SSO的前提之一。认证系统的主要功能是将用户的登录信息和用户信息库相比较,对用户进行登录认证;认证成功后,认证系统应该生成统一的认证标志(ticket)并立即返还给用户。另外,认证系统还应该对ticket进行效验,判断其有效性。
- 所有应用系统能够识别和提取ticket信息
- 要实现SSO的功能,让用户只登录一次,就必须让应用系统能够识别已经登录过的用户。应用系统应该能对ticket进行识别和提取,通过与认证系统的通讯,能自动判断当前用户是否登录过,从而完成单点登录的功能。
OAuth 2.0
OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。
业务流程
OAuth在“客户端”与“服务提供商”之间设置了一个授权层(authorization layer)。“客户端”不能直接登录“服务提供商”,只能登录授权层,以此将用户与客户端区分开来。“客户端”登录授权层所用的令牌(token),与用户的密码不同。用户可以在登录的时候,指定授权层令牌的权限范围和有效期。
“客户端”登录授权层以后,“服务提供商”根据令牌的权限范围和有效期,向“客户端”开放用户储存的资料。
总结
通过上面的概述大家可以很清楚的想明白两者的适用场景,以面向的用户不同可以做个划分,sso服务对象是各个应用系统,oauth服务对象是用户。
入门
架构
系统组件
CAS系统架构包括CAS Server和CAS Clients,它们是通过各种协议进行通信的两个物理组件。
CAS Server
CAS Server是基于Spring框架构建的Java Servlet,其主要职责是通过发出和验证票证来验证用户并授予对使用CAS的服务(通常称为CAS客户端)的访问权限。当用户在服务器上登录时向会向用户发出票证(TGT)并创建SSO会话。通过使用TGT令牌进行浏览器重定向,根据用户的请求向服务发出服务票证(ST)。随后通过反向通道通信在CAS服务器上验证ST。这些业务流程在CAS协议文档中非常详细地描述。
CAS Clients
“CAS Client”在具体使用中有两个不同的含义,CAS Client是可以通过所支持的协议与服务器通信的任何启用CAS的应用程序,CAS Client还可以是可以与各种软件平台和应用集成以便经由某种认证协议(例如,CAS,SAML,OAuth)与CAS Server通信的软件包。客户端支持多种软件平台和应用的CAS客户端已经开发。
- 平台
- Apache httpd Server (mod_auth_cas module)
- Java (Java CAS Client)
- .NET (.NET CAS Client)
- PHP (phpCAS)
- Perl (PerlCAS)
- Python (pycas)
- Ruby (rubycas-client)
- 应用
- Outlook Web Application (ClearPass + .NET CAS Client)
- Atlassian Confluence
- Atlassian JIRA
- Drupal
- Liferay
- uPortal
支持的协议
客户端通过几种支持的协议与服务器通信。所有支持的协议在概念上类似,但不同的协议对应于特定的应用场景。例如,CAS协议支持委托(代理)认证,SAML协议支持属性释放和单点退出。
- 支持的协议
- CAS (versions 1, 2, and 3)
- SAML 1.1 and 2
- OpenID Connect
- OpenID
- OAuth 2.0