0

При переключении с Spring Cloud Brixton.M5 на Brixton.RC1 мой ZuulProxy больше не пропускает Authorization заголовки вниз по течению к моим прокси-серверам.Заголовок полномочий не передан ZuulProxy, начиная с Brixton.RC1

В моей установке есть разные актеры, но большинство из них довольно просты: - AuthorizationServer: запускается отдельно; выдает JWT клиентам - Клиенты: получают JWT с сервера OAuth; каждый из которых имеет доступ к подмножеству ресурсов. - ResourceServers: потребляют JWT для принятия решений о доступе - MyZuulProxy: прокси-серверы различных ресурсов; должны включать JWT.

Следует отметить, что у MyZuulProxy нет никаких зависимостей от безопасности; Он прошел заголовок Authorization: Bearer {JWT}, который он получает в ResourceServers, pre-RC1. MyZuulProxy явно не является самим Клиентом и не использует @EnableOAuth2SSO или аналогичный на данный момент.

Что я могу сделать, чтобы MyZuulProxy снова передал JWTs в ResourceServers при использовании Spring Cloud Brixton.RC1?

Существует очень мало кода для публикации: это всего лишь @EnableZuulProxy, @EnableAuthorizationServer и @EnableResourceServer в трех разных банках. Мои клиенты не являются приложениями Spring.

ответ

5

Обновление: Исправлено в https://github.com/spring-cloud/spring-cloud-netflix/pull/963/files

Sensitive заголовки также могут быть установлены глобально настройки zuul.sensitiveHeaders. Если на маршруте установлено sensitiveHeaders, это переопределит глобальную настройку sensitiveHeaders.

Так используйте:

# Pass Authorization header downstream 
zuul: 
    sensitive-headers: Cookie,Set-Cookie 

Так в ожидании исправления для https://github.com/spring-cloud/spring-cloud-netflix/issues/944, jebeaudet был достаточно любезен, чтобы обеспечить обходной путь:

@Component 
public class RelayTokenFilter extends ZuulFilter { 

@Override 
public Object run() { 
    RequestContext ctx = RequestContext.getCurrentContext(); 

    // Alter ignored headers as per: https://gitter.im/spring-cloud/spring-cloud?at=56fea31f11ea211749c3ed22 
    Set<String> headers = (Set<String>) ctx.get("ignoredHeaders"); 
    // We need our JWT tokens relayed to resource servers 
    headers.remove("authorization"); 

    return null; 
} 

@Override 
public boolean shouldFilter() { 
    return true; 
} 

@Override 
public String filterType() { 
    return "pre"; 
} 

@Override 
public int filterOrder() { 
    return 10000; 
} 
} 
+0

спасибо много! это обходное решение делает свою работу –

1

Установить sensitiveHeaders глобально помог мне решить выпуск

zuul: 
    sensitiveHeaders: Cookie,Set-Cookie 

Пожалуйста, обратите внимание, что имя свойства sensitiveHeadersнечувствительной заголовки [Я использую весна-облако-стартер-Zuul версия: 1.3.1.RELEASE]