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 忘记密码 电子邮件链接的主要内容,如果未能解决你的问题,请参考以下文章
Keycloak:实现“重置密码”(作为管理员)流程与“忘记密码”(作为用户)相同