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

TRi*_*RiG 15 openid cross-domain openid-provider

例如:

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

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

在这种情况下,这个计划会起作用吗?

  • 设置example.comexample.net(以及任何后续添加)作为OpenID依赖方,仅接受OpenID登录id.example.org.
  • 设置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使用一种非常不同的方法.我认为他们有充分的理由吗?

Mrc*_*ief 1

总体而言,您的设置看起来不错。希望您已经了解了如何处理会话过期/超时。

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

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