2010-07-14 23 views
0

我試圖根據SMF用戶帳戶實現自己的OpenID端點。我基於phpMyOpenID和一些SMF授權代碼來創建我的代碼。OpenID在同一個OpenID端點上的不同登錄名之間有何區別

到目前爲止它工作正常。我可以使用端點在任何站點上登錄/註冊。如果我沒有登錄SMF,它會要求我的登錄名,如果該SMF登錄成功,它會接受它。

但是,它似乎不同於不同的SMF登錄。即另一個用戶報告說他嘗試使用X站點上的端點,使用他的SMF帳戶登錄並登錄到站點X上的用戶帳戶(我之前在該站點上註冊了OpenID端點)。

我想我必須以某種方式發送SMF登錄或使其以某種方式每SMF登錄唯一。因爲這可能是微不足道的,所以我想我會在這裏問 - 也許還有更多事情需要解決。

的代碼(只是PHP),如果你想看看,是在這裏: http://github.com/albertz/smf-openid-server

或者,也許只是描述我需要做的,使其獨特的每個SMF登錄。

我計劃的另一個項目是多人C++遊戲中的OpenID客戶端。主機可以選擇僅允許通過OpenID進行身份驗證的用戶進行登錄。另外我想讓只有某些人才能登錄。基於OpenID登錄獲取唯一字符串的常用方法是什麼?在這種情況下,我想到了類似http://{smf-openid-endpoint}/{smf-user}http://www.google.de/profiles/{google-user}。什麼是規範的方式來獲得這樣的字符串?

我想這個其他問題可能與我的主要問題有關,這就是爲什麼我把它也放在這裏。


也看到相關的問題:Is the identifier URL unique? What are the different terms?

回答

1

這似乎從我得到了最終用戶的第一個請求是checkid_setup。在該回復中,我可以在openid.identity字段中指定一個唯一的URL(我在我的問題中稱爲唯一字符串)。

我已經在我的代碼中完成了它,它似乎工作。即我可以輸入一般的OpenID端點URL(例如在SourceForge上),它會按照我在問題中提出的方式自動擴展它。

要回答我的第二個問題:似乎驗證的標識符URL本身是唯一的,所以可以使用它。因此,這有時看起來很神祕(例如在Google的情況下,它只是一些散列)。所以這可以在內部使用以區別不同的用戶。對於圖形表示,我可以顯示真實的用戶名或郵件地址,我也應該從OpenID身份驗證中獲得這些地址。