Я пытаюсь перенести JHipster из Zuul в Spring Cloud Gateway. JHipster использует Eureka для поиска маршрутов, и я считаю, что я правильно настроил Spring Cloud Gateway для поиска маршрутов и распространения маркера доступа к ним. Вот мой конфиг:
spring:
cloud:
gateway:
default-filters:
- TokenRelay
discovery:
locator:
enabled: true
lower-case-service-id: true
route-id-prefix: /services/
httpclient:
pool:
max-connections: 1000
Проблема, с которой я сталкиваюсь, заключается в том, что токен доступа не отправляет заголовок Authorization
в последующие службы.
Вот как все было настроено с Zuul в моем application.yml
:
zuul: # those values must be configured depending on the application specific needs
sensitive-headers: Cookie,Set-Cookie #see https://github.com/spring-cloud/spring-cloud-netflix/issues/3126
host:
max-total-connections: 1000
max-per-route-connections: 100
prefix: /services
semaphore:
max-semaphores: 500
Я создал запрос на извлечение, чтобы показать, что изменилось после интеграции Spring Cloud Gateway.
https://github.com/mraible/jhipster-reactive-microservices-oauth2/pull/4
Действия по воспроизведению проблемы:
git clone -b reactive git@github.com:mraible/jhipster-reactive-microservices-oauth2.git
Запуск реестра JHipster, Keycloak и приложения шлюза:
cd jhipster-reactive-microservices-oauth2/gateway
docker-compose -f src/main/docker/jhipster-registry.yml up -d
docker-compose -f src/main/docker/keycloak.yml up -d
./mvnw
Запуск MongoDB и приложение для блогов:
cd ../blog
docker-compose -f src/main/docker/mongodb.yml up -d
./mvnw
Перейдите к http://localhost: 8080 в своем браузере, войдите с admin/admin
и попробуйте go до Entities > Блог . Вы получите сообщение об ошибке «Отказано в доступе 403». Если вы посмотрите в Chrome Developer Tools на сетевой трафик c, вы увидите, что токен доступа не включен ни в какие заголовки.