You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自有IDP与Keycloak IDP间SSO实现可行方案咨询

前置约束确认

  • app1为已上线自研应用,搭载独立自研IDP(下称IDP1),不可替换为Keycloak
  • app2为第三方厂商提供的应用,域名不归我方管控,无存量用户,原生采用Keycloak作为IDP(下称IDP2)
  • 核心目标:实现两个应用间的单点登录,用户在一端完成登录后无需重复输入凭证即可访问另一端

可行技术方案

方案1:将IDP1配置为Keycloak的上游身份提供商(优先推荐)

  • 实现逻辑:
    1. 在app2对应的Keycloak Realm中新增身份提供商配置,选择和IDP1匹配的标准协议(优先选OIDC 1.0,IDP1不支持OIDC则选SAML 2.0),按照IDP1的开放授权要求填写回调地址、客户端ID、签名密钥、属性映射规则
    2. 因app2无存量用户,可直接将Keycloak的默认登录流程设置为跳转到IDP1授权页,关闭Keycloak本地账号密码登录入口,同时在IDP1侧将Keycloak的回调域名加入跨域白名单、授权重定向白名单
    3. 用户访问app2时,Keycloak自动重定向到IDP1做鉴权:如果用户已经在app1侧登录过IDP1,IDP1直接返回授权码,Keycloak完成会话建立后给app2签发登录凭证,全程无二次凭证输入。如果需要实现app2到app1的反向免登,只需在IDP1侧把Keycloak添加为合法受信任客户端,配置对应回调规则即可
  • 适用场景:IDP1标准支持OIDC/SAML2联邦授权协议,app2厂商开放对应Keycloak Realm的身份源配置权限
  • 注意点:提前和厂商对齐用户唯一标识字段(建议用全局唯一的用户ID而非手机号、邮箱做映射键),Keycloak侧可开启首次联邦登录自动创建本地关联账号,因app2无存量用户,不需要做复杂的存量账号匹配。

方案2:基于Keycloak认证SPI扩展实现自定义凭证校验

  • 实现逻辑:
    1. 利用Keycloak原生支持的认证SPI能力,开发轻量自定义认证模块,专门校验IDP1签发的带指定私钥签名的JWT/SAML断言
    2. 用户从app1跳转至app2时,携带IDP1签发的超短期(建议10秒内有效期)登录凭证,Keycloak侧的自定义模块校验凭证的签名、有效期、受众字段合法后,直接为用户建立Keycloak会话,签发app2的访问凭证
    3. 可将该自定义认证模块配置为对应Realm的唯一认证方式,直接跳过Keycloak原生登录页
  • 适用场景:app2厂商不允许在Keycloak中添加外部上游IDP,但允许为对应Realm部署自定义认证扩展
  • 注意点:必须严格限制凭证的有效期、使用次数,所有校验逻辑在Keycloak服务端完成,禁止前端透传未校验的用户信息,防止凭证伪造、重放攻击。

方案3:基于CAS协议对接实现SSO

  • 实现逻辑:
    1. 如果IDP1是老旧自研系统,仅支持CAS 3.0协议、不支持OIDC/SAML2,可在Keycloak侧安装适配版本的CAS身份提供商插件,将IDP1作为CAS服务端完成对接
    2. 配置完成后,app2的登录请求由Keycloak转发到IDP1的CAS登录端点,已登录IDP1的用户可直接完成服务票据校验,实现免登
  • 适用场景:IDP1无OIDC/SAML2支持能力,仅能提供CAS协议服务
  • 注意点:提前确认Keycloak运行版本和CAS插件的兼容性,严格配置CAS服务票据的校验规则,拦截非法跨域票据请求。

方案4:业务层JWT断言免登(无Keycloak配置权限场景兜底)

  • 实现逻辑:
    1. 和app2厂商约定专属跨域免登接口:用户从app1跳转至app2时,携带IDP1使用双方提前约定的非对称密钥签名的一次性JWT,JWT内包含用户唯一标识、必要的用户属性,有效期设置为10秒以内
    2. app2服务端接收到带合法JWT的访问请求时,调用Keycloak的客户端凭证接口为对应用户申请访问令牌,建立本地会话后直接放行用户访问。该模式下Keycloak仅作为app2的会话签发组件,不需要和IDP1直接做联邦对接
  • 适用场景:app2厂商完全不开放Keycloak侧的配置权限,仅支持在app2业务层做定制化免登开发
  • 注意点:免登接口必须加请求来源IP白名单限制,JWT必须做一次性消费校验,严格防止重放、伪造攻击。

选型优先级建议

  1. 优先选方案1:改造成本最低,完全基于标准协议实现,无定制化开发量,后续维护成本最低,符合通用SSO安全规范
  2. 厂商不允许配置上游IDP但开放Keycloak扩展能力时选方案2
  3. IDP1为仅支持CAS的老旧系统时选方案3
  4. 完全拿不到Keycloak配置权限时用方案4做兜底

内容的提问来源于stack exchange,提问作者Nir-Z

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 03:33:31