5

我正在使用 Keycloak 通过 OIDC 为属于同一领域的一堆应用程序提供 SSO。所有这些应用程序都是使用授权代码流的机密客户端。他们使用 JSP 作为视图,所有必要的重定向都由Spring Boot 和 Spring Security Keycloak 适配器管理。

成功登录后,我可以正确地从一个应用程序切换到另一个应用程序(SSO)。对于它们中的每一个,都会生成一个 HttpSession,其中包含一个org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken. 这个类有一个详细信息对象 ( ) 和一个包含访问令牌 ( )、id 令牌 ( ) 和刷新令牌 ( )SimpleKeycloakAccount的 securityContext ( ):RefreshableKeycloakSecurityContexttokenStringidTokenStringrefreshTokenString

在此处输入图像描述

包含的访问令牌有 5 分钟的过期时间。奇怪的是,在这段时间过去之后,虽然我仍然在 Spring Boot 应用程序中正确地进行了身份验证,但我检查了访问令牌从未刷新过

我需要一个有效的访问令牌,因为其中一些应用程序调用 REST 服务,使用相同的适配器和仅承载身份验证进行保护。问题是我最终拥有一个过期的访问令牌并且必须(手动?)处理它的过期。

有没有办法让适配器在访问令牌过期时刷新它,或者我们希望以编程方式这样做?

你能展示怎么做吗?

4

0 回答 0