我有一个单页 Web 应用程序,针对 Keycloak 进行身份验证,并让用户在其 Keycloak 帐户页面中启用 TOTP。
但是,我希望客户端应用程序在登录后确定经过身份验证的用户是否启用了 2 因素身份验证/TOTP。
是否可以将此(布尔)信息映射到令牌或用户信息端点...我还没有找到任何包含此信息的用户属性。
我找到它的唯一地方是 Admin-REST-API
/auth/admin/realms/{realm}/users/{uuid}
,但客户端/最终用户不会也不应该访问那里:
{
...
totp: true,
}
我认为如果没有定制这是不可能的。
您可能想要添加自定义协议映射器并检查 totp,如下所示:
keyclaokSession.userCredentialManager().isConfiguredFor(realm, user, OTPCredentialModel.TYPE)
这是一个视频,解释了第一步。
我相信您可以将 OTP 应用于某个角色。因此,任何分配了此角色的用户都必须在分配角色后首次登录时配置 OTP。然后,只需检查该角色是否存在于用户正在访问的端点的声明中。但它会消除用户决定是否要使用 OTP 的可能性,因为分配角色将迫使他们这样做。