相同用户名的Keycloak多个会话

时间:2018-10-05 15:49:17

标签: single-sign-on basic-authentication keycloak session-management redhat-sso

我最近使用Keycloak Servlet适配器配置了SSO。 问题在于我们具有服务到服务的通信,该通信与BASIC身份验证配合。
以前,我们使用JAAS身份验证,因此S2S通信是无状态的(没有会话关联)。

使用SSO / Keycloak不再是这种情况。此外,每个REST请求都会创建一个新的Keycloak会话。

我试图找到没有Keycloak定制和编码的配置或替代解决方案,但是我找不到。

P.S。由于向后兼容,我无法更改REST客户端以切换到BEARER或其他身份验证方法。

有人有更好的主意吗?

1 个答案:

答案 0 :(得分:0)

我了解到您不能从基本更改为承载者。但是,您可以完全从其他服务中关闭基本身份验证吗?

我说这是因为这样做之后,您可能可以将身份验证逻辑移至过滤器。

您可以创建一个Filter,该请求将在所有请求到达我的休息服务之前将其拦截。该过滤器处理身份验证,并基于成功进行休息服务,否则返回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. 

尝试按照这些思路思考,您可能会得到一些指导。