在使用 SSO 在不同的“Web 应用程序”之间进行集成时,用户可能会在这些应用程序之间来回切换。当用户在这些应用程序之间导航时,除了在用于 sso 的身份提供者处创建的会话之外,还会在每个应用程序上创建一个本地会话。
因此,问题是当应用程序具有不同的会话超时时,会导致用户体验受损。当用户在另一个应用程序上工作时,会话超时发生在一个应用程序中。当导航回用户之前访问过的应用程序时,会发生错误。这让用户感到困惑,因为他们不知道他们正在处理不同的应用程序。
避免该问题的一种方法是拥有一个每个应用程序都可以访问的“全局会话”对象。当用户访问任何受保护的资源时,应用程序会检查全局会话是否存在并在处理请求之前更新其时间戳。本地会话永远不会过期(或有很长的超时)。但是,当用户注销时,全局会话对象将被逐出,并且所有应用程序都会注销。
由于以下原因,这似乎有点沉重:
- 全局会话对象成为单点故障
- 对全局会话对象进行“进程外”检查并更新每个 受保护请求的访问时间戳的性能
关于如何使这项工作的任何其他想法?