使用OpenID登录多个域:此计划是否可行?

时间:2011-06-23 14:07:43

标签: openid cross-domain openid-provider

例如:

  • 我们在两个域上运行了两个社区网站(称为example.comexample.net)。
  • 我们希望以后能够将其扩展到更多域名。
  • 我们希望允许多种类型的登录(OpenID,Facebook,Twitter,标准用户名/密码)。
  • 我们希望登录到某个站点的用户自动登录到其他站点。

换句话说,它有点类似于StackExchange网络。

在这种情况下,这个计划会有效吗?

  • example.comexample.net(以及任何后续添加内容)设置为OpenID依赖方,仅接受来自id.example.org的OpenID登录。
  • 设置example.comexample.net以便在您第一次访问时执行OpenID回复立即请求,这样,如果您已登录id.example.org,则会立即自动执行登录您正在访问的网站。如果您没有登录,他们应该设置一个cookie,以便在每次页面请求时保存它们。
  • id.example.org设置为OpenID提供者和使用者。它还应该使用Facebook和其他身份提供商,并允许标准的用户名/密码访问。 (多个登录方法可以附加到一个帐户。)
  • 注销时,只需更改数据库中的身份验证令牌即可。用户仍然会有cookie,但它们将毫无意义。因此,用户可以同时退出所有站点。可以一次针对一个用户存储多个身份验证令牌(并且每个站点应该是不同的),以便用户可以在一个浏览器中注销但仍然可以在另一个浏览器中登录。注销总是注销所有网站。

我能看到的唯一问题是:

  • 有人访问example.com。设置了“未登录”cookie。
  • 然后Zie进入example.net。同上。
  • 然后Zie登录,继续浏览example.net
  • Zie然后回到example.com,由于“未登录”cookie,未针对id.example.org进行检查,因此未登录。
  • 但是,只要zie点击“登录”按钮,zie就会登录。

我不认为这是一个主要问题。

总的来说,我认为这是一个非常好的系统。我只是想看看它的评论。我有没有预料到的问题?它会是马车还是慢车? StackExchange使用一种非常不同的方法。我认为他们有充分的理由吗?

1 个答案:

答案 0 :(得分:1)

总的来说,您的设置看起来很好。希望您已经涵盖处理会话到期/超时。

我看到的唯一问题(更不方便)是需要明确点击“登录”。就个人而言,我更喜欢自动登录(如Google,MS和其他主要网站)。

SO会检测您是否有有效登录信息并显示要求刷新页面的消息。虽然有点烦人,但它至少告诉我我已经登录了。