Как настроить «Шлюз Zuul», вызывающий «Сервер аутентификации» для проверки токена

#spring-boot #jwt #netflix-zuul #api-gateway

#весенняя загрузка #jwt #netflix-zuul #api-шлюз

Вопрос:

Я использую «Zuul» в качестве шлюза api для своих микросервисов API на основе spring boot. Я также внедрил автономный «Сервер аутентификации» для создания и проверки токена JWT.

Чего я пытаюсь достичь, так это того, что «Zuul» вызывает «Сервер аутентификации» для проверки токена, прежде чем разрешить отправку запросов в любую службу.

Итак, базовый поток будет таким, как показано ниже

  1. Zuul будет использоваться только для целей шлюза
  2. Когда дело доходит до проверки JWT, «Zuul» запросит у «Сервера аутентификации», действителен ли токен или нет
  3. Если это допустимо, то «Маршрутизация по потоку» будет продолжена Zuul. В противном случае запрос будет отклонен, как обычно

Из-за проблем со скоростью и задержкой я ищу разумный способ сделать это. Существует множество примеров, основанных на «предварительной фильтрации Zuul перед маршрутизацией микросервиса вниз по потоку». И трудно понять, какой из них является лучшим подходом для моего случая. Помимо пользовательских подходов, существует ли какой-либо стандартный способ сделать это?

Ниже приведен лучший пример, который я нашел на данный момент. Из-за моего недостатка опыта я действительно не знаю, является ли эта архитектура хорошим вариантом для продолжения.

https://github.com/spring-cloud/spring-cloud-netflix/issues/1392#issuecomment-253267241

Ответ №1:

Дело в том, чтобы знать, как настроить сервер авторизации, для этого начните с этогоhttps://www.baeldung.com/spring-security-zuul-oauth-jwt .

https://docs.spring.io/spring-security-oauth2-boot/docs/current/reference/html/boot-features-security-oauth2-authorization-server.html

После правильной настройки конфигурация в zuul не так уж сложна в применении.yaml вы должны установить это как:

 security:
  oauth2:
    client:
      clientId: your_clientId
      clientSecret: your_clientSecret
      accessTokenUri: your_accessTokenUri
      userAuthorizationUri: your_userAuthorizationUri
    resource:
      userInfoUri: your_userInfoUri
      preferTokenInfo: true/false