CAS 3.5.3能否免二次登录将认证信息传递给Keycloak 15.0.2实现SSO?
方案可行性及疑问解答
疑问1:Custom User Storage Provider SPI 是否需要二次登录
你的判断完全正确。该SPI仅用于对接外部用户存储实现用户数据同步、密码校验逻辑,无法复用CAS侧已有的登录会话,用户接入后仍需在Keycloak侧重新输入账号密码完成认证,无法实现免登效果。
疑问2:CAS Extension 仅支持Keycloak作为CAS服务端的理解是否正确
你的理解存在偏差。该扩展除了支持Keycloak对外提供CAS协议服务端能力外,同时支持将外部CAS Server配置为Keycloak的身份提供商(即Keycloak作为CAS客户端对接上游CAS),可以直接复用现有CAS的登录态实现SSO,不需要用户二次输入登录信息。
可行实现方案
优先方案:复用3.5.3版本CAS自带的SAML协议对接(无需改造现有CAS)
3.5.3版本CAS内置支持SAML 1.1版本的身份提供商能力,无需对现有做过自定义改造的CAS服务做任何调整,即可完成对接:
- 在内部Keycloak控制台新增SAML类型的身份提供商,填写现有CAS的SAML端点地址、实体ID等配置
- 配置SAML断言解析规则,将CAS返回的用户属性映射到Keycloak的用户属性字段
- 认证流程:用户跳转至内部Keycloak时,会自动重定向到现有CAS服务,若用户已在CAS完成登录,CAS会直接返回SAML断言,Keycloak验证断言合法性后创建本地会话,全程无二次登录操作
备选方案:通过CAS协议扩展对接
如果你的CAS服务未开启SAML能力,也可以通过CAS协议完成对接:
- 为内部Keycloak安装对应版本的CAS协议扩展
- 在内部Keycloak控制台新增CAS类型的身份提供商,填写现有CAS的登录地址、Ticket校验地址等参数
- 在现有CAS服务侧新增内部Keycloak的域名作为合法CAS客户端,授予Ticket校验权限即可
完成上述配置后,你可以按照常规的身份提供商对接流程,将内部Keycloak与外部服务提供商的Keycloak完成OIDC/SAML协议对接,即可实现全链路SSO。
内容的提问来源于stack exchange,提问作者MPIT
相关产品推荐
相关产品推荐

