WSO2能否将CAS、SAML两个身份提供商整合实现统一单点登录?
WSO2 CAS与SAML跨协议SSO解决方案
核心原理
你遇到的登录状态不互通问题,本质是CAS和SAML的认证流程没有共用WSO2 Identity Server的全局会话。WSO2的全局登录会话独立于具体认证协议,只要两套协议的流程都优先校验全局会话是否有效,有效则直接返回对应协议的认证响应,无需二次登录,即可实现跨协议SSO。
前置要求
你的WSO2 Identity Server版本需为5.7.0及以上,旧版本存在跨协议会话共享缺陷,需要先升级到兼容版本。
具体配置步骤
- 修改全局配置文件
打开<IS_HOME>/repository/conf/deployment.toml,添加/更新以下配置:[authentication] enable_common_auth = true session_data_persist = true session_timeout = "3600" # 全局会话有效期,单位秒,可按需调整 [cas] enable_sso_sessions = true use_common_auth_session = true [saml] enable_sso_sessions = true use_common_auth_session = true - 对齐服务提供商配置
- CAS对接的SP:统一使用WSO2公共CAS端点
https://<你的WSO2域名>/cas作为登录地址,不要使用自定义独立登录入口 - SAML对接的SP:开启
Enable Single Sign On配置,SP级别的会话超时时间保持和全局会话一致,不要设置单独的会话有效期覆盖全局规则
- CAS对接的SP:统一使用WSO2公共CAS端点
- 对齐身份源映射
确保CAS和SAML的用户声明映射规则完全一致,都使用AD的同一个唯一标识字段(如sAMAccountName)作为用户ID,避免同个用户在两套协议中被识别为不同账号 - 重启WSO2 Identity Server实例,所有配置生效
验证流程
- 清空浏览器缓存与Cookie,先访问CAS对接的SP完成登录
- 同一浏览器窗口打开SAML对接的SP,确认无需二次登录即可直接访问
- 清空缓存后反向验证:先登录SAML对接的SP,再访问CAS对接的SP,确认可以直接访问
异常排查
如果配置后仍无法实现互通,优先检查以下项:
- 确认
COMMON_ID_AUTHCookie的域名、路径配置正确,CAS和SAML端点都在同一个父域名下,避免Cookie跨域无法读取 - 排查是否存在自定义认证流程脚本,若有需要补充全局会话校验逻辑,不要跳过默认的会话校验步骤
- 确认AD返回的用户属性没有冲突,两套协议拿到的用户唯一ID完全匹配
内容的提问来源于stack exchange,提问作者ABraut
相关产品推荐
相关产品推荐

