2013-12-13 83 views
4

我正在編寫一個針對Google API的本機應用程序。在註冊我的應用程序後,儘管它明確指定爲本機,但Google Developers Console爲我提供了一個客戶機密鑰。Google爲什麼要爲本機應用程序提供客戶端密鑰?

據我瞭解OAuth 2.0協議,本機應用程序不應該有客戶端的祕密,因爲他們不能保證其祕密。 Google是否錯誤地實施了OAuth 2.0?我應該如何繼續?

回答

4

你是對的,客戶端的祕密在一個本機應用程序中從保密的角度來看並不是非常有用。我懷疑它主要是爲了與Web應用程序流保持一致。

但它至少有一個有用的功能......原始開發者可以隨時重置它,有效地撤銷綁定到該客戶端ID的所有刷新令牌。

+0

這是我第一次使用OAuth,所以我不確定在應用程序中嵌入客戶端密鑰的安全含義是什麼。一旦我這樣做,我就會向全世界揭示它,並且可以進行逆向工程。我應該多擔心這個問題?攻擊媒介有多少知道客戶端祕密會給潛在的攻擊者帶來什麼? –

+3

要在本機應用程序中獲得訪問令牌(這是您最終用來訪問API的內容),您需要向Google提供刷新令牌(這是Google在原始OAuth舞蹈結束時提供的內容)爲用戶存儲)和您的客戶機密。把它燒成你的應用程序是很好的(知道它可以被反向設計) - 它自己不能訪問任何數據 - 它總是與刷新令牌一起使用。 – aeijdenberg

相關問題