我在不同的子域上有三个面向客户端的 Web 应用程序(其中一个 Web 应用程序实际上有 700 多个不同的子域,它们一直在变化)。我编写了一个 oAuth 服务器,我打算用它来允许用户登录到这些系统中的每一个;这行得通,但是我已经开始遇到正在发生的事情和我希望在编写注销代码时实际行为之间存在差异。
我对单点登录的一些要求是:
- 如果在一个系统上登录,您将在所有系统上登录(显然)。
- 如果退出一个系统,您将退出所有系统。甚至跨子域。
- 如果您在两台不同的机器上登录,例如手机和台式机。在手机上注销时,请勿在桌面上注销。
我们已经编写了 oAuth 提供程序,我们将把它用于不与我们的域(API 等)耦合的项目,但我并不完全相信 oAuth 是满足上述要求的最佳解决方案。我想也许共享会话会更好。共享会话的想法将涉及存储在主域上的 cookie,该 cookie 包含有关当前登录用户的信息。
两种方法的优缺点是什么?您还有其他方法可以采取吗?是否存在需要考虑的安全风险?并发性和可扩展性的考虑?请帮忙!