gpt4 book ai didi

java - Spring WebClient 和 client_credentials 授予

转载 作者:行者123 更新时间:2023-11-30 10:11:02 24 4
gpt4 key购买 nike

我的问题是针对 spring-security 5.1.0 和使用 Spring WebClient 的。我在使用 Spring Boot 2.1.0 的服务器环境中工作。这question可能已经被问到但当时无法回答。

读通spring-security 5.1.0 release notes ,看来他们已经添加了对 client_credentials 身份验证流程的支持,特别是将其添加到 WebClient Bean,因此最终用户永远不必担心身份验证 token 。我正在尝试这样做,但 API/文档让我完全迷失了。我目前的工作如下...

private ClientRegistration clientRegistration() {
return ClientRegistration.withRegistrationId("registration-id")
.clientId("client-id")
.clientSecret("secret")
.tokenUri("token-url")
.clientAuthenticationMethod(ClientAuthenticationMethod.BASIC)
.authorizationGrantType(AuthorizationGrantType.CLIENT_CREDENTIALS)
.scope("scopes")
.build();
}

@Bean
public WebClient webClient() {
ClientRegistrationRepository clientRegistrationRepository = new InMemoryClientRegistrationRepository(this.clientRegistration());
OAuth2AuthorizedClientService oAuth2AuthorizedClientService = new InMemoryOAuth2AuthorizedClientService(clientRegistrationRepository);
# These are unused ^ but pieces of documentation seem to indicate they are required

return WebClient.builder()
.filter(new ServerOAuth2AuthorizedClientExchangeFilterFunction()) # this requires 2 arguments that I do not have
.build();
}

我的最终目标是能够在任何地方 Autowiring WebClient bean,并简单地发出自动添加了 bearer 身份验证的请求。

最佳答案

由于 Spring Security 5.1 为 OAuth2 身份验证机制添加了更简单的实现,我建议您查看这篇更新的帖子:StackOverflow - Spring Security 5.1 - Get token for client credentials flow with WebClient .

从现在开始,您无需管理任何ClientRegistration。一切都可以使用属性进行设置。

然后,对于 WebClient 实例化,ClientRegistrationRepository 需要从 Spring 注入(inject),您需要使用 UnAuthenticatedServerOAuth2AuthorizedClientRepository 的新实例,因为您没有将任何用户附加到您的申请流程。这样,您将获得 ServerOAuth2AuthorizedClientExchangeFilterFunction 所需的两个参数。

我尝试将客户端应用程序使用 WebClient 从 OAuth2 安全端点上的资源服务器请求数据的场景放在 GitHUb 存储库中:GitHub - Spring Security OAuth2 Machine-To-Machine process .使用 Spring Security 5.1,身份验证机制现在真的更容易了。

有什么问题请追问。希望对您有所帮助!

关于java - Spring WebClient 和 client_credentials 授予,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52614683/

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