Keycloak无需导入联邦用户到数据库即可启用OTP的方法问询
Keycloak LDAP联合用户免导入启用OTP认证方案
完全可以实现,Keycloak原生支持未导入本地库的LDAP/AD联合用户使用OTP认证,无需修改LDAP侧原有数据结构,操作步骤如下:
前置检查
先确认LDAP用户联邦的基础配置符合要求:
进入对应Realm的「用户联邦」菜单,点开已配置的LDAP/AD提供方,确认参数:
导入用户开关保持关闭状态编辑模式按需选择即可,只读模式也完全兼容OTP功能- 先测试LDAP连接、用户查询正常,确认联合用户可正常通过LDAP密码完成基础登录
操作步骤
第一步:自定义带OTP的认证流
进入「认证」-「流」菜单,找到默认的浏览器认证流,点击右侧「复制」按钮新建自定义流,命名例如LDAP联合用户OTP认证流
进入新建的自定义流,在用户名密码表单执行项后新增执行项,选择OTP表单,将OTP表单的要求设置为REQUIRED
无需调整其他默认执行项,Keycloak会自动识别登录用户类型,OTP配置会关联到用户的联邦身份标识,不会写入Keycloak本地用户主表第二步:调整OTP全局策略(可选)
进入「认证」-「OTP策略」菜单,可按需调整OTP类型(TOTP/HOTP)、有效期、加密算法、二维码展示规则,配置对本地用户和联合用户统一生效第三步:绑定认证流到对应客户端
进入需要开启该规则的客户端「高级」设置页,找到「认证流覆盖」选项,将「浏览器流」选择为刚才新建的自定义流,保存即可
补充说明
联合用户的OTP密钥默认存储在Keycloak的
FEDERATED_USER关联表中,不会写入Keycloak本地用户主表,也不会反向同步到LDAP/AD服务器,完全不影响原有外部身份源的数据
- 用户首次登录时会自动跳转到OTP绑定页面,扫描二维码完成绑定后即可正常使用双因子认证
- 如果需要批量为联合用户导入预置的OTP密钥,可调用Keycloak Admin REST API的
{realm}/users/{userId}/credentials接口,传入用户的联邦用户ID和OTP密钥参数即可
内容的提问来源于stack exchange,提问作者mohamed.Yassine.SOUBKI
相关产品推荐
相关产品推荐

