2013-09-16 111 views
3

根據the Google Drive SDK documentation,您需要使用您的Google帳戶註冊您的自定義應用程序以獲取client-idclient-secret的信息。然後,您可以使用它們爲您的用戶構建鏈接以獲取訪問/刷新標記。Google Drive SDK - 客戶端密鑰 - 它有多祕密?

據對oAuth一些介紹導遊我讀過,客戶機密信息應該偷偷在某些情況下,在一些不被保留。我正在用Java構建一個Maven插件,在這種情況下,您似乎很難保持這個值。

可以將我的代碼作爲開放源碼發佈,包括客戶機密信息嗎?或者這是否意味着我面臨潛在風險?如果它不好,那麼我怎麼能讓其他人在不透露客戶祕密值的情況下使用插件?

回答

3

查看OAuth 2.0 for Installed Applications谷歌的文檔:

的谷歌的OAuth 2.0端點支持已安裝的設備(例如手機,蘋果機,PC)上的應用程序。這些應用程序分發給各個機器,並假定這些應用程序不能保守祕密。

你應該罰款釋放的祕密。唯一的風險是一些流氓用戶「燒掉」了所有的配額。如果它出現,Per-user quotas可能有助於緩解這個問題。

1

釋放沒有令牌的代碼並解釋如何使用您的代碼可以獲得它們自己的代碼。 否則,人們可能會濫用您的或將其複製到其他項目中。 否則,您可以刻錄您的配額,並且如果它被複制到其他應用程序中,那些將顯示爲您的權限對話框彈出給用戶(使用您的應用程序名稱和徽標)

+0

這似乎是「如何釋放代碼」這個問題的一部分,但如何分發JAR文件(將其上傳到Maven存儲庫)以便人們可以使用該插件?據我所知,他們可以打開JAR文件,對這些類進行逆向工程並讀取祕密令牌。我如何防止他們這樣做? –

+0

您是否建議我應該要求普通用戶(他們每個人)在Google Drive上註冊他們自己的應用程序,並將該客戶端ID和客戶端密鑰值作爲參數提供給插件?這似乎是一種安全但麻煩的方式。 –

+0

我以爲你在服務器上保密。對於已安裝的應用程序,oauth流程是不同的,並且不使用祕密。如果你必須使用它們,我懷疑任何人都會因爲免費創建你自己的(除非它是一個付費的控制檯項目,因此你獲得更多的配額)而從中解脫出來。我所指的是人們從你發佈的代碼中複製/粘貼而不知道它,並將它用於他們自己的應用程序。 –

2

這取決於您釋放的內容。如果你正在製作一個其他人將用來構建應用程序的庫,那麼他們應該註冊&將自己的客戶機密用於他們自己的應用程序。

如果你有一個你正在發佈的應用程序,並且也想發佈源代碼,因爲你是一個好公民,我也會將客戶端的密碼從發佈的源代碼中刪除;希望自己的應用版本的用戶應該註冊他們自己的客戶端。

當然,任何編入移動應用程序的內容都不再是祕密,因爲移動設備無法保守祕密。

+0

這是第二種情況。你是否建議我在發佈的源代碼中省略祕密,但將其包含在分佈式JAR文件中?我擔心人們會反向設計JAR文件的祕密。不過,要求每個用戶在Google註冊他們自己的應用程序似乎也不錯。 –

+0

就像你說的那樣,試圖將它隱藏在JAR中是沒有意義的,如果你要發佈它,你也可以將它放在源代碼中。我認爲,如果其他人創建自己的應用程序,他們應該將自己的應用程序註冊爲一般原則,這就是OAuth應該如何工作。 –