KeyCloak 忘记密码 电子邮件链接

Posted

技术标签:

【中文标题】KeyCloak 忘记密码 电子邮件链接【英文标题】:KeyCloak Forgot password Email link 【发布时间】:2018-08-17 07:46:41 【问题描述】:

我们正在使用 keycloak 实现身份验证。专门针对忘记密码选项:当用户点击忘记密码选项并提供用户名时,将向他们的 ID 发送一封电子邮件,其中包含重置密码的链接。

我的问题专门在链接上: 通过电子邮件发送的链接如下所示: https://:/auth/realms//login-actions/reset-credentials?code= 但是上面提到的确实是内部物理主机名,可以在/etc/hosts中找到,但是外部用户无法访问,所以我们需要替换这个host:port号。

.ftl 文件中的代码在themes/base/email/html/password-reset.ftl 下如下所示: $msg("passwordResetBodyHtml",link, linkExpiration, realmName) 虽然从管理控制台中找出了 linkExpiration 和 realmName 的值(它们位于管理控制台中的领域设置下),但我无法找出“链接”的配置方式和位置。有人可以帮忙吗?

我查找了其他线程并做了一些发现,并找到了这个链接:(Keycloak - URL Reset Password email behind a proxy,但它确实在谈论我们尚未配置的 nginx 代理。

【问题讨论】:

【参考方案1】:

在与 Redhat 团队多次讨论后解决了这个问题。以下是遵循的步骤

    我们使用的是 RH SSO 7.0.x:添加了 proxy-address-forwarding=true,如下所示。

服务器未启动,因为此标记在 Keycloak 7.0.x 中不可用。由 Redhat 确认。

    升级到 RH SSO 7.2.0 并且添加了相同的标志。忘记密码的电子邮件内容具有 https:///auth/realms/archcap-au/login-actions/action-token?key=

更改前:

    header=x-forwarded-host= <External Host>
    header=Host= <Internal host:8443>

更改后:

    header=x-forwarded-host= <External Host>
    header=Host= <External Host>

标签将保留转发的主机头。

【讨论】:

以上是关于KeyCloak 忘记密码 电子邮件链接的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 API 在 keycloak 中忘记密码

Keycloak忘记密码设置

Keycloak:实现“重置密码”(作为管理员)流程与“忘记密码”(作为用户)相同

用于用户注册、密码重置、忘记密码等的 Keycloak 端点

在codeigniter中忘记密码

忘记了来自 aws cognito 的密码链接