Zuul Gateway не несет заголовок авторизации - PullRequest
1 голос
/ 14 февраля 2020

Я хочу построить zuul gateway с интеграцией oauth2 sso с jwt. когда я запрашиваю zuul, он перенаправляет на сервер oauth2, и я успешно вхожу туда он возвращает zuul и перенаправляет запрос на сервер ресурсов, но без заголовка авторизации. я применил предложенное решение раньше. (например, SensheHeaders: Cook ie, Set-Cook ie, Авторизация в конфигурации zuul) , но все еще не переносит этот заголовок авторизации.

Я вижу маркер jwt в журналах сервера oauth2. поэтому access_token успешно предоставлен.

После запроса [ uri = / authorization / oauth / authorize ? client_id = first-client & redirect_uri = http://localhost: 8080 / gateway / Войти и response_type = код и сфера = custom_mod и состояние = 43Vu18; заголовки = [ разрешение: "Basi c Zmlyc3QtY2xpZW50Om5vb25ld2lsbGV2ZXJndWVzcw == ", сварить ie: "JSESSIONID = A58A2A9977B210BB2ADA40BD482B63A2; JSESSIONID = B1F8F6F27639B923EB7BF07CB44E0B87", хозяин:» localhost: 8094 ",

После запроса [ uri = / авторизация / oauth / токен ; заголовки = [авторизация:" Basi c Zmlyc3QtY2xpZW50Om5vb25ld2lsbGV2ZXJndWVz20 * *, "= host: "localhost: 8094",]; payload = grant_type = код авторизации & code = QHqLLS & redirect_uri = http% 3A% 2F% 2Flocalhost% 3A8080% 2Fgateway% 2Flogin]

После запроса [ uri = / authorization / userinfo ; headers = [ авторизация: "Носитель предъявителя iOiI3YWI1ZGRiMC1kNzBlLTQxYTctOWI3Yy01NTVjM2I0Nzk0OGYiLCJjbGllbnRfaWQiOiJmaXJzdC1jbGllbnQiLCJzY29wZSI6WyJjdXN0b21fbW9kIl19.bUJp8Z-a9eLJQJFb8KjbSuUCWWyoeI9UWL-E9djeoYrPYmRId-дй-rV75OP5QJKwUU1zBhBUErCyFM0tlEp2K1dB0Lg8hZxouavFmPOyakO97fs1A_IFfv5XePIXYgqh-jRKCQHXPKJLisIKl9Iav4 c -pz0etyjaR6fhnmiLHg50Q3SAM7vwkISZ3z3EvJChRIo - tgY6PjnFLX2E3NQhSglCJ_shb-cZ8qEn2avQzNJBMLAoOo988362ft6m8rP1Oi0BojRI4P6blxNwT1pQA7JwjcxtdeMdSVy4BhwaMgObiQfYEn0AnJDJOwffdc7DjIS62um7HpSRMM55Ty6Gg », ведущий: "локальный: 8094"]]

но в Zuul консоли Журналы, в запросе нет заголовка авторизации.

После запроса [GET / gateway / resource / mod, headers = cook ie: "JSESSIONID = 0664AD4111623C1EF35C2E1BD1CC6C55; JSESSIONID = B1F8F6F27639B923EB7BF07CB44E0B87 ", хост:" localhost: 8080 ", se c -fetch-mode:" navigate ", se c -fetch-site:" none ", se c -fetch-user:"? 1 ", обновления-небезопасных запросов:" 1 "]]

что мне не хватает, спасибо за помощь.

вот моя конфигурация zuul.

zuul:
  sensitiveHeaders: Cookie,Set-Cookie,Authorization
  routes:
    oauth-resource:
      path: /resource/**
      url: http://localhost:8097/myresource/resource

ssoServiceUrl: http://localhost:8094/authorization

security:
  oauth2:
    client:
      client-id: first-client
      client-secret: noonewilleverguess
      access-token-uri: ${ssoServiceUrl}/oauth/token
      user-authorization-uri: ${ssoServiceUrl}/oauth/authorize
      scope: custom_mod
    resource:
      prefer-token-info: false
      user-info-uri: ${ssoServiceUrl}/userinfo
server:
  servlet:
    context-path: /gateway

код приложения zuul

@SpringBootApplication
@EnableZuulProxy
@EnableOAuth2Sso
@Configuration
@EnableWebSecurity
public class DemoApplication extends WebSecurityConfigurerAdapter {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                .antMatchers("/login").permitAll()
                .anyRequest().authenticated();
        ;
    }

    @Bean
    public CommonsRequestLoggingFilter requestLoggingFilter() {
        CommonsRequestLoggingFilter loggingFilter = new CommonsRequestLoggingFilter();
        loggingFilter.setIncludeQueryString(true);
        loggingFilter.setIncludePayload(true);
        loggingFilter.setIncludeHeaders(true);
        return loggingFilter;
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...