【问题标题】: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。