Describe the bug Spring boot 3.1.4, Spring boot starter reactive oauth client library. I want to generate oauth 2.0 token for grant type refresh_token . My requirement is to also pass refresh_token while generating the access token. I am setting Web Client exchange function for this. Please advise for the correct configuration. also advise how to pass refresh token while generating the access token. Refresh token has long life.
To Reproduce It is not working for me. During web service call, Oauth token not passed.`
Expected behavior Able to pass refresh token for gtant type refresh token
Sample
// client registration
@Bean
public ReactiveClientRegistrationRepository clientRegistrationRepository() {
ClientRegistration registration = ClientRegistration
.withRegistrationId("registration-id")
.clientId("cliend_id")
.clientSecret("client_secret")
.tokenUri("token_uri")
.authorizationGrantType(AuthorizationGrantType.REFRESH_TOKEN)
.build();
return new InMemoryReactiveClientRegistrationRepository(registration);
}
// web client exchange server function
private ExchangeFilterFunction getOAuth2FilterFunction(ReactiveClientRegistrationRepository
clientRegistrationRepository){
InMemoryReactiveOAuth2AuthorizedClientService authorizedClientService =
new InMemoryReactiveOAuth2AuthorizedClientService(clientRegistrationRepository);
AuthorizedClientServiceReactiveOAuth2AuthorizedClientManager authorizedClientManager =
new
AuthorizedClientServiceReactiveOAuth2AuthorizedClientManager
(clientRegistrationRepository, authorizedClientService);
ReactiveOAuth2AuthorizedClientProvider authorizedClientProvider =
ReactiveOAuth2AuthorizedClientProviderBuilder.builder()
.refreshToken()
.build();
authorizedClientManager.setAuthorizedClientProvider(authorizedClientProvider);
ServerOAuth2AuthorizedClientExchangeFilterFunction oauth2FilterFunction =
new ServerOAuth2AuthorizedClientExchangeFilterFunction(authorizedClientManager);
oauth2FilterFunction.setDefaultClientRegistrationId("registration-id");
return oauth2FilterFunction;
}
// web client configure with exchange filter
@Bean
public WebClient soapWebClient(final WebClient.Builder builder,
final ReactiveClientRegistrationRepository clientRegistrationRepository) {
WebClient webClient = builder
.filters(exchangeFilterFunctions -> {
exchangeFilterFunctions.add(getOAuth2FilterFunction(clientRegistrationRepository));
})
.build();
return webClient;
}
Comment From: sjohnr
Thanks for getting in touch, but it feels like this is a question that would be better suited to Stack Overflow. We prefer to use GitHub issues only for bugs and enhancements. Feel free to update this issue with a link to the re-posted question (so that other people can find it) or add a minimal sample that reproduces this issue if you feel this is a genuine bug.