2015-11-06 82 views
1

我一直在嘗試瞭解OAuth2是如何工作的。起初我認爲花費一個額外的步驟交換認證代碼+客戶端密碼來訪問令牌是多餘的,爲什麼不直接讓服務器返回訪問令牌。爲此我找到了this explanation爲什麼我們需要客戶端ID和客戶端密鑰,而不僅僅是clientSecret?

然後讓我困惑的是,爲什麼它需要一個clientId和一個客戶端密鑰,而不是一個祕密?一個既可以宣稱也可以證明自己的祕密。客戶端應用程序可以在將用戶發送給服務器以授權自己訪問服務器資源時將其傳遞給服務器。

謝謝!

回答

0

想象客戶端用祕密簽署請求併發送簽名。服務器如何知道使用哪個祕密?推測服務器支持多個消費者。

0

客戶端ID在令牌舞的第一部分發送以識別客戶端。此ID在URL中以不安全的方式發送。即使在這個請求的authz服務器端,id也可能以authz服務器將用戶代理重定向到授權頁面的不安全方式公開。所以客戶端ID並不意味着是安全的,只是爲了識別客戶端。

只有在收到授權碼後(用戶授權後),客戶端,然後是否需要以更安全的方式獲得訪問令牌。這是通過TLS使用客戶端密鑰的地方。

0

您可以讓服務器直接返回訪問令牌。您需要請求隱式授權(response_type,值爲token而不是code)。

授權服務器直接返回訪問令牌。

此類授權旨在用於無法保留客戶機密或客戶機ID的基於用戶代理的客戶機(例如單頁網絡應用程序),因爲所有應用程序代碼和存儲均可輕鬆訪問。如果您的客戶可以保密,建議您使用更安全的授權類型。

相關問題