2014-01-05 112 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