2009-12-09 35 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