“会话没有必需的客户端”是什么意思?

时间:2019-02-12 09:53:14

标签: keycloak

我有一个关于Keycloak 4.8.3的问题。

我正在使用Spring Security适配器通过密钥斗篷和启用的登录功能:记住我,来保护我们的Web应用程序。

用户从浏览器登录,然后重定向回Web应用。

我们的Web应用程序然后使用KeycloakRestTemplate在内部调用另一个由Keycloak保护的REST-API端点,因为我们还需要使用Web应用程序的同一用户来授权这些调用。

重点是:我想将授权令牌用于另一种REST-API服务方法。

一段时间后,REST-API调用失败,并显示以下错误消息:

ERROR RefreshableKeycloakSecurityContext Refresh token failure status: 400 {"error":"invalid_grant","error_description":"Session doesn't have required client"}

,并且密钥斗篷日志文件包含以下警告:

17:25:51,929 WARN  [org.keycloak.events] (default task-1) type=REFRESH_TOKEN_ERROR, realmId=EHotel, clientId=IBE, userId=f:8db533c4-9733-48d4-8b30-28a50954b7ad:khaendel, ipAddress=192.168.1.76, error=invalid_token, grant_type=refresh_token, refresh_token_type=Refresh, refresh_token_id=9fba841f-54bb-4c81-8f7b-6a7e1c5ab92e, client_auth_method=client-secret

我无法预测确切的时间,大概是15分钟后还是一个小时后。令牌过期设置如下: SSO会话空闲:15分钟 SSO会话时长:15分钟 SSO会话空闲记住我:1天 SSO会话Max Remember Me:1天 访问令牌寿命:5分钟

错误消息(会话没有必需的客户端)的含义是什么

我在做什么错?

远程调试显示: 看来,在keycloak服务器上是一个涉及客户端会话缓存(InfinispanUserSessionProvider),过了一会儿就会丢失信息。

我希望使用keycloak令牌以与我们安全的Web应用程序相同的用户身份验证另一个REST-API服务。但是由于出现错误消息,刷新令牌只能在SSO会话中使用。

1 个答案:

答案 0 :(得分:1)

Keycloak开发人员团队已确认,这是当前版本的Keycloak 4.8.3中的错误。 在较长的“记住我”会话期间,客户端会话必须有效。 此错误将在下一版本中修复。 Jira票在撰写本文时不可用。