Stack Overflow的SSO模型如何工作?



很好奇Stack Overflow是如何跨域使用单点登录的。我相信这是Apache最有可能发生的事情,因为cookie跨域失败。如果你不知道我在说什么,这里有一个很好的例子。

  1. 点击你的用户名一直在页面的顶部
  2. 滚动到页面底部,点击另一个"帐户"除了Stack Overflow(例如SuperUser)

如果您查看,您仍然以用户身份登录。特别是你。

这是一件有趣的事情,我们可以投票排除这个事实堆栈传递cookie,因为它们跨域无效,这就需要问题是他们到底做了什么让你在跨域登录?是图像技巧(我听说过用gif传递信息)吗?它是否与OpenID或其他东西完全有关。

我知道有多种SSO解决方案,如JOSSO, OpenSSO,CAS, shiboleth和许多其他的。我很欣赏这种天衣无缝的感觉Stack Overflow有,只是好奇是否有人知道他们的实现。

它们不共享凭证信息。你必须分别登录每个网站。如果你退出超级用户,你仍然会登录到stackoverflow。

检查您的cookie,每个域都有一个名为usr的cookie

也许在2011年的时候stackexchange还没有这个功能,但是现在它已经存在了。如果你登录到stackoverflow.com,然后去serverfault.com,点击"log in",你将自动登录(假设你是stackoverflow.comserverfault.com的成员)。

这是通过Ajax、服务器端加密和时间戳实现的。所以没有魔法。

有一个特殊的域stackauth.com跟踪stackexchange SSO与Ajax请求,如:https://stackauth.com/auth/global/read?request=8mxxNKQLxiYWd01AQO7D24eF9YSzd62Q5MyLlZhLmdzh0qGz6sOVlJAyC3oj%2B5b4PeVEH8J4x51g0oyiKi2FMQ%3D%3D& nonce = YZRsUwAAAAAMvr % 2 f34zkmoa % 3 d % 3 d

相关内容

  • 没有找到相关文章

最新更新