繁体   English   中英

一个授权身份验证的网站用户(App Engine标准)如何授予对Google Cloud Storage存储桶的访问权限?

[英]How does one grant authenticated website users (App Engine standard) access to Google Cloud Storage bucket?

我已经在Google App Engine标准上部署了Java8 Web应用程序。 目前,我已经集成了Oauth2,可以获取用户的电子邮件地址,token_id等。用户注册流程非常标准(即使使用Oauth2也是如此)。 基本上,它使用户可以添加他们的电子邮件/密码或使用Google登录进行注册。 我在Google云端存储中有一些目录和文件,希望允许“经过身份验证”的用户访问。 意思是:

  • a)如果他们的用户名/密码与我在mysql数据库中匹配的名称或
  • b)如果我在数据库中找到了他们的Google登录凭据

我将它们重定向到servlet,该servlet以链接的形式在安全网页中显示所有文件,用户可以在其中单击/打开文档。 我很清楚如何在用户可能拥有的Google资源上请求授权。 我需要知道的是如何“授予”用户(在网站上注册的Google用户或普通用户)访问Google Cloud Storage存储桶中的文件的权限?

除非我将存储对象读取器授予“所有用户”,否则我将获得:

<Error>
<Code>AccessDenied</Code>
<Message>Access denied.</Message>
<Details>
Anonymous caller does not have storage.objects.get access to drmath.appspot.com/1a/index.html.
</Details>
</Error>

Google OAuth不能满足您授予Google Cloud Storage访问权限的要求。 他们的电子邮件地址(用户身份)需要作为用户添加到您的Google Cloud IAM中。

您可以做的是生成签名的URL。 这些是具有临时访问权限的URL。 您的后端服务器代码将生成URL,然后用户可以在临时时间内直接访问Cloud Storage对象。

您的后端将确定您要通过任何所需方法(包括使用OAuth,数据库等)对用户进行授权。

使用自己的程序生成签名的URL

签名网址

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM