概述
CAS(Central Authentication Service,中央认证服务)是一种开放标准的单点登录协议,由耶鲁大学最初开发并维护,现由Apereo基金会管理。CAS协议设计简单高效,是企业实现单点登录(SSO)最常用的协议之一。
核心概念
- CAS服务器(CAS Server): 负责集中处理用户认证的服务器,相当于身份提供商(IdP)
- CAS客户端(CAS Client): 需要进行身份验证的应用系统,相当于服务提供商(SP)
- Ticket: CAS协议中用于传递认证信息的票据
- TGT(Ticket Granting Ticket): 用户登录CAS服务器后获得的票据,存储在CAS服务器的Session中
- ST(Service Ticket): CAS服务器为特定服务生成的一次性票据,用于访问目标应用
- 验证(Validation): 应用系统获取ST后通过CAS服务器进行验证的过程
CAS协议版本
CAS协议已经经过多次演进,主要版本有:
- CAS 1.0: 最初的简单协议版本
- CAS 2.0: 添加了代理认证等特性
- CAS 3.0: 增加了属性交换能力,使验证响应可以携带用户属性信息
- CAS 4.0/5.0: 增强了安全性和扩展性,支持OAuth、SAML等多种协议
工作流程

- 用户访问应用: 用户请求访问受保护的应用资源
- 重定向到CAS服务器: 应用检测到用户未登录,将其重定向到CAS服务器
- 用户认证: 用户在CAS服务器提供身份凭证进行认证
- 生成ST并重定向: 认证成功后,CAS服务器生成ST,并将用户重定向回应用
- 应用验证ST: 应用通过后端渠道向CAS服务器验证ST的有效性
- 授予访问权限: 验证通过后,应用为用户提供访问权限
CAS单点登录的优势
- 简单易用: 协议设计简洁,实现和集成较为容易
- 安全可靠: 票据是一次性的,减少了重放攻击的风险
- 中心化认证: 所有认证都在CAS服务器进行,简化了管理
- 丰富的客户端: 支持各种语言和框架的客户端库
- 可扩展性: 支持多种认证机制和自定义认证逻辑
配置流程
本节以专属集成平台作为CAS服务器与宜搭应用(自定义应用)之间的单点登录配置为例,详细说明CAS协议的实施步骤。
前提条件
- 拥有专属集成平台管理员账号
- 已部署需要进行单点登录的宜搭应用
- 确保专属集成平台中已创建相应用户
- 了解CAS协议的基本原理和流程
配置概览
配置CAS单点登录的主要步骤包括:
- 在专属集成平台中添加自定义应用
- 配置应用基本信息
- 配置CAS协议单点登录参数
- 在目标应用(宜搭)中配置CAS客户端
- 设置授权范围
- 测试单点登录
添加自定义应用
登录专属集成平台管理控制台
导航至"应用管理"→"应用市场"
选择"添加应用"→"自定义应用"

配置应用基本信息

基本信息参数说明:
| 参数名称 | 说明 |
|---|
| 自定义应用名称 | 自定义应用名称,建议使用有意义的描述性名称 |
| 应用分类 | 应用分类,可选择已有分类或自定义新增分类 |
| 首页地址 | 个人Portal,访问应用的主页地址 |
| Client ID | 应用的唯一标识,系统自动生成,不可编辑 |
| Client Secret | 应用的密钥,系统自动生成,不可编辑,可重制 |
配置CAS协议单点登录参数
在应用详情页面,切换到"登录配置"选项卡,配置CAS协议相关参数:

