我使用的OpenID与Stackoverflow上的OpenID相同来验证我的用户。不过,我真正需要做的是在我网站的所有子域中都有OpenID工作。

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

  • calgary.example.com
  • toronto.example.com
  • Vancouver.example.com
  • ETC

当用户登录“卡尔加里”并随后将其登录到“多伦多”中时,他们将被迫在提供商处“授予许可”,从而导致新的OpenID,并导致新的登录名。

我的应用程序“可以”在一个帐户下具有多个OpenID的菜单,但这会变得很麻烦。

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

我正在使用dotnetopenauth。

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

有帮助吗?

解决方案

是的。设置 Realm ASP.NET控件或您的属性 IAuthenticationRequest (如果您以编程方式进行操作)到“ https:// gy.example.com”。请注意,该方案可以是http或https,但是 必须 匹配您的返回属性中的任何方案,该方案将(默认情况下)是当前请求中使用的方案。

但是请注意,如果您有Google的现有用户,那么您的领域的一次更改将导致Google为您的用户生成全新标识符,因此他们都将失去对帐户的访问权限。因此,一直以来决定并保留一个领域非常重要,否则您必须跳过主要的篮球,以便以后更改时将用户绑定到他们的帐户。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top