当前位置: 首页 > 知识库问答 >
问题:

如何在Spring boot微服务体系结构中使用KeyClope实现JWT?

汪胤
2023-03-14

我已经阅读了一些关于keydove-spring实现的文章(例如:使用keydove轻松保护您的Spring Boot应用程序),但没有人提到如何使用JWT。

我已经创建了zuul api网关,并添加了KeyCloak适配器,如前面链接的文章所述。没关系,但是我想用JWT和钥匙斗篷。

如前所述,将客户端访问类型设置为仅承载,将会话策略设置为NullAuthenticatedSessionStrategy。这就足够了,或者JWT还需要其他东西?

所以我的问题:

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

共有1个答案

余弘新
2023-03-14

KeyClope访问令牌是一种JWT。它是一个JSON,该JSON中的每个字段都称为claim。默认情况下,登录的用户名将在访问令牌中名为首选用户名声明中返回。Spring Security OAuth2资源服务器要求在名为“用户名”的声明中使用用户名。因此,您需要创建映射器,将登录的用户名映射到新的声明名为用户名

为了提供对客户端(微服务)的访问,需要将相应的角色分配/映射到用户

在spring boot应用程序中,然后您需要配置到Keyclope服务器的连接,提供,authurl,tokenurl,scopegrant type客户端id客户端机密

之后,您的应用程序将能够解析JWT令牌,您需要创建一些JwtAccessTokenCustomizer。此类应扩展DefaultAccessTokenConverter并实现JwtAccessTokenConverterConfigurer类。主要逻辑在于公共OAuth2Authentication extractAuthentication(Map

然后您需要配置OAuth2资源服务器,以提供对其他微服务的访问。为此,您在这里定义-Oauth2RestTemplateBean。

最后,通过标准配置组件保护RESTAPI。

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

 类似资料:
  • 我最近开始使用Node.js,我必须构建一个应该使用多个Express.js服务的体系结构。其中一些服务必须位于一台服务器上,另一台则位于其他服务器上。我想构建一个基础服务(像API网关),但是我不知道在这个网关和微服务之间,或者在两个微服务之间进行通信的合适方式是什么。 目前我正在研究一个基于此的解决方案:

  • 总而言之,我们有: 产品类别: 产品ID、产品名称 订单类别: 订单ID、产品ID、用户ID、订单日期 这些方法中的任何一种可以被认为是最佳实践吗?还是有不同的解决方案?

  • 我有一个微服务体系结构,它的日志必须发送到远程Kafka主题。在它旁边,本主题的使用者将把日志发送到麋鹿堆栈(另一个团队) 我想要一个专用的微服务(fwk proxy elasticsearch),其职责是收集其他人的日志,并将其发送到远程Kafka主题。 将从我的微服务聚合的所有日志分派到fwk-代理-弹性搜索微服务的最佳协议是什么? 我希望这个模式不会重复远程Kafka主题的安全配置。我想把它

  • 我经常听说,在微服务架构中,对于每一个微服务,我们都必须创建单独的数据库。 但是,如果我必须在不同的数据库中维护外键约束,这是不可能的。就像我在身份验证微服务中有一个用户表,我想在我的目录服务中使用它(用户表中的用户 ID 列) 那么如何解决呢。 感谢提前

  • 我们有A、B和C服务。 服务C连接到Redis,而服务A和服务B(通过API)从服务C请求对象 思想?

  • 在我们公司,我们正在从一个巨大的单体应用程序过渡到微服务架构。这一决定的主要技术驱动因素是能够独立扩展服务的需求和开发的可扩展性——我们有十个Scrum团队在不同的项目(或“微服务”)中工作。 过渡过程很顺利,我们已经开始受益于这种新的技术和组织结构的优势。现在,另一方面,我们正在努力解决一个主要的痛点:如何管理这些微服务之间依赖关系的“状态”。 让我们举一个例子:其中一个微服务处理用户和注册。该