Keycloak无密码登录流问题:未注册安全密钥用户无法使用密码登录
Keycloak同时支持无密码认证与未注册用户密码登录的解决方案
1. 修改认证流程为分支结构
当前你的认证流程仅包含WebAuthn Passwordless Authenticator单一步骤,这是导致未注册密钥用户无法使用密码登录的核心原因。需要将流程调整为包含密码登录和无密码登录的分支流程:
- 进入Keycloak管理控制台,选择目标领域(Realm)
- 前往Authentication > Flows页面
- 复制默认的
Browser流程(建议不要直接修改默认流程),命名为Custom Browser with Passwordless - 在新流程中进行如下配置:
- 保留原有的
Username Password Form步骤,将其设置为ALTERNATIVE - 添加
WebAuthn Passwordless Authenticator步骤,同样设置为ALTERNATIVE,与密码登录步骤处于同一层级 - 确保流程的父节点(如
Browser Forms)的执行策略为Alternative,允许用户选择任意一种认证方式完成登录
- 保留原有的
2. 配置安全密钥注册的必要动作
将WebAuthn Register Passwordless设置为用户登录后的触发动作,而非前置认证要求:
- 前往Authentication > Required Actions页面
- 启用
WebAuthn Register Passwordless,可根据需求将其设置为Default Action(强制用户登录后注册)或Optional(用户自愿注册) - 这样,未注册密钥的用户通过密码登录后,会被引导完成安全密钥的注册,后续即可使用无密码登录
3. 优化流程逻辑(可选)
如果希望已注册密钥的用户优先触发无密码登录,可以进一步调整:
- 将
WebAuthn Passwordless Authenticator的执行顺序提前 - 或者将其设置为CONDITIONAL,通过脚本判断用户是否已关联安全密钥,自动触发对应认证步骤
验证效果:未注册密钥的用户登录时会先看到用户名/密码输入框,登录后触发注册引导;已注册密钥的用户可选择密码或安全密钥两种方式登录
内容的提问来源于stack exchange,提问作者codependent
相关产品推荐
相关产品推荐