登录配置参数说明:
| 参数名称 | 说明 |
|---|
| 本地登录方式 | 控制访问该应用的登录方式,可选"用户名密码"、"短信验证码"、"邮箱验证码"等方式 |
| 企业认证登录 | 该登录方式根据"企业认证源"中的认证方式进行登录。勾选视为选中,应用支持该登录方式 |
| 多因子认证 | 通过企业认证源或本地方式认证通过后,会触发短信或邮箱的二次验证;不勾选视为不开启 |
| 单点协议 | 选择"CAS"协议。如果有多个协议可用,请确保选择正确的协议 |
| Login URL | 应用的登录回调地址,CAS服务器认证成功后重定向的地址 |
| Logout URL | 应用的登出地址,用户注销时的处理地址 |
| Ver2.2 Validate URL | CAS 2.2版本的验证URL,用于验证Service Ticket |
| Ver3.0 Validate URL | CAS 3.0版本的验证URL,用于验证Service Ticket并可返回用户属性 |
| Service URL | 目标应用(宜搭)提供的服务URL,用于标识CAS客户端 |
在宜搭应用中配置CAS客户端
确认宜搭应用支持的CAS协议版本(2.2或3.0)
在宜搭应用的单点登录配置中填写以下信息:
- CAS服务器地址:专属集成平台提供的CAS服务地址
- Client ID:从专属集成平台获取的应用Client ID
- Client Secret:从专属集成平台获取的应用Client Secret
- 回调URL:宜搭应用接收CAS票据的URL
获取宜搭应用的Service URL,填写到专属集成平台的CAS配置中
配置授权范围
在应用详情页,切换到"授权范围"选项卡
可通过以下方式进行授权:
- **基于组织架构和用户授权**:授权特定部门或用户
- **基于角色授权(RBAC)**:通过静态标签(角色)授权
- **基于用户属性授权(ABAC)**:通过动态标签(用户属性)授权
根据企业需求选择合适的授权方式并配置授权范围,保存配置
测试与验证
测试登录流程
在浏览器中访问宜搭应用的URL
如果用户未登录,应自动重定向到专属集成平台的登录页面,在专属集成平台完成身份认证
认证成功后,应自动重定向回宜搭应用,并已处于登录状态
常见问题排查
| 问题现象 | 可能原因 | 解决方案 |
|---|
| 无法重定向到CAS服务器 | Service URL配置错误 | 检查宜搭应用中的CAS服务器地址配置 |
| 重定向回应用后登录失败 | Ticket验证失败 | 确认验证URL正确,检查Service URL一致性 |
| 获取不到用户信息 | 协议版本不匹配 | 确保使用正确的CAS协议版本(2.2或3.0) |
| 多次重定向循环 | 客户端配置错误 | 检查CAS客户端配置,特别是Cookie设置 |
| 注销后其他应用仍保持登录 | 未实现全局注销 | 配置CAS的Single Logout功能 |
高级特性
代理认证(Proxy Authentication)
CAS 2.0及以上版本支持代理认证,允许一个应用代表用户访问另一个应用:
- 代理票据(Proxy Ticket): 允许后端服务代表用户访问其他服务
- 代理回调(Proxy Callback): 验证代理请求的真实性
- 代理链(Proxy Chain): 控制哪些应用可以代理用户身份
属性交换(Attribute Exchange)
CAS 3.0引入属性交换功能,使CAS服务器可以在票据验证响应中包含用户属性:
- 基本属性: 用户名、邮箱、电话等基本信息
- 角色信息: 用户在系统中的角色
- 自定义属性: 根据业务需求定义的特定属性
单点注销(Single Logout)
CAS提供单点注销功能,用户在一处注销后可以自动注销所有已登录的应用:
- 前端渠道注销: 通过浏览器重定向实现
- 后端渠道注销: 通过服务器间直接通信实现
- 注销请求回调: 通知各应用用户已注销
多种认证方式
CAS服务器支持多种认证方式,可以根据业务需求选择:
- 用户名/密码: 最基本的认证方式
- LDAP/Active Directory: 与企业目录集成
- 数据库认证: 基于数据库的用户存储
- 多因子认证: 短信、邮箱、OTP等第二因素认证
- OAuth/OpenID: 与社交登录集成
与其他SSO协议比较
CAS vs SAML
| 特性 | CAS | SAML |
|---|
| 复杂度 | 相对简单 | 较为复杂 |
| 安全性 | 基于票据的安全模型 | 基于断言的安全模型,支持签名和加密 |
| 标准化 | 较低,主要在高等教育领域流行 | 高度标准化,跨行业广泛采用 |
| 属性交换 | 在3.0版本后支持 | 内置支持丰富的属性交换 |
| 实现难度 | 较低,客户端库丰富 | 较高,需要处理XML和加密 |
| 适用场景 | 内部系统集成,教育机构 | 企业级系统集成,跨组织联盟 |
CAS vs OAuth/OIDC
| 特性 | CAS | OAuth/OIDC |
|---|
| 主要目的 | 身份认证(Authentication) | OAuth主要用于授权(Authorization),OIDC添加了认证层 |
| 使用范围 | 企业内部应用 | Web/移动应用,API访问控制 |
| 令牌类型 | 一次性票据 | 访问令牌、刷新令牌、ID令牌 |
| 客户端支持 | 传统Web应用 | Web、移动、单页应用、物联网设备等 |
| 用户体验 | 专注于Web浏览场景 | 支持多种授权流程,适应不同场景 |
最佳实践
安全建议
- 使用HTTPS保护所有CAS通信
- 设置适当的票据有效期(通常为5-10秒)
- 启用CSRF保护机制
- 实现IP地址过滤和异常登录检测
- 定期更换Client Secret
- 配置适当的会话超时策略
用户体验优化
- 设计友好的登录界面
- 提供记住我(Remember Me)功能
- 优化重定向流程,减少用户等待时间
- 提供明确的错误提示信息
- 支持密码重置和账号找回功能
管理建议
- 实施用户生命周期管理
- 建立应用注册和审核流程
- 定期审计登录日志
- 建立监控和告警机制
- 制定应急响应计划
常见问题
CAS相对简单易用,适合企业内部系统集成,特别是在教育领域广泛应用。其优点是实现简单、客户端库丰富;缺点是标准化程度低于SAML/OIDC,跨组织集成能力较弱。
CAS支持两种单点注销方式:前端渠道注销(通过浏览器重定向)和后端渠道注销(服务器间直接通信)。配置Single Logout功能后,用户在一处注销会自动注销所有已登录的应用。
是的,CAS服务器支持与LDAP、Active Directory、数据库等多种用户存储系统集成,可以利用企业现有的用户目录。
时钟不同步可能导致票据验证失败。建议使用NTP服务保持服务器时间同步,或适当增加票据有效期容错时间。
CAS 5.0及以上版本支持多租户架构,可以为不同的租户提供独立的认证策略和界面。
可以通过启用多因子认证、实施密码策略、使用TLS/SSL加密通信、配置IP过滤、启用账户锁定等方式增强安全性。
附录
CAS协议流程详解
CAS登录流程
- 用户访问应用系统(CAS客户端)
- 应用系统检查用户是否已登录(本地会话是否存在)
- 如未登录,重定向到CAS服务器,URL格式为:
https://cas-server/login?service=https://application/callback
- 用户在CAS服务器进行身份认证
- 认证成功后,CAS服务器创建TGT,生成ST,并重定向回应用系统:
https://application/callback?ticket=ST-xxx
- 应用系统获取ST,通过后端渠道向CAS服务器验证:
https://cas-server/validate?ticket=ST-xxx&service=https://application/callback
- CAS服务器验证票据并返回结果,格式根据协议版本不同而异
- 应用系统根据验证结果创建本地会话,完成登录
CAS注销流程
- 用户请求注销
- 应用系统将用户重定向到CAS服务器的注销接口:
https://cas-server/logout?service=https://application/loggedout
- CAS服务器销毁TGT及相关会话
- 如已配置Single Logout,CAS服务器通知所有已登录的应用系统
- CAS服务器重定向用户回到指定的注销后页面