我们使用 Okta 作为 Spring Boot 应用程序的身份提供者。使用授权代码流程,一旦发生重定向和成功登录,我们就建立 Spring 会话。本质上,我们管理两个会话:Okta(持续 8 小时)和 Spring(持续 15 分钟)。当 Spring 会话过期时,用户会自动从应用程序中注销,并且他们会丢失 Okta 状态。如何在不重新发起 /authorize 请求的情况下检查 Okta 身份验证状态?我们需要在后端处理这个问题,而不提示用户再次进入 Okta 登录页面。
您可以在后端实现会话管理机制,使用 Okta 的会话管理 API 定期验证 Okta 会话状态。
确保 Spring 会话超时设置为比 Okta 会话超时更短的持续时间。这可确保用户在 Okta 会话过期之前从 Spring 应用程序注销,从而防止两个会话之间出现任何不一致。
如果 Okta 会话仍处于活动状态,您可以选择通过更新会话过期时间或执行会话刷新来续订用户的 Spring 会话。
这种方法允许您将 Spring 会话与 Okta 会话同步,并提供无缝的用户体验。