Я столкнулся с проблемой при попытке обменять код авторизации 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) или в базе данных?Как мне это сделать?