Поток кода авторизации OAuth с серверами аутентификации с балансировкой нагрузки - PullRequest
0 голосов
/ 19 апреля 2019

Я столкнулся с проблемой при попытке обменять код авторизации OAuth на токен.

Моя настройка такова:

  • Клиент OAuth (случается, это приложение Angular)
  • Два экземпляра моего сервера авторизации Spring OAuth, функционирующего в качестве провайдера идентификации, работающего за балансировщиком нагрузки с использованием стратегии балансировки по кругу
  • Keycloak (функционирующий как Identity Broker)

Последовательность событий при входе в систему с использованием пользователя из моего поставщика удостоверений такова:

  • Пользователь получает доступ к защищенной странице и перенаправляется на Keycloak, поскольку токена нет.Keycloak перенаправляет к своему провайдеру идентификации по умолчанию, который возвращает страницу входа в систему
  • Пользователь входит в систему. POST выполняется для URL / логина провайдера идентификации
  • Вход в систему успешен.Пользователь перенаправляется на URL-адрес провайдера идентификации / oauth / authorize.Здесь провайдер идентификации генерирует код авторизации и возвращает перенаправление на Keycloak.
  • Браузер пользователя перенаправляет на Keycloak с кодом авторизации.Keycloak пытается обменять код авторизации для токена, вызывая конечную точку / oauth / token провайдера идентификации.
  • Сбой вызова конечной точки IdP / oauth / token, потому что экземпляр IdP, обрабатывающий запрос, ничего не знаетпо поводу кода авторизации.Код авторизации был выдан другим экземпляром IdP.

Можно ли в Spring сохранить сгенерированные коды авторизации в каком-либо кеше (Redis) или в базе данных?Как мне это сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...