我有一个关于Spring WebClient的问题
在我的应用程序中,我需要执行许多类似的API调用,有时我需要在调用中更改标头(身份验证令牌).所以问题出现了,两种选择会更好:
要为MyService.class的所有传入请求创建一个WebClient,通过使其成为private final字段,如下面的代码:
private final WebClient webClient = WebClient.builder()
        .baseUrl("https://another_host.com/api/get_inf")
        .defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
        .defaultHeader(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE)
        .build();
这里出现了另一个问题:WebClient线程安全吗?(因为服务被许多线程使用)
我想提供最大的性能,并以正确的方式使用它,但我不知道WebClient如何在其中工作,以及它如何使用.
谢谢.
我需要在 Spring Boot 应用程序的服务层中获取访问令牌(grant_type = client_credentials),以与其他微服务(服务到服务交互)进行通信。这一层没有 spring http session 或 auth,我只有 client_id、client_secret 和 token url。这些属性在 application.properties 中设置为:
spring.security.oauth2.client.registration.auth1.client-id=***
spring.security.oauth2.client.registration.auth1.client-secret=***
spring.security.oauth2.client.registration.auth1.authorization-grant-type=client_credentials
spring.security.oauth2.client.provider.auth1.tokenUri=***
Run Code Online (Sandbox Code Playgroud)
这对于 Spring Security OAuth 来说似乎很简单,但对于 Spring security 却无法解决。参考了 Spring Security 5 的文档,但一切似乎都是在 Web 界面的上下文中。我知道我可以进行 http 调用来获取带有我所拥有的信息的令牌,但我想利用该框架......
场景:让我们调用这个 Spring Boot 应用程序服务 A。还有其他服务可能会调用 A 来处理 http 上的更新或发送有关 A 监听的主题的 kafka 消息。当 A 处理更新/消息时,它需要向服务 B 发送一些数据,而服务 B 需要访问令牌进行身份验证。这是我需要访问令牌的地方。因此,交互本质上是服务-服务,而不是特定于用户的。