Маршрут Zuul к обеспеченному микросервису приводит к ответу 401 - PullRequest
0 голосов
/ 07 января 2020

Я создал прокси-сервер Zuul, который направляет запрос к защищенной конечной точке в микросервисе (basi c auth).

Мой прокси-сервер Zuul работает на порту 8888.

Мой защищенный микросервис имеет конечную точку / api / foo с аутентификацией по имени пользователя: паролем через Spring Security. С идентификатором службы, равным secure-service.

Теперь, когда я получаю доступ к http://localhost: 8888 / secure-service / api / foo , браузер запрашивает у меня имя пользователя и пароль. (доказательство того, что это действительно маршруты к защищенному сервису). Но потом, после входа, он просто продолжает спрашивать мои полномочия. я также попытался получить к нему доступ через curl, curl http://username:password@localhost:8888/secure-service/api/foo и получил ответ 401.

Почему это происходит?

Затем я попытался удалить зависимости безопасности Spring и настройки на моем защищенном сервисе, и все работает нормально. Но я действительно хочу иметь базовую c аутентификацию.

Спасибо за чтение.

1 Ответ

0 голосов
/ 07 января 2020

я наконец нашел ответ :) В Zuul есть свойство конфигурации, которое называется zuul.sensitive-headers

Это свойство представляет собой набор строк, содержащих заголовки, которые не будут включены для передачи на микросервисы. И в настоящее время Spring Cloud Zuul (версия 2.2.1.RELEASE) по умолчанию устанавливает эти 3 значения.

Cook ie, Set-Cook ie, Авторизация

Для любви к Боже, они считают Авторизацию одним из чувствительных заголовков, поэтому вы будете получать 401 несанкционированный ответ всякий раз, когда Zuul пытается маршрутизировать на защищенный микросервис.

Решение состоит в том, чтобы просто удалить Авторизацию в свойстве Config в вашем приложении Zuul.

zuul.sensitive-headers=Cookie,Set-Cookie

Надеюсь, это поможет.

...