系统组件
CAS服务器与客户端组成CAS系统架构的两大部分,两者之间通过各种协议进行通讯(CAS、SAML、OAuth)
- CAS服务器 是基于Spring Framework的Java Servlet,负责用户认证与客户端接入过程的凭证签发与验证。用户登录成功后,服务器会创建一个SSO会话并签发TGT(ticket-granting ticket:签名凭证)。当用户请求通过浏览器重定向发送到服务器时,客户端提交TGT作为令牌,服务器将再签发一个ST(service ticket:服务凭证)。这个ST接下来会用于与服务器的后端通信验证。这些交互的详细细节可参见CAS协议文档。
- CAS客户端 CAS客户端在术语层面通常有两层意思。一是指任一启用了CAS并可与服务器之间按支持的协议通讯的应用。另一是指为了与服务器进行通讯,而被集成进各种软件平台和应用的软件包。CAS客户端支持如下各种平台与产品: 平台:
- Apache httpd Server (mod_auth_cas module)
- Java (Java CAS Client)
- .NET(.NET CAS Client)
- PHP (PHP CAS)
- Perl(PerlCAS)
- Python (pycas)
- Ruby (rubycas-client) 应用:
- Outlook Web应用 (ClearPass + .NET CAS Client)
- Atlassian Confluence
- Atlassian JIRA
- Drupal
- Liferay
- uPortal 在本文档中,如果没有特别指明"CAS客户端"时,它是指集成组件,比如Jasig Java CAS Client,而不是置于CAS服务器之上的应用。
协议
客户端与服务器之间可以使用任一支持的协议进行通讯。这些协议在概念上是类似的,只是有一些协议为了满足特定的应用与案例增加了一些特性或特点。例如,CAS协议支持代理认证,SAML协议支持属性发布和单点登出。 支持的协议:
软件组件
为了便于理解,可以将CAS服务端分为三层子系统来进行描述:
- Web (Spring MVC/Spring Webflow)
- 凭证Ticketing
- 认证Authentication
几乎所有的部署考虑和组件配置都包含在这三层子系统中。WEb层是与所有外部系统包括CAS客户端进行通信的端点。WEB层代理Ticketing子系统为客户端接入生成凭证。SSO会话开始于成功认证之后TGT签名凭证的签发,由此也可以看出凭证子系统是认证子系统的代理。
认证系统一般只在SSO会话开始之后才处理请求,尽管也有一些情况下它也能被触发,比如强制认证。