2014-01-05 152 views
1

我的目標是爲我的網站的用戶提供一項服務來存儲他們的私人筆記。 我希望用戶可以信任該服務,因此我的公司不應該訪問這些數據。存儲和訪問私人數據

我可以通過google-cloud-storage和oauth-2.0認證來實現嗎?我將使用Google Cloud Storage JSON API將筆記直接從瀏覽器發送到雲端。

執行此操作的基本步驟是什麼?

回答

1

根據您想要處理身份驗證的方式,有幾種方法可以處理此問題。如果您想確保您的應用程序無法訪問對象並且只有用戶可以訪問這些對象,則需要用戶使用Google帳戶並驗證您的應用程序以使用OAuth 2充當其代理。

您的應用程序可能涉及這是一段JavaScript,用於提示用戶使用Google進行身份驗證,並授予其以Google名義訪問Google Cloud Storage的權限。然後它會收到一個可以用來作爲它們的標記。從那裏,它將使用該標記上傳備註,ACL僅向上傳者授予權限。

上傳的對象會進入您的存儲桶,但它將由最終用戶擁有。您可以刪除它,但不能讀取它,並且您的存儲桶將被存儲和訪問。

這裏的缺點是您的所有用戶都需要擁有可以在短時間內委託給您的應用程序的Google帳戶。

下面是對OAuth的2交換一些細節:https://developers.google.com/accounts/docs/OAuth2UserAgent

這裏的JavaScript客戶端,做了很多的授權繁重的你: https://code.google.com/p/google-api-javascript-client/

並使用授權該庫的例子: https://developers.google.com/api-client-library/javascript/samples/samples#AuthorizingandMakingAuthorizedRequests

另一種選擇是用戶使用您的憑據通過簽名的URL直接上傳到雲端,但如果您沿着這條道路走下去,您將無法o在上傳後閱讀筆記。

+0

我正在使用以下客戶端:https://github.com/GoogleCloudPlatform/storage-getting-started-javascript/blob/master/index.html。 我可以插入一個對象,但項目所有者可以讀取它。所以我想在gapi.client.request標題部分設置'x-goog-acl':'private',但沒有運氣。我也試過其他地方,但項目所有者可以隨時閱讀。 – tak3shi

+0

啊。這是JSON API的Javascript客戶端,其文檔位於:https://developers.google.com/storage/docs/json_api/v1/objects/insert 此API不使用x-goog- acl標題。相反,ACL通過上傳對象的ACL屬性進行設置。請求主體應該是一個JSON對象,包含一個包含控件列表的「acl」屬性,如下所示:{「acl」:[{「entity」:「user-MyEmailAddressOrIdNumber」,「role」:「OWNER」}] }。 –

+0

或者你可以使用加密。用戶加密數據並將其加密存儲。用戶應該擁有密鑰並且密鑰不應該離開客戶端。這樣你就得到了數據,但對你來說沒用。 – markovuksanovic