2009-12-09 70 views
3

我使用django_openid_auth模块,并将其配置为自动为新的OpenID创建新的用户帐户。这使得“注册”过程非常简单,但我有点担心,由于Google生成OpenID令牌的方式,它可能会意外地为现有用户创建一个新帐户,给他们留下原始数据的印象帐户已经丢失。Google如何生成其OpenID claims_id标记?

据我所知,Google会为不同的域名生成不同的声明ID令牌。这是www.site.com和site.com将创建两个不同的标记,因此在我的系统中创建两个帐户。我通过将www.site.com重定向到site.com解决了这个问题。

是否还有其他需要注意的问题?任何人都可以向我指出Google用于生成ID的一些细节的方向吗?

回答

4

From the docs

openid.realm

认证的区域。标识最终用户被要求信任的域。 (例如:“http://*.myexamplesite.com”)该值必须与openid.return_to中定义的域一致。如果此参数未定义,Google将使用openid.return_to中引用的网址。

在Google联合登录页面上使用领域的值来向用户标识请求网站。它也用于确定Google返回的持久用户标识的值。

+0

所以通过URL,我假设包含路径,而不仅仅是域?这可以解释它,因为return_to可能是网站的深层链接... – Tom 2009-12-10 00:43:20

+0

如果我现在添加领域,是否会混淆Google生成的现有ID? – Tom 2009-12-10 01:20:20

+0

好吧,通过django_openid_auth代码挖掘,我可以看到它确实将openid.realm设置为正确地位于网站/域的根网址。 – Tom 2009-12-10 02:07:49