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. 

Попробуйте подумать в этом направлении, вы можете получить какое-то направление.

Другие вопросы по тегам