Я хочу построить 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;
}
}