Spring boot 如何在spring boot中使用WebClient配置OAuthClient2Password
我需要使用OAuth2Password连接到其他具有资源所有者名称和密码的服务。我已将webclient和客户端注册配置如下: @豆子 网络客户端网络客户端(ReactiveClientRegistration存储库clientRegistrations){ 公共反应clientRegistrationRepository clientRegistrationRepository(){ 我总是得到401个未经验证的错误,并且我没有得到任何令牌 你能帮我知道我是否配置了错误的东西吗 问候,, 斯蒂芬Spring boot 如何在spring boot中使用WebClient配置OAuthClient2Password,spring-boot,spring-security-oauth2,reactive,spring-webclient,oauth2client,Spring Boot,Spring Security Oauth2,Reactive,Spring Webclient,Oauth2client,我需要使用OAuth2Password连接到其他具有资源所有者名称和密码的服务。我已将webclient和客户端注册配置如下: @豆子 网络客户端网络客户端(ReactiveClientRegistration存储库clientRegistrations){ 公共反应clientRegistrationRepository clientRegistrationRepository(){ 我总是得到401个未经验证的错误,并且我没有得到任何令牌 你能帮我知道我是否配置了错误的东西吗 问候,, 斯蒂
TcpClient tcpClient = TcpClient.create().option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 10000)
.doOnConnected(connection -> {
connection.addHandlerLast(new ReadTimeoutHandler(10000, TimeUnit.MILLISECONDS));
connection.addHandlerLast(new WriteTimeoutHandler(10000, TimeUnit.MILLISECONDS));
});
InMemoryReactiveOAuth2AuthorizedClientService authClientService = new InMemoryReactiveOAuth2AuthorizedClientService(
clientRegistrations);
ServerOAuth2AuthorizedClientExchangeFilterFunction oauth = new ServerOAuth2AuthorizedClientExchangeFilterFunction(
new AuthorizedClientServiceReactiveOAuth2AuthorizedClientManager(clientRegistrations,
authClientService));
return WebClient.builder().clientConnector(new ReactorClientHttpConnector(HttpClient.from(tcpClient)))
.filter(oauth).build();
}
Map<String,Object > map = new HashMap<>();
map.put(OAuth2AuthorizationContext.USERNAME_ATTRIBUTE_NAME, USERNAME);
map.put(OAuth2AuthorizationContext.PASSWORD_ATTRIBUTE_NAME, PASSWORD);
ClientRegistration clientRegistration;
clientRegistration = ClientRegistration.withRegistrationId("configured")
.authorizationGrantType(AuthorizationGrantType.PASSWORD).clientId(CLIENTID)
.clientSecret(CLIENTSECRET).
.providerConfigurationMetadata(map).userInfoAuthenticationMethod(AuthenticationMethod.FORM)
.tokenUri(tokenURL).build();
;
return new InMemoryReactiveClientRegistrationRepository(clientRegistration);
}
webclient
.get().
.url(......)
.attributes(ServerOAuth2AuthorizedClientExchangeFilterFunction.clientRegistrationId("configured"))
.retrieve().bodytoMono(String.class);