2015-02-07 38 views
2

出於好奇我想知道爲什麼client_idclient_secret在OAuth 2.0中的雙腿身份驗證中是必需的?OAuth 2.0中的雙腿身份驗證中client_id和client_secret的用途

我正在使用grant_type =密碼並在post方法中發送用戶名&密碼,但在此我收到錯誤消息,在請求正文或標頭中找不到客戶端憑據。當我通過client_idclient_secret我能夠獲得access_token。

我想了解爲什麼client_idclient_secret是2記錄身份驗證所必需的。我認爲這是我可以解決我的困惑的最佳地點。

更具體地說,我有一個移動應用程序,它通過Web服務API與服務器進行通信,並且我們沒有任何第三方使用,這就是我們使用雙腿身份驗證的原因,但我很困惑使用client_idclient_secret。請原諒,如果我問一個愚蠢的問題,但對我來說是一個很大的困惑。

回答

2

客戶端ID和客戶端密鑰

當您註冊第三方應用程序,你會收到上面的兩個。 客戶端ID被認爲是公開的,用於構建登錄URL。客戶祕密必須保密。如果部署的應用程序無法保密祕密,例如Javascript或原生應用程序,則不會使用該祕密。

我有一個完美的文章對您:Oauth Simplified

希望這會消除你的困惑!

+0

謝謝你的答案。在我的情況下,我們的應用程序沒有與社交媒體簽署。我們通常會要求用戶使用他們的電話或電子郵件進行註冊,並要求他們創建自己的密碼。您可能會認爲我們爲什麼需要OAuth,我們需要確保我們的Web服務api,這就是爲什麼我們使用OAuth 2.0使其安全,因此沒有授權令牌,世界上沒有人可以訪問api。現在我的問題是在我的情況下,client_id和client_secret的用法是什麼?我應該重寫這兩件事情,只使用用戶名和密碼來生成授權令牌嗎? – LeoMobDev 2015-02-07 08:17:02

+0

您可以使用基本身份驗證或摘要身份驗證作爲替代。你不必使用OAuth。 – Shreejibawa 2015-02-07 08:30:14

0

您使用的所謂的資源所有者密碼憑證(ROPC)授權中不需要客戶端身份驗證,但它是可選的。該規範允許祕密客戶端(即具有祕密的客戶端)和公共客戶端(即沒有客戶端祕密的客戶端),如:https://tools.ietf.org/html/rfc6749#section-4.3.2中所述。顯然,您的授權服務器已配置或硬連線需要它。

如果是硬連線,這可能是由於規範的過於嚴格的解釋,這裏的答案解釋:Resource Owner Password Credentials Grant - Public Client