Фильтр шлюза API zuul

У меня возникает проблема, когда я пытаюсь получить доступ к другому REST API (зарегистрированному в маршруте ZUUL) из предварительного фильтра zuul, вызов становится рекурсивным, т.е. он запускает мой код предварительного фильтра снова и снова. Мой вариант использования выглядит следующим образом:

  1. В методе Zuul PreFilter run() я проверяю токен, переданный в заголовке.

  2. После проверки токена я вызываю одну службу отдыха (службу определения местоположения пользователя), чтобы получить сведения о пользователе. Моя служба определения местоположения пользователя зарегистрирована в ZUUL, как показано ниже:

    user-location-service:
      path: /userLocationService/**
      url: http://localhost:9002
    

Проблема в том, что код проверки токена JWT запускается снова и снова. Не могли бы вы предложить какое-нибудь решение, в котором я могу применить службу Userlocation вызова, чтобы код PreFilter не запускался снова и снова?


person dhiraj singh    schedule 29.03.2017    source источник
comment
Можете ли вы сказать мне, почему вы используете предварительный фильтр для проверки. Вы используете OAuth 2.0?   -  person wthamira    schedule 04.04.2017
comment
Нет, Thamira ... Мы проверяем только токен JWT в предварительном фильтре.   -  person dhiraj singh    schedule 05.04.2017
comment
baeldung.com/spring-security-oauth-jwt   -  person wthamira    schedule 06.04.2017


Ответы (2)


Ваша служба определения местоположения пользователей зарегистрирована в Зууле. Итак, ваш фильтр будет выполняться всегда, когда вы попадаете в бесконечный цикл.

Здесь есть два подхода:

  • Не переходите снова к шлюзу и звоните в службу определения местоположения пользователя напрямую.
  • ИЛИ, создайте правило фильтрации в своем фильтре аутентификации ZUll, чтобы не учитывать службу определения местоположения пользователя. Вы можете использовать контекст URL-пути, чтобы исключить этот маршрут для выполнения
person Rafael Manzoni    schedule 31.03.2017
comment
Спасибо за ответ Рафаэль. Да, вы правы, мы выбрали первый вариант в качестве своего решения. - person dhiraj singh; 02.04.2017
comment
когда мы используем 1st, мы не используем динамический хостинг. - person wthamira; 03.04.2017

вам нужно разрешить sensitiveHeaders.

     zuul:
        routes:
            resource:
                path: /resource/**
                url: http://localhost:8002/
                sensitiveHeaders: Cookie,Set-Cookie
person wthamira    schedule 02.04.2017
comment
проблема здесь в том, что zuul не дает разрешение на отправку заголовка авторизации. SensitiveHeaders дает это разрешение. - person wthamira; 03.04.2017