Я создал два проекта в OpenShift.
browser ---> apps/router ---> apps/gw ---> apps
\ \
\ (/auth) \---> kc/router ---> kc
\ ^
\-----------------------------------/
(kc login page)
Первый проект ( apps ) содержит приложение микросервиса, а также шлюз, реализованный с использованием прокси Netflix Zuul. Второй проект ( k c) имеет работающий экземпляр KeyCloak, который также может быть доступен извне по настроенному маршруту.
Zuul-прокси в apps имеет маршрут от / auth до kc / auth .
Пользовательский интерфейс использует для аутентификации адаптер KeyCloak. Когда я звоню apps / ui , получается SPA, и меня перенаправляют на apps / auth для аутентификации. После ввода имени пользователя / пароля меня следует перенаправить обратно в интерфейс, но он не работает. Я получаю страницу с ошибкой, URL которой указывает на k c. В журнале KeyCloak я получаю следующую запись:
10:15:24,969 WARN [org.keycloak.events] (default task-2) type=LOGIN_ERROR, realmId=NUSS, clientId=null, userId=null, ipAddress=10.3.47.12, error=invalid_code
Из документации KeyCloak я узнал, что с настройкой прокси-сервера что-то не так. Когда я звоню apps / auth / realms / master / .well-known / openid-configuration , все URL-адреса указывают на k c. В разделе документа о конфигурации прокси-сервера говорится, что этот ответ должен содержать URL-адреса apps .
. Я думаю, что маршрут к KeyCloak настроен в k c заменяет заголовок x-forwarded-host и другие заголовки прокси на k c вместо того, чтобы просто оставить заголовки, уже установленные в apps . Я уже подтвердил, что запрос о выходе из прокси Zuul содержит правильные заголовки перенаправления прокси.
Теперь у меня есть несколько вопросов:
- Что мне нужно сделать, чтобы KeyCloak работал в отдельном проект?
- Мой анализ в любом случае корректен?
- Как в конечном итоге настроить маршрут в k c, чтобы не заменять заголовки прокси?
- Есть ли в конечном итоге лучшая практика, как это сделать?