首页 > 解决方案 > 仅向特定用户提供 Keycloak 中的“忘记密码”功能

问题描述

我们在门户中使用 Keycloak 12 进行身份验证,并且有两种不同类型的用户:

  1. 内部用户(从我们的内部 LDAP 读取)
  2. 外部用户(存储在 Keycloak 中但未与 LDAP 同步)

我们现在想使用 Keycloak 提供的“忘记密码”功能。在配置了功能和邮件服务器后,它可以开箱即用。

但是,我们希望将“忘记密码”功能限制为属于 (2) 的所有用户,即内部用户。不允许这些用户通过 Keycloak 更新他们的密码,因为这是通过另一种机制完成的。

如果可能的话,到目前为止我在文档中找不到任何信息?

标签: keycloakkeycloak-services

解决方案


Keycloak Forgot Password功能适用于领域级别,因此适用于属于该领域的所有用户。对于 Keycloak,LDAP 只是一个用于验证用户的外部存储。因此,开箱即用,没有办法(据我所知)Forgot Password只对领域内的某些用户启用。

即使有可能,IMO 也不是一个非常用户友好的功能,因为当激活此类功能时,将在登录页面上向用户显示一个新链接,以防用户忘记密码。因此,如果来自 LDAP 的用户单击它,它会显示错误或什么?!

或者,您可以在另一个领域中配置所谓的内部用户Forgot Password的 LDAP,而不是启用的领域。然后将新创建的领域配置为外部身份提供者,用户可以对其进行显式身份验证。所以在实践中,用户会在正常登录页面中借出,外部用户可以正常登录,并且会Forgot Password启用该选项。内部用户将显式单击外部 IDP 以进行身份​​验证。使用外部 IDP 登录将是与登录到正常登录页面类似的用户体验,但是Forgot Password不会显示该选项。

您可以在此处查看此类配置的示例。


推荐阅读