使用Keycloak和Spring Security与OIDC客户端协议时,当Keycloak SSO会话超时已经发生时,应用程序会话将不会过期 . 因此,如果用户在访问令牌过期后访问受Keycloak适配器保护的应用程序的任何部分,则Spring Security仍具有身份验证对象 . 但是当Keycloak适配器检查Access令牌是否处于活动状态时此时它将不会被激活,因此适配器(RefreshableKeycloakSecurityContext.java类)尝试使用它具有的刷新令牌获取新的Access令牌 . 由于刷新令牌在Keycloak中已失效,因此适配器将抛出

Refresh token failure status: 400 {"error":"invalid_grant","error_description":"Refresh token expired"}

因此,用户仍然可以导航和访问应用程序的任何部分,而无需进入登录页面以重新进行身份验证 .

任何提示/想法如何实现所需的行为,以便当Keycloak SSO会话到期时,用户将被重定向到登录页面并且Spring身份验证将失效?

Spring-Security: 4.0.4.RELEASE
Keycloak Spring Security Adapter: 3.4.2.Final
Keycloak Server: 3.4.3.Final