1 – запрос области.
2 – запрос токена с использованием учетных данных клиента (client_id, client_secret).
3- Запрос нового токена с помощью Grant_type:token-exchange.
Я пытаюсь использовать Spring Security для обработки этой аутентификации, но я новичок в обоих Spring Безопасность и обмен токенами.
Конфигурация в application.yml
До сих пор я пробовал в своем application.yml следующее:
Конфигурация в application.yml
Код: Выделить всё
spring:
main:
web-application-type: reactive
security:
oauth2:
client:
registration:
myClient:
client-id: ${CLIENT_ID}
client-secret: ${CLIENT_SECRET}
client-authentication-method: client_secret_post
authorization-grant-type: urn:ietf:params:oauth:grant-type:token-exchange
provider:
myClient:
token-uri: ${TOKEN_URI}
Код: Выделить всё
@Bean
public WebClient buildOAuthWebClient(HttpClient httpClient,
ExchangeStrategies strategies,
ReactiveOAuth2AuthorizedClientManager authorizedClientManager) {
LOGGER.info("Using OAuth mode");
ServerOAuth2AuthorizedClientExchangeFilterFunction oath2ClientFilter =
new ServerOAuth2AuthorizedClientExchangeFilterFunction(authorizedClientManager);
oath2ClientFilter.setDefaultClientRegistrationId("myClient");
return WebClient.builder()
.clientConnector(new ReactorClientHttpConnector(httpClient))
.exchangeStrategies(strategies)
.filter(oath2ClientFilter)
.build();
}
@Bean
public ReactiveOAuth2AuthorizedClientManager authorizedClientManager(ReactiveClientRegistrationRepository clientRegistrationRepository,
ServerOAuth2AuthorizedClientRepository authorizedClientRepository) {
TokenExchangeReactiveOAuth2AuthorizedClientProvider tokenExchangeAuthorizedClientProvider =
new TokenExchangeReactiveOAuth2AuthorizedClientProvider();
ReactiveOAuth2AuthorizedClientProvider authorizedClientProvider =
ReactiveOAuth2AuthorizedClientProviderBuilder.builder()
.provider(tokenExchangeAuthorizedClientProvider)
.clientCredentials()
.refreshToken()
.build();
DefaultReactiveOAuth2AuthorizedClientManager authorizedClientManager =
new DefaultReactiveOAuth2AuthorizedClientManager(
clientRegistrationRepository, authorizedClientRepository);
authorizedClientManager.setAuthorizedClientProvider(authorizedClientProvider);
return authorizedClientManager;
}
@Bean
public SecurityWebFilterChain securityFilterChain(ServerHttpSecurity http) {
http.csrf(ServerHttpSecurity.CsrfSpec::disable).oauth2Client(Customizer.withDefaults());
return http.build();
}
Я не уверен, где я ошибаюсь и как проверить, добавляется ли аутентификация мои запросы. Мы будем очень признательны за любые советы или рекомендации по устранению этой проблемы или улучшению конфигурации.
Подробнее здесь: https://stackoverflow.com/questions/789 ... entication
Мобильная версия