Stack Overflow的SSO模型如何工作?

时间:2011-12-07 18:49:16

标签: cross-domain single-sign-on

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

  1. 点击页面顶部的用户名
  2. 滚动到页面底部,然后点击另一个“帐户” Stack Overflow除外(例如SuperUser)
  3. 如果你看,你仍然以用户身份登录。特别是你。

    这是一件有趣的事情,我们可以将这一事实投票 堆栈传递cookie,因为它们使交叉域无效,这就是问题 他们究竟做了什么来保持您登录跨域的问题? 它是图像技巧(我听说使用GIF来传递信息) 它是否与OpenID或其他完全相关。

    我知道有多种SSO解决方案,例如JOSSO,OpenSSO, CAS,Shibboleth和许多其他人。我非常欣赏无缝的本质 如果有人知道他们的实现,那么Stack Overflow就有了好奇心。

2 个答案:

答案 0 :(得分:2)

他们不共享凭证信息。您必须在每个站点上单独登录。如果您注销超级用户,您仍将登录stackoverflow。

查看您的Cookie,每个域名都有一个名为usr的Cookie。

答案 1 :(得分:0)

也许早在2011年,stackexchange没有这个功能,但现在它确实存在。 如果您登录stackoverflow.com然后转到serverfault.com并点击“log in”,您将自动登录(假设您是stackoverflow.comserverfault.com的成员{1}})。

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

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