【问题标题】:How to implement JWT with Keycloak in Spring boot microservice acrhitecture?如何在 Spring Boot 微服务架构中使用 Keycloak 实现 JWT?
【发布时间】:2019-07-15 04:16:36
【问题描述】:

我已经阅读了一些关于 Keycloak spring 实现的文章(例如:easily-secure-your-spring-boot-applications-with-keycloak),但没有人提到如何与 JWT 一起使用。

我已经创建了 zuul api 网关并添加了 Keycloak 适配器,如之前链接的文章中所述。没关系,但我想将 JWT 与 keycloak 一起使用。

在别处提到将客户端访问类型设置为仅承载,将会话策略设置为 NullAuthenticatedSessionStrategy。这已经足够了还是需要 JWT 的其他东西?

所以我的问题:

  • 如何在 Keycloak 管理员上为 JWT 配置客户端?
  • 如何在 JWT 的后端配置文件中配置 Keycloak?
  • 如何为 JWT 配置 Keycloak 适配器?
  • 如何将用户信息传递给微服务?在网关中创建过滤器?但是我如何从请求中获取用户信息?

【问题讨论】:

    标签: spring-boot jwt microservices keycloak api-gateway


    【解决方案1】:

    Keycloak 访问令牌是JWT。它是JSONJSON 中的每个字段都称为claim。默认情况下,登录的usernameaccess token 中名为“preferred_username”claim 中返回。 Spring Security OAuth2 资源服务器期望用户名在名为 “user_name”claim 中。因此,您需要创建映射器以将登录的 username 映射到名为 user_name 的新 claim

    为了提供对客户端(微服务)的访问,需要将各自的role 分配/映射到user

    在你的spring boot应用程序中,你需要配置与keycloak服务器的连接,提供auth url、token url、scopegrant-typeclient-idclient-secret

    之后,您的应用能够解析 JWT 令牌,您需要创建一些 JwtAccessTokenCustomizer。这个类应该扩展DefaultAccessTokenConverter 并实现JwtAccessTokenConverterConfigurer 类。主要逻辑在于public OAuth2Authentication extractAuthentication(Map<String, ?> tokenMap)方法。

    然后需要配置OAuth2 Resource Server,为其他微服务提供访问权限。为此,您在此处定义 - Oauth2RestTemplate Bean。

    最后,通过标准配置 Component 保护您的 REST API。

    所以,你可以看到,这是一个很大的工作,不能用代码来描述,展示你的一些工作,把它分成块,然后问你有趣的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-08
      • 2020-03-11
      • 2018-03-27
      • 2018-03-28
      • 2019-02-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-30
      相关资源
      最近更新 更多