本文描述了为keycloak配置passkey,webauth,OTP等无密码登陆的流程。本文中的部分配置可能需要Keycloak 23或者更高的版本才能正常运行。
配置Authentication部分
在keycloak的Authentication - Flow
菜单中,复制一份browser flow,笔者把副本取名为了browser with optional webauth and otp
。
在新的flow中,删除browser password form
和下面的全部step/flow:
先添加一个step,选择username Form
,设置为required:
在下面添加一个subflow,命名为passwordless or password or otp
:
在passwordless or password or otp
的subflow里添加Password Form
,WebAuth Passwordless Authenticator
,OTP Form
三个step。着三个step分别对应密码认证,passkey/webauth认证,OTP代码(六位数的二步验证码)认证,并设置这三个step为alternative
,即三种方式任选其一即可登陆。
全部添加完后的效果如下图:
Bind Flow
点击flow右上角的Action
,把新创建的flow bind到browser flow(浏览器登陆):
在required actions中启用webauth
在Authentication-Required actions
里,启用Webauthn Register Passwordless
:
使用passkey登陆
添加passkey
在帐号面板的的Signing in一节中,可以看到新增了一个Passwordless的选项,点击Set up Security key
即可设置Passkey。
测试Passkey登陆
在输入帐户后,即可看到登陆方式界面
点击Security Key
即可使用Passkey登陆。
其他
如果强制要求用户设置passkey / OTP,Required Actions
里的Set as default action
需要被勾选。