Keycloak несколько сеансов для одного и того же имени пользователя
Я недавно настроил единый вход с помощью сервлет-адаптера Keycloak. Проблема в том, что у нас есть межсервисная связь, которая идет с BASIC-аутентификацией.
Раньше мы использовали аутентификацию JAAS, поэтому связь S2S была без сохранения состояния (без сессий).
С SSO/Keycloak это уже не так. Более того, каждый запрос REST создает новый сеанс Keycloak.
Я пытался найти конфигурацию или альтернативное решение без настройки и кодирования Keycloak, но не смог.
PS Из-за обратной совместимости я не могу изменить клиенты REST для переключения на BEARER или другие методы аутентификации.
У кого есть идея получше?
0 ответов
Я прочитал, что вы не можете перейти от основного к предъявителю. Но можете ли вы вообще отключить свою базовую аутентификацию от своих служб отдыха?
Я говорю это потому, что после этого вы можете переместить свою логику аутентификации в фильтр.
Вы можете создать Фильтр, который будет перехватывать все запросы, прежде чем они достигнут моей Службы Отдыха. Этот фильтр обрабатывает аутентификацию и, в случае успеха, переходит в состояние покоя, в противном случае возвращает 401. Пример кода:
public class RequestInterceptor implements Filter
{
if( (performAuth()) )
chain.doFilter(request, response);
else
// set status to HttpServletResponse.SC_SERVICE_UNAVAILABLE
}
// But you will have to find a way to exclude this class from authentication chain.
Попробуйте подумать в этом направлении, вы можете получить какое-то направление.