Настройка запросов в Spring Cloud Gateway - PullRequest
0 голосов
/ 13 января 2020

В моем понимании Spring Cloud Gateway должен реализовывать HTTP-клиент для выполнения запросов обратного прокси. Spring Framework предоставляет именно это, WebClient . Я не знаю, использует ли Spring Cloud Gateway его внутренне.

Если так, возможно ли иметь доступ к экземпляру WebClient? Это позволит настроить атрибуты клиента. Одной из возможностей является предоставление авторизованного клиента OAuth2 для настройки запросов с заголовком авторизации, как в здесь :

WebClient webClient;
@RegisteredOAuth2AuthorizedClient("client-id") OAuth2AuthorizedClient authorizedClient;

this.webClient
            .get()
            .uri(this.uri)
            .attributes(oauth2AuthorizedClient(authorizedClient));

Для этого необходимо интегрировать с паролем Тип разрешения авторизации, Spring не предоставляет способ сделать это гладко. Здесь вы можете найти больше об этом сценарии.

1 Ответ

1 голос
/ 13 января 2020

На самом деле нет необходимости перехватывать ваши звонки вручную. Существует множество учебных пособий, в которых рассказывается, как включить авторизацию OAuth2 в Spring Cloud Gateway. Вы можете следовать этой части официального руководства . Вы можете найти что-то полезное на этой странице руководства, связанной с Okta . Или вот код, который я использовал для:

/**
 * OAuth2.0 authorization filter setup.
 *
 * @param http
 * @return security filter
 */
@Bean
@ConditionalOnMissingBean
public SecurityWebFilterChain springSecurityFilterChainWithAuth(ServerHttpSecurity http) {
    http
            .authorizeExchange()
            .anyExchange().authenticated()
            .and()
            .oauth2ResourceServer()
            .jwt();
    return http.build();
}

Дополнительные настройки в файле свойств:

spring:
  security:
    oauth2:
      resourceserver:
        jwt:
          issuer-uri: [your_uri_here]
...