1

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

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

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

PS 由于向后兼容性,我无法将 REST 客户端更改为切换到 BEARER 或其他身份验证方法。

有人有更好的主意吗?

4

1 回答 1

1

我读到了您不能从basic更改为bearer的观点。但是你能从你的休息服务中完全关闭你的基本身份验证吗?

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

您可以创建一个过滤器,它会在所有请求到达我的 Rest Service 之前拦截它们。此过滤器处理身份验证,并根据成功继续进行休息服务,否则返回 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. 

试着沿着这些思路思考,你可能会得到一些方向。

于 2019-05-03T12:48:38.727 回答