今天經過真正的大腦彎曲會議後,我覺得我很瞭解三腳OAuth身份驗證。我仍然無法理解的是使用用戶ID。到目前爲止,我看到的例子都似乎只是在示例腳本的頂部任意分配一個用戶標識並去。這讓我困惑。瞭解在三方OAuth會話中使用用戶標識嗎?
我見過的大多數示例代碼似乎圍繞使用用戶標識和OAuth服務器的使用者密鑰來管理OAuth「會話」的概念(在引號中,因爲我沒有試圖將該術語與一個瀏覽器「會話」)。例如,我見過的數據庫示例代碼根據用戶標識和消費者鍵字段值存儲和檢索涉及的標記和其他信息。
我現在是在不確定性,其中的理解一些競爭片段競爭和相互衝突的那種狀態:
1)如果我的OAuth的會議細節記錄或「OAuth的店」查找的理解是正確的,通過消費者密鑰和用戶ID字段,那麼是否並非要求我爲使用與OAuth服務器連接的應用程序的每個用戶擁有完全不同的用戶ID?
2)如果#1是正確的,那麼我該如何避免爲不同的用戶創建自己的用戶帳戶,我試圖避免這種情況?我正在嘗試編寫用作啓用OAuth服務的前端的軟件,因此我不需要擁有自己的用戶記錄和伴隨的維護難題。相反,我只是讓OAuth服務器處理難題的結尾。然而,似乎後來我的方法的缺點是,我不得不重新授權用戶的每個會話,因爲沒有我自己的持久用戶帳戶/ ID我無法查找以前授予的「良好撤銷」訪問令牌,正確?
3)令我困擾的是,我已經閱讀了一些OAuth服務器,它們在請求未授權令牌期間不允許傳遞動態指定的回調URL,從而使用戶密鑰和用戶ID回傳給自己不可能。相反,當您註冊爲開發人員/消費者時指定回調URL,就是這樣。幸運的是,我正在處理的OAuth服務器確實允許使用該功能,但是如果我正在處理那個不支持的功能,那麼這不會引發巨大的猴子扳機來使用使用消費者密鑰和用戶ID對的整個想法索引OAuth會話詳細信息?
你說得對。我將最終得到至少一個用戶ID和PIN。關於靜態回調URL安全的好處。一個問題。你說「如果一個邪惡的人盜走了一個GreatApp的消費者鑰匙」,但是他們是不是也必須擁有這個祕密?我希望如此,因爲我已經看到示例代碼,他們建議將它作爲明顯可見的GET url參數傳遞迴您的回調URI。例如,請參見標題爲:對OAuth的PHP樣品中「第3步獲取訪問服務器」:http://code.google.com/p/oauth-php/wiki/ConsumerHowTo – 2011-04-20 13:51:22
是的,你說得對,我應該說消費者的密鑰和消費者的祕密,因爲只有與密鑰本身,沒有太多可以做:) – middlehut 2011-04-21 06:07:33
@Lyuben,是不是隻有提供者需要用戶ID(這聽起來合乎邏輯),但也是正確的客戶?因此,客戶端(使用OAuth作爲登錄系統)需要先創建一個用戶(帶有ID),然後才能通過OAuth服務器成功進行身份驗證。當身份驗證失敗或未授予訪問權時,使您擁有大量空的用戶帳戶。這使得很難使用OAuth作爲登錄系統,而OpenID則更好。 – Lode 2012-08-27 14:58:02