2011-02-03 70 views
4

我正試圖在我的網站上實現openID,並通過如Plaxo和SO上的問題閱讀。我目前能夠使用這些庫來驗證我的用戶。但我注意到,一些供應商,如當標識符中沒有用戶名時,如何識別OpenID用戶名?

我想實現類似Plaxo的,在那裏我將有許多對一個關係的系統帳戶。但是,如何區分使用像上面這樣的openID urls的用戶?我甚至看到,甚至有谷歌和谷歌配置文件分開。那麼,在用戶不提供用戶名的情況下,他們如何識別用戶,或者我應該說獨特的openID?

回答

3

OpenID的目的不是爲了暴露用戶的用戶名。您提供了一個經過驗證的URL作爲他們的身份,但該URL應被視爲不透明的字符串。

如果您需要,那麼您需要手動提示用戶或使用屬性交換(兩者都不安全,BTW)。

+0

+1。但是小修正:屬性交換與Sreg用戶名數據(兩者都可以被簽名)一樣安全 – timdream 2011-02-05 03:50:14

+0

所以我將以經過驗證的字符串作爲服務器身份。 – 2011-02-05 05:09:36

1

當您得到openid回覆時,會有一個參數「openid.identity」,它對每個帳戶都是唯一的。這是一個很長的半隨機字符串,所以它是沒有用的,用於顯示:

https://www.google.com/accounts/o8/id?id=AItOawnlHWwIas84v37... 

你可以嘗試生成的「暱稱」字段或電子郵件地址的本地部分一個不錯的顯示用戶名基地,如果提供這些屬性。而最後的可能性問用戶。