Closed
Description
Summary
This will be integration for working with WebClient and OAuth in a Servlet based environment.
// configuration
@Bean
WebClient webClient(OAuth2AuthorizedClientRepository repository) {
ServletOAuth2AuthorizedClientExchangeFilterFunction filter =
new ServletOAuth2AuthorizedClientExchangeFilterFunction(repository);
return WebClient.builder()
.apply(filter.oauth2Configuration())
.build();
}
// explicitly provide the OAuth2AuthorizedClient via attributes
@GetMapping("/github/explicit")
Mono<String> explicitAuthorizedClient(@RegisteredOAuth2AuthorizedClient OAuth2AuthorizedClient authorizedClient) {
return this.webClient.get()
.uri("https://api.github.com/user")
.attributes(oauth2AuthorizedClient(authorizedClient))
.retrieve()
.bodyToMono(String.class);
}
// gets the OAuth2AuthorizedClient from the current Authentication when using oauth2Login
@GetMapping("/github/authentication")
Mono<String> implicitFromAuthentication() {
return this.webClient.get()
.uri("https://api.github.com/user")
.retrieve()
.bodyToMono(String.class);
}
// look up the OAuth2AuthorizedClient using the client registration id
@GetMapping("/github/client-registration-id")
Mono<String> githubClientRegistrationId() {
return this.webClient.get()
.uri("https://api.github.com/user")
.attributes(clientRegistrationId("github"))
.retrieve()
.bodyToMono(String.class);
}