gpt4 book ai didi

java - 如何从另一个 Java 微服务使用 JWT 安全微服务

转载 作者:行者123 更新时间:2023-12-02 08:49:41 25 4
gpt4 key购买 nike

我的应用程序有多个微服务,包括:Auth、Game 和 Group。当我按下前端(播放)上的按钮时,我正在调用 Group rest api 方法,比如说 foo()。为了在组内实现 foo(),我需要 GET 调用游戏休息 api,但它是安全的。

当我登录 React 应用程序时,我从/login (Auth) 获取 JWT token 并将其存储在本地存储中。然后我成功地使用它从 Group 调用 foo(),但在 foo() 实现中我还需要使用 jwt token 以便能够从 Game 获取信息。

@Configuration
//+component scans...
public class GroupConfiguration {

@Bean
@LoadBalanced
public WebClient.Builder buildWebClientBuilder() {

return WebClient.builder();
}
}


@RestController
@RequestMapping("/groups")
public class Controller {

private final Logger logger = LogManager.getLogger();

@Autowired
private WebClient.Builder webClientBuilder;

private int getMinimumNumberOfPlayers(int gameId) {

try {
return webClientBuilder.build()
.get()
.uri("http://game-service/games/minimumNumberOfPlayers/2")
.retrieve()
.bodyToMono(Integer.class)
.block();
} catch (NullPointerException|WebClientResponseException e) {
e.printStackTrace();
return 0;
}
}

...

// foo() frontend calls foo(). foo it's using getMinimumNumberOfPlayers


getMinimumNumberOfPlayers() 用于 Group 的 foo() 方法。它应该通过 id 检索游戏的最小玩家数量,但游戏微服务受 jwt 保护,并且我收到未经授权的错误。

所以我的问题是如何使组微服务能够调用游戏微服务。

谢谢。

编辑:RestTemplate Interceptor我就是这样解决的。

最佳答案

即使我有一些安全问题,我也会回答这个问题:

你可以做的是:

  1. 为 Group 服务上的传入调用添加拦截器,该拦截器会将 JWT 存储在请求上下文中。
  2. 为游戏服务的传出调用添加一个拦截器,该拦截器将获取请求上下文中的 JWT 并将其添加到请求 header 中。

这里重要的是请求上下文

关于java - 如何从另一个 Java 微服务使用 JWT 安全微服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60864832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com