【问题标题】:Keycloak Admin REST API: Use client root url in e-mail body when performing execute-actions-emailKeycloak Admin REST API:执行执行操作电子邮件时在电子邮件正文中使用客户端根 URL
【发布时间】:2019-10-02 12:19:21
【问题描述】:

我的问题是:在 Keycloak Admin REST API 中,当执行诸如 execute-actions-email 之类的电子邮件操作时,我如何确保电子邮件中使用的 URL 使用特定的主机名。

情况:

  • Keycloak 在 Docker 中运行,并在 https://somehost.test/auth 上公开提供。在 Docker 中,http://keycloak 用作 URL
  • 另一个容器使用 Java Admin Client(它使用 REST API)来请求数据并执行更改。使用的 URL 是内部 URL,这很好用。
  • 仅在请求发送电子邮件时,链接始终显示 API 客户端已使用的 url,即使普通用户无法访问。

我想要什么:

  • url应该改成外部url,已经在Keycloak中配置为客户端的root url。

我尝试了什么:

  • 向呼叫提供客户端 ID,这根本没有帮助。
  • 正在修改电子邮件模板 (keycloak/themes/base/email/text/executeActions.ftl),但它会生成消息,我对此无能为力。
  • 设置一个自定义 RestEasyClient 来设置标题(没有帮助)
requestContext.getHeaders().add("X-Forwarded-For", "http://test.test.test");
requestContext.getHeaders().add("X-Forwarded-Host", "http://test.test.test");
requestContext.getHeaders().add("Host", "http://test.test.test");

无论如何,用户在电子邮件中收到的 url 是 http://keycloak。如果我更改 Java Admin Client 用于联系其余 API 的 url,电子邮件中的 url 也会更改。这适用于我的本地环境,但出于安全原因,生产环境的策略不允许这样做。我无权更改该政策。

我了解到我可以为 Admin REST API 创建一个自定义端点。如果可能,我宁愿避免这种情况,因为这意味着我必须重新发明轮子。

我希望你们中的任何人都可以提供帮助。提前致谢。

【问题讨论】:

标签: java docker keycloak


【解决方案1】:

据我所知,这封电子邮件是从管理控制台发送的。是的,电子邮件中的 url 始终使用 Account 应用程序基础 url,因此您唯一的方法是实现 Rest 端点 SPI 来发送电子邮件,并自定义 URL 计算。为了能够从 Admin Console 中使用它,您还应该在 Admin Console 中添加所需的小部件(请参阅KEYCLOAK_HOME/themes/base/admin)。

Keycloak customization docs

【讨论】:

  • 感谢您的回复。我将首先尝试使用 Vadim 的解决方案,因为我希望除了创建自定义端点之外还有另一种解决方案。 :)
  • 哦,是的,我忘记了主机名 SPI。我们还在 3.4.3,所以没有这个功能。
【解决方案2】:

因为 Vadim Ashikhman 发表了评论而不是答案,所以我无法将他的答案标记为“答案”。

他的解决方案不是我使用的确切解决方案,但肯定为我指明了正确的方向。由于我的 keycloak 服务器使用独立(-ha).xml,我不得不更改它。有关详细信息,请参阅Keycloak documentation。它做同样的事情,但以另一种方式。

感谢 Vadim 为我指明了正确的方向并为我解答了回复。

【讨论】:

  • 您能否详细说明您是如何解决此问题的?我面临同样的问题,您链接的文档并不完全明确。我在 docker 中运行 Keycloak,当我使用 executeActions API 端点时,操作链接中嵌入的地址是内部 docker,而不是公共地址。谢谢
  • 您好 Xaralis,我不得不查找它,因为我实施它已经有一段时间了。我意识到 Github 文档设置为 master,并且他们删除了大部分文档,因此我将在输入此消息后链接到 7.x 版本。我所做的是创建一个 shell 脚本,由我的 Dockerfile(扩展 jboss/keycloak)调用。 shell 脚本将standalone-ha.xml 中的默认提供程序替换为固定的默认提供程序。 7.x 文档提供了应该更改的参数。奇怪的是为什么他们删除了文档,因为它在更新 Keycloak 后仍然有效。
猜你喜欢
  • 2017-06-23
  • 1970-01-01
  • 2012-03-11
  • 1970-01-01
  • 2020-09-12
  • 1970-01-01
  • 2022-01-13
  • 2018-04-24
相关资源
最近更新 更多