【问题标题】:Keycloak configuration at runtime运行时的 Keycloak 配置
【发布时间】:2018-03-05 03:07:33
【问题描述】:

我使用 Keycloak 成功保护了我的一个应用程序。该过程是创建一个“keycloak.json”文件并在“web.xml”中添加安全约束,如here所述。

现在,由于我的应用程序从由我的应用程序管理的 RDB 表加载所有配置,并且其中一些信息与领域有关,因此我想集中这些信息。

这个想法是:

  1. 拥有“keycloak.json”并注入在 servlet 运行时从 RDB 表中获得的 Keycloak 值。
  2. 在加载 RDB 表配置后在 servlet 运行时加载配置。

我还想在 RDB 表中添加一个配置参数,以便在需要时启用\禁用 Keycloak 验证。

这甚至可能吗?如果可以,请您给我举一些例子吗?

【问题讨论】:

  • 我想这是不可能的(或者至少不是直截了当的)。 Keycloak.json 在应用程序启动时被解析,您无法保证在您的数据库连接器设置后它会解析。但是,您可以做的是在您的服务器环境中稳定该值(在您提供的链接中进行了说明)。
  • 是的,我见过这个选项。问题是因为我的应用程序可以属于多个解决方案(我认为它们是领域),我使用 Wildfly 容器映像部署的每个解决方案都需要具有不同的standalone.xml 配置。尽管工作,但这并不是最优雅的方式......
  • 你是用docker部署的吗?然后,您可以使用环境变量轻松实现这一点,而不必更改文件。
  • 是的,我使用 Docker 进行部署,但不用于开发。对于开发,我使用的是 Wildfly 本地安装。环境变量非常适合部署,但不适合开发...

标签: java oauth oauth-2.0 keycloak


【解决方案1】:

使用 KeycloakConfigResolver 动态创建配置,请参阅multi-tentant keycloak example

【讨论】:

  • 是的,从我在发布这个问题之前看到的情况来看,多租户是最好的选择。我希望还有别的东西,但似乎没有。我会尝试这种方法并尽快提供一些反馈
  • 谢谢!像魅力一样工作......我还想要一件事,那就是向我的应用程序添加一个配置变量,以启用\禁用 Keycloak。我该怎么做?
  • 但是你为什么需要那个?
  • 出于开发原因禁用 Keycloak 可能很有用。假设我的 Keycloak 实例已关闭,或者我只是没有与之通信,并且迫切需要调用我的应用程序的 API 之一。如果不评论“web.xml”中定义的安全规则,我该如何做到这一点?
  • 但总的来说,我认为您应该接受如果 keycloak 关闭,您的服务将关闭。为 0.01% 的用例进行设计并不是很好地利用您的时间。
猜你喜欢
  • 2019-05-08
  • 2021-01-08
  • 2023-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多