【问题标题】:Using object storage with authorization for a web app对 Web 应用程序使用具有授权的对象存储
【发布时间】:2022-08-03 02:58:13
【问题描述】:

我正在为开发一个 Web(前端+后端)应用程序做出贡献,该应用程序使用 OpenID Connect(带有 auth0)进行身份验证和授权。

Web 应用程序需要身份验证才能访问一些公共和一些受限信息(限制是每个用户或取决于某些与组相关的规则)。

我们希望为 .pdf 等文档提供上传/下载功能,并且我们已经为公共文档实现了 minIO(非常类似于 AWS S3)。

但是,我们不能绕着访问受限的文件绕圈子:

  • 我们是否应该在 minIO 上实现 OIDC,以便用户直接访问存储桶但使用临时访问令牌,允许细粒度的授权策略
  • 或者后台应该是唯一拥有minIO 密钥并成为对象存储和用户之间的中介的人吗?

在这里寻找好的做法,提前感谢您的帮助。

    标签: amazon-s3 web oauth-2.0 openid-connect minio


    【解决方案1】:

    有趣 - 我会在这个问题上区分安全(API)和非安全(Web)问题。

    不安全的资源

    如果不涉及安全性,从前端连接到存储桶是有意义的。桶内容也可以分发到内容交付网络,以获得最佳的全局性能。这可以被认为是一个网络请求。

    安全资源

    如果 PDF 文档包含敏感数据,则需要将这些请求视为 API 请求。 API 应该接收访问令牌并通过范围和声明强制访问文档。您可以为此使用 Documents API。该实现可能仍连接到存储桶,但以浏览器无权访问的方式。

    概括

    如果您从 URL 设计的角度考虑,这种类型的解决方案通常会更清晰。例如,前端应该有 2 个基本 URL:

    • 公共文档
    • 安全文档

    默认情况下,我会将用户上传的文档视为安全文档,除非他们选择上传选项,例如 make public

    【讨论】:

      猜你喜欢
      • 2019-04-03
      • 1970-01-01
      • 2012-06-17
      • 2018-02-17
      • 2011-03-16
      • 2013-12-07
      • 1970-01-01
      • 2011-08-23
      • 2011-12-20
      相关资源
      最近更新 更多