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

如何在Keycloak中添加基于OIDC CIBA的REST式替代身份提供商

Keycloak集成自定义CIBA风格REST API身份提供商方案

结论:需要自定义身份提供商实现

Keycloak官方没有现成适配你描述的这种非重定向、基于REST API轮询+推送确认的CIBA身份提供商,必须通过Keycloak的扩展机制自定义实现。

具体实现步骤

1. 编写自定义身份提供商核心逻辑

  • 继承Keycloak的AbstractIdentityProvider类(或实现IdentityProvider接口),封装与外部IdP的全流程交互:
    • 触发阶段:捕获用户选择该IdP的请求,调用外部API传入UserId,获取随机数和transactionId
    • 等待阶段:在Keycloak认证页面渲染等待提示,同时发起对外部IdP状态查询API的轮询(可由前端或后端实现)
    • 完成阶段:轮询到用户授权通过后,调用外部API获取令牌,将身份信息同步到Keycloak中完成认证
  • 实现IdentityProviderFactory类,用于注册自定义IdP,让Keycloak管理控制台能识别并配置该提供商

2. 接入Keycloak认证流

  • 在Keycloak的认证流中添加"身份提供商选择"步骤,将自定义IdP设为可选选项,与原有表单认证并列
  • 配置认证流分支逻辑,确保只有用户主动选择该IdP时才触发自定义流程,完全不干扰默认的浏览器认证流程

3. 前端交互优化

  • 用户选择该IdP后,前端展示等待授权的界面,同时处理轮询逻辑;也可以添加"已完成设备确认"按钮,让用户主动触发状态查询,减少不必要的轮询消耗

关键注意点

  • 超时处理:在自定义逻辑中设置合理的超时时间,超时后引导用户返回认证选择页面或重试
  • 安全保障:与外部IdP的所有API交互必须使用HTTPS,对请求和响应数据做签名验证,防止数据篡改
  • 可配置性:通过IdentityProviderFactory实现控制台配置界面,允许管理员设置外部IdP的API地址、超时时间等参数

内容的提问来源于stack exchange,提问作者Furqan Shaikh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 16:23:11