|
@@ -25,6 +25,7 @@ import org.springframework.security.oauth2.client.OAuth2AuthorizedClientManager;
|
|
import org.springframework.security.oauth2.client.web.OAuth2AuthorizedClientRepository;
|
|
import org.springframework.security.oauth2.client.web.OAuth2AuthorizedClientRepository;
|
|
import org.springframework.security.oauth2.client.web.client.OAuth2ClientHttpRequestInterceptor;
|
|
import org.springframework.security.oauth2.client.web.client.OAuth2ClientHttpRequestInterceptor;
|
|
import org.springframework.security.oauth2.client.web.client.RequestAttributeClientRegistrationIdResolver;
|
|
import org.springframework.security.oauth2.client.web.client.RequestAttributeClientRegistrationIdResolver;
|
|
|
|
+import org.springframework.security.oauth2.client.web.client.SecurityContextHolderPrincipalResolver;
|
|
import org.springframework.web.client.RestClient;
|
|
import org.springframework.web.client.RestClient;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -45,11 +46,12 @@ public class RestClientConfiguration {
|
|
public RestClient restClient(OAuth2AuthorizedClientManager authorizedClientManager,
|
|
public RestClient restClient(OAuth2AuthorizedClientManager authorizedClientManager,
|
|
OAuth2AuthorizedClientRepository authorizedClientRepository,
|
|
OAuth2AuthorizedClientRepository authorizedClientRepository,
|
|
OAuth2ClientHttpRequestInterceptor.ClientRegistrationIdResolver clientRegistrationIdResolver,
|
|
OAuth2ClientHttpRequestInterceptor.ClientRegistrationIdResolver clientRegistrationIdResolver,
|
|
- RestClient.Builder builder) {
|
|
|
|
|
|
+ OAuth2ClientHttpRequestInterceptor.PrincipalResolver principalResolver, RestClient.Builder builder) {
|
|
|
|
|
|
OAuth2ClientHttpRequestInterceptor requestInterceptor = new OAuth2ClientHttpRequestInterceptor(
|
|
OAuth2ClientHttpRequestInterceptor requestInterceptor = new OAuth2ClientHttpRequestInterceptor(
|
|
authorizedClientManager);
|
|
authorizedClientManager);
|
|
requestInterceptor.setClientRegistrationIdResolver(clientRegistrationIdResolver);
|
|
requestInterceptor.setClientRegistrationIdResolver(clientRegistrationIdResolver);
|
|
|
|
+ requestInterceptor.setPrincipalResolver(principalResolver);
|
|
|
|
|
|
OAuth2AuthorizationFailureHandler authorizationFailureHandler = OAuth2ClientHttpRequestInterceptor
|
|
OAuth2AuthorizationFailureHandler authorizationFailureHandler = OAuth2ClientHttpRequestInterceptor
|
|
.authorizationFailureHandler(authorizedClientRepository);
|
|
.authorizationFailureHandler(authorizedClientRepository);
|
|
@@ -62,7 +64,8 @@ public class RestClientConfiguration {
|
|
* This sample uses profiles to demonstrate additional strategies for resolving the
|
|
* This sample uses profiles to demonstrate additional strategies for resolving the
|
|
* {@code clientRegistrationId}. See {@link ClientRegistrationIdResolverConfiguration}
|
|
* {@code clientRegistrationId}. See {@link ClientRegistrationIdResolverConfiguration}
|
|
* for alternate implementations.
|
|
* for alternate implementations.
|
|
- * @return the default {@link ClientRegistrationIdResolverConfiguration}
|
|
|
|
|
|
+ * @return the default
|
|
|
|
+ * {@link OAuth2ClientHttpRequestInterceptor.ClientRegistrationIdResolver}
|
|
* @see ClientRegistrationIdResolverConfiguration
|
|
* @see ClientRegistrationIdResolverConfiguration
|
|
*/
|
|
*/
|
|
@Bean
|
|
@Bean
|
|
@@ -71,4 +74,17 @@ public class RestClientConfiguration {
|
|
return new RequestAttributeClientRegistrationIdResolver();
|
|
return new RequestAttributeClientRegistrationIdResolver();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * This sample uses profiles to demonstrate additional strategies for resolving the
|
|
|
|
+ * {@code principal}. See {@link PrincipalResolverConfiguration} for alternate
|
|
|
|
+ * implementations.
|
|
|
|
+ * @return the default {@link OAuth2ClientHttpRequestInterceptor.PrincipalResolver}
|
|
|
|
+ * @see PrincipalResolverConfiguration
|
|
|
|
+ */
|
|
|
|
+ @Bean
|
|
|
|
+ @ConditionalOnMissingBean
|
|
|
|
+ public OAuth2ClientHttpRequestInterceptor.PrincipalResolver principalResolver() {
|
|
|
|
+ return new SecurityContextHolderPrincipalResolver();
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|