4

我在 StackOverflow 上使用的 OpenID 与此处非常相似,以对我的用户进行身份验证。不过,我真正需要做的是让 OpenID 在我网站的所有子域中工作。

该站点的行为与 Kijiji 非常相似,因为每个区域都有自己的子域

  • 卡尔加里.example.com
  • toronto.example.com
  • vancouver.example.com
  • ETC

当用户登录“calgary”并随后登录“toronto”时,他们将被迫在提供者处“给予许可”,从而产生新的 OpenID 并导致新的登录。

我的应用程序“可以”在一个帐户下拥有多个 OpenID,但管理起来会很麻烦。

有没有办法让提供商链接到顶级域并随后在所有子域中工作?

我正在使用 DotNetOpenAuth。

我的想法是始终强制用户登录http://example.com,然后使用表单身份验证domain = ".example.com"来允许导航到所有子域。

4

1 回答 1

5

是的。将RealmASP.NET 控件或您的IAuthenticationRequest(如果您以编程方式执行此操作)上的属性设置为“https://*.example.com”。请注意,该方案可以是 http 或 https,但它必须匹配 ReturnTo 属性中的任何方案,该方案将(默认情况下)成为当前请求中使用的方案。

但是请注意,如果您有来自 Google 的现有用户,那么您的 Realm 的这一一次性更改将导致 Google 为您的用户生成全新的标识符,因此他们都将失去对其帐户的访问权限。因此,决定并始终保持一个 Realm 非常重要,否则您将不得不跳过主要的环节,以便以后在更改它时能够将您的用户绑定到他们的帐户。

但不要担心通配符本身。当您将 https://*.example.com 设置为您的领域时,与该模式匹配的所有单个站点都将获得相同的Google 标识符。

于 2010-12-30T04:28:42.557 回答