Skip to content

Add ServletOAuth2AuthorizedClientExchangeFilterFunction #5545

Closed
@rwinch

Description

@rwinch

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);
}

Metadata

Metadata

Assignees

Labels

in: oauth2An issue in OAuth2 modules (oauth2-core, oauth2-client, oauth2-resource-server, oauth2-jose)

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions