Keycloak中一个用户的多种认证方式

Multiple authentication methods for a user in Keycloak

我想让我的用户选择使用哪种身份验证方法。例如,可以向他们展示一个菜单来选择一个选项(username/pass、username/pass+OTP 等)。 然后,Keycloak 应该根据他们的选择,为令牌分配特定的范围。

这是否可能与 Keycloak 相关(可能通过某种方式利用 auth 方法链接)以及如何?我在文档中找不到这个,但对我来说它似乎是一个合理的用例。

这是我的解决方案:

带圆圈的身份验证器是自定义的,我为其提供了自定义实现。 我使用了 fall-through 机制,这意味着我第一个验证器实现了一个自定义表单:

让用户选择身份验证器并在变量中捕获用户的选择。 之后,这个变量被用在后面的认证器中来决定是进行认证还是将控制权传递给下一个认证器。

您可以在以下页面中阅读有关身份验证 SPI 的更多信息:https://www.keycloak.org/docs/latest/server_development/index.html#_auth_spi

并且here您可以看到如何实现自定义验证器。

这是我所做的并且有效,

'My goal was give ability to client to choose authentication flow, choose between otp based email and sms.'

我创建了一个新的身份验证流程,请看截图:

select 'Alternative' 在两个流程上。

在登录表单上,新 link 将出现“尝试另一种方式

现在客户端可以在流之间进行选择。看截图: