Как настроить приложение Spring для выполнения реактивной аутентификации клиента для приложения, которое использует обмеJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как настроить приложение Spring для выполнения реактивной аутентификации клиента для приложения, которое использует обме

Сообщение Anonymous »

У меня есть приложение Spring, которому необходимо пройти аутентификацию в другом приложении с помощью обмена токенами KeyCloak. Процесс включает в себя:
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}
Конфигурация Spring

Код: Выделить всё

@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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»