【问题标题】:keycloak-spring-boot-starter for Spring Boot 2.2.4.RELEASE用于 Spring Boot 2.2.4.RELEASE 的 keycloak-spring-boot-starter
【发布时间】:2020-06-02 07:40:10
【问题描述】:

在我的 Spring Boot 应用程序中,我正在集成 Keycloak 以外部化安全性。我在项目中使用的 Spring Boot 版本是 2.2.4.RELEASE,但是我检查了最新的 Keycloak 8 pom.xml 及其依赖项,文件 @987654322 中有一个 Spring Boot 2.0.3.RELEASE 的硬编码版本@

    <properties>
      <spring-boot.version>2.0.3.RELEASE</spring-boot.version>
    </properties>

在没有Spring Boot版本降级的情况下如何解决这个问题?我无法更改 keycloak 版本,我们的解决方案系统中的其他人使用它。我也不希望 Spring Boot 驱动所有其他版本,而不是 Keycloak,它只是许多其他组件之一。

【问题讨论】:

  • 不要评论为什么我的回答不能解决你的问题(或接受它......)
  • 嗨,ch4mp,我没有尝试解决它,因为它没有造成任何伤害。然而,我所做的是,我编写了一个 Maven 插件,它遍历整个依赖树并收集所有库及其版本并将其写入输出。我发现,Java 导入机制在设计上完全被破坏了,因为我发现有时在一个 Spring Boot 项目中某些库甚至有 20 个(!!!!!!)版本,Maven 选择了一个,它以某种方式神奇地工作。程序员如何使他们的库兼容,这对我来说是个谜。看到之后,这个问题对我来说就不再重要了
  • Eclipse 有一个非常好的 Maven 插件。 maven 如何选择依赖项只不过是魔术。您可能会参考许多其他关于此的回复,例如 stackoverflow.com/a/50272111/619830

标签: spring-boot keycloak


【解决方案1】:

Keycloak 生成符合 OpenID 的 JWT。配置 spring-security 以将此 JWT 解析为 KeycloackAuthenticationToken 以外的其他内容并不难。

因此,您不必使用他们的库。您可以改用 JwtAuthenticationToken 或您选择的任何其他 Authentication,甚至创建您自己的一个。

您可以在 a repo of mine 中找到适用于 servletreactive 应用程序的最少工作示例。

请注意,在上面的示例中,OidcIdAuthenticationToken 是我创建的用于与 OpenID 授权服务器(不仅是 Keycloak)一起使用的 Authentication 实现。来源在同一个仓库中。

【讨论】:

    猜你喜欢
    • 2014-04-07
    • 2018-09-26
    • 2016-01-29
    • 1970-01-01
    • 2018-03-28
    • 2015-07-07
    • 2023-04-04
    • 2017-02-19
    • 1970-01-01
    相关资源
    最近更新 更多