2011-04-09 57 views
2

我正在嘗試使用兩腳oauth來允許移動客戶端登錄到我創建的api,但是我無法完全理解適當的工作流程以及所有的教程似乎都說有些不同。雙腿OAuth工作流

從我在雙腿版本中讀到的oauth消費者密鑰和消費者密鑰專門分配給用戶,並且不使用這些令牌。因此,當用戶登錄時,他們(或他們的設備)必須呈現他們的消費者密鑰和祕密,並且我們可以使用它來驗證他們的身份。但那又如何?客戶端設備是否收到他們用來訪問API的令牌,或者他們是否在每次請求時都發送消費者信息?

而用戶只能被期望記住一個用戶名和密碼,我們如何從客戶端設備上的用戶名和密碼到用戶密鑰和祕密發送到服務器?

回答

0

對於每個客戶端設備,您不應該擁有使用者密鑰/密鑰對。 「消費者」的OAuth概念是使用API​​向您進行身份驗證的特定站點或開發人員。誰在創建用戶名/密碼對?這些特別是您的用戶帳戶,還是您希望用戶能夠通過雅虎,Google等帳戶登錄您?

無論如何,我希望用戶有一個用戶名和密碼,而不是消費者密鑰和消費者密鑰。

+0

是的,我們希望讓用戶專門爲我們的服務創建用戶名/密碼,我們並不想與Google,Yahoo等進行整合。是的,我們想使用用戶名和密碼,但不確定他們在oauth中扮演什麼角色。我見過的示例oauth驗證實現都沒有用密碼做任何事情。 – Michael 2011-04-10 00:44:06

+0

聽起來好像你想要用戶名和密碼,然後,而不是OAuth。您希望從OAuth獲得什麼?有關您的架構的更多信息可能會有幫 – justarobert 2011-04-10 03:09:04

+0

我對於雙腿OAuth還不是很熟悉,但一般來說使用OAuth的一個主要優點是您永遠不必存儲用戶的實際用戶名和密碼,而是存儲某種OAuth憑據(例如鍵/密鑰)。如果用戶的移動設備被盜,他們可以使用用戶名/密碼登錄您的網站,並取消對設備上存儲的OAuth憑據的授權,所以現在小偷無法使用該設備登錄。 OAuth憑證也可以帶有有限的權限,所以即使它們被入侵,也沒有人能夠更改密碼。 – heavi5ide 2011-05-05 07:05:34

0

雙腿OAuth會刪除單獨的authN/authZ服務器,該服務器會直接與客戶端交談,該客戶端以其他方式存在於三方OAuth中。它肯定涉及(訪問)令牌。客戶端設備將收到一個令牌並可以使用該令牌,直到過期。

此設置的優點是您不必擔心每個API調用的client_id/secret的安全性。在每次呼叫中發送client_id/secret都是基本身份驗證,不推薦使用。相反,通過使用OAuth,您只需要擔心用於獲取令牌的API調用的client_id/secret的安全性(例如,每個令牌的生命週期一次)。如果令牌受到損害,則它具有TTL,而client_id/secret不具有。

提供自己的用戶憑證的最終用戶不知道client_id/secret。預計客戶端應用程序將處理令牌的client_id/secret的協商。