Я изучаю, как работает Spring Cloud, и использую для этого один из самых популярных технических стеков: Eureka, Zuul, Hystrix, Ribbon, Feign. За исключением реестра, сервера конфигурации и шлюза, мои службы имеют следующие зависимости с Spring Cloud версии 2.2.1.RELEASE:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
<version>${spring-cloud.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>${spring-cloud.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
<version>${spring-cloud.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>${spring-cloud.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
<version>${spring-cloud.version}</version>
</dependency>
Я делаю авторизацию с JWT на шлюзе и хочу использовать тот же объект авторизации на другом Сервисы. Очевидный способ сделать это - передать мой JWT с заголовком, но я прочитал в документах, что Hystrix может распространять весь контекст безопасности с помощью только одного свойства hystrix.shareSecurityContext = true . Я пытался сделать это с Feign Client и Zuul, но SecurityContext в запрошенном сервисе содержит только anonymousUser.
Я потратил два дня, чтобы понять, как это работает, но я этого не сделал. В журналах Feign я не вижу никаких заголовков с чем-то вроде Principal.
Итак, вот мой вопрос: возможно ли передать контекст безопасности с Zuul и Feign, если вторая служба работает в другом контейнере docker или на другом сервере? Если нет, то как лучше всего передавать данные об авторизованном пользователе?
Спасибо!