CAS架构

原文地址:https://apereo.github.io/cas/4.2.x/planning/Architecture.html

架构

CAS 架构图
cas_architecture

系统组件
CAS系统架构包含服务器和客户端包括两个部分,他们之间通过各种协议通信。

CAS服务器
CAS服务器端是在Spring框架下用Java写的Servlet,主要职责为通过分发和认证票据(ticket)认证用户和授权访问启用CAS的服务(通常来说叫做CAS客户端)。用户成功登录的话服务器端会发放一个ticket-granting ticket(票据授权凭证,简写TGT,下同),这时一个单点登录(SSO)的会话会被创建。当用户通过浏览器使用TGT当作令牌重定向的时候会拿到一个service ticket(服务票据,简写为ST,下同)。这个ST会在之后用于后续的认证,这个详细的认证过程会在CAS协议中详细描述。

CAS客户端
这里的CAS客户端有两层含义。任何一个启用了CAS并且和CAS服务器通过支持的协议交互的应用都是一个CAS客户端。为了可以通过一些认证协议(如CAS, SAML, OAuth)和CAS服务器交互的可集成到多种软件平台和应用的软件包也是一个CAS客户端。官方已经开发了支持多种软件平台和产品的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)
Applications:

Outlook Web Application (ClearPass + .NET CAS Client)
Atlassian Confluence
Atlassian JIRA
Drupal
Liferay
uPortal
本文中出现的”CAS客户端”如果没有特殊说明,都代表可集成的组件(例如Jasig Java CAS客户端)

协议:
客户端可以和服务器端通过多种协议进行交互,所有支持的协议在概念上都是类似的,但可能有各自的一些特性。例如CAS协议支持代理认证(delegated、proxy),SAML协议支持属性分发和单点注销。

支持的协议:

CAS (versions 1, 2, and 3)
SAML 1.1
OpenID
OAuth (1.0, 2.0)

软件组件:
Web (Spring MVC/Spring Webflow)
Ticketing
Authentication

几乎所有的部署注意事项和组件配置都牵扯这三个子系统。Web层是所有外部系统交流的入口,它代理访问票据子系统为CAS客户端访问生成票据。单点登录会话开始于认证成功后TGT的分发完成。所以票据子系统经常代理访问认证子系统。

一般来说当SSO会话开始,认证系统才开始处理请求,虽然可能有其他情况可以调用认证系统(例如强制认证)。

Spring框架
CAS用了很多Spring框架,尤其是Spring MVC和Spring Webflow。 Spring为CAS核心代码和开发者提供了一个完整的可扩展的框架,这样可以通过配置扩展点很简单的扩展和自定义CAS的行为。懂得一些Spring的知识可以更好的理解框架中组件的关系,但这不是必需的。因为使用基于XML的方法配置CAS和Spring组件来部署、定制、扩展才是最需要关心的。 懂得XML的基础和Spring IOC Container才是安装CAS必需的。

0 Comments
Leave a Reply