【问题标题】:How does one grant authenticated website users (App Engine standard) access to Google Cloud Storage bucket?如何授予经过身份验证的网站用户(App Engine 标准)访问 Google Cloud Storage 存储桶的权限?
【发布时间】:2019-05-18 13:08:43
【问题描述】:

我在 Google App Engine 标准上部署了一个 java8 网络应用程序。目前我有 Oauth2 集成,我能够获取用户的电子邮件地址、token_id 等。用户注册流程非常标准(即使使用 Oauth2)。它基本上是让用户添加他们的电子邮件/密码或使用谷歌登录进行注册。 我在 Google Cloud Storage 中有目录和文件,我想允许“经过身份验证的”用户访问。 这意味着:

  • 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>

【问题讨论】:

    标签: java google-app-engine google-cloud-platform google-signin


    【解决方案1】:

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

    您可以做的是生成签名的网址。这些是临时访问超时的 URL。您的后端服务器代码将生成 URL,然后用户可以暂时直接访问 Cloud Storage 对象。

    您的后端将确定用户是否通过您想要的任何方法获得授权,包括使用 OAuth、数据库等。

    Generating Signed URLs with Your Own Program

    Signed URLs

    【讨论】:

    • 让我问一下 - 我可以授予应用程序查看权限吗?换句话说,我将只使用用户会话来保护页面,但是当应用程序访问 Google Cloud Storage 时,它​​会显示文件吗?我不喜欢签名网址的是:“拥有该网址的任何人都拥有该网址授予的访问权限”
    • 在授予对 Cloud Storage 的访问权限时,没有 application 的概念。您要么拥有凭据(用户或服务帐户),要么拥有签名的 url(从凭据派生)。要将 view 授予任何内容,需要在 Google Cloud 中拥有 IAM 帐户。
    • 我添加了我的电子邮件并授予以下权限:
    • 抱歉,我被其他帖子分心了 - 当您将安全性添加到存储桶时,URL 会被标记化,所以我认为这不起作用,这就是让我暂停完成评论的原因。这似乎也意味着签名的网址也不起作用。我需要保持结构的完整性,每个“文件夹”本质上都是一个迷你网站。也许我只需要改用文件存储。
    • Firestore 不会为您提供该级别的授权。我唯一的想法是在数据库中实现您自己的授权,将其保存在与客户端的会话中,并跟踪用户在您的分层迷你网站中可以访问的位置。这在 PHP 中是很常见的事情,因此您可以在 Google 上找到很多示例。这听起来可能很复杂,但事实并非如此。我看到的问题是,您如何在不使用公共或签名 url 且不通过您的网络服务器汇集数据的情况下授权 Google Cloud Storage。
    猜你喜欢
    • 2011-12-25
    • 1970-01-01
    • 2010-10-07
    • 2021-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    相关资源
    最近更新 更多