子域上的单个OpenID

Cha*_*ell 4 openid dotnetopenauth openid-provider

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

该网站的行为与Kijiji大致相同,因为每个区域都有自己的子域

  • calgary.example.com
  • toronto.example.com
  • vancouver.example.com
  • 等等

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

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

有没有办法让提供商链接到顶级域,然后跨所有子域工作?

我正在使用DotNetOpenAuth.

我认为我总是强迫用户登录http://example.com,然后使用表单身份验证domain = ".example.com"来导航到所有子域.

And*_*ott 5

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

但请注意,如果您拥有来自Google的现有用户,则您对Realm的一次性更改将导致Google为您的用户生成全新的标识符,因此他们将无法访问其帐户.因此,有必要一直决定并保留一个Realm,或者您必须跳过主要的环节才能在以后更改时将用户绑定到他们的帐户.

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