如何在 AWS Cognito 中添加应用程序客户端元数据?

问题描述 投票:0回答:2

我是 AWS Cognito 的新手,但我们的目标是为租户创建一个 API GW 端点,以安全的方式将数据上传到带有租户目录前缀的 s3 存储桶(每个租户都有一个单独的文件夹)。 Cognito 用户池提供的用户名-密码登录不是机器与机器通信时应考虑的方式。

据我所知,AWS Cognito 是一种生成具有客户端 ID 和密钥的应用程序客户端的安全方法,我们可以将其提供给客户并保护我们的端点。我们需要向该客户端添加tenant_id或名称元数据,以了解应该将其数据放入哪个目录。问题是客户端不是用户池本身的一部分,我们无法在Cognito中向其中添加任何数据。 U

我们可以使用client_id本身吗?我们应该自己处理这个元数据-client_id 关系吗? (存储在数据库中) 或者这是实现这一目标的最干净的方法?

amazon-web-services amazon-s3 amazon-cognito multi-tenant
2个回答
0
投票

我建议您可以为每个租户拥有一个单独的

S3
存储桶,它具有许多好处,例如每个租户的自定义对象生命周期策略、基于存储桶级别使用情况的 AWS 自定义计费指标等。

在存储租户信息的提供商(元数据)数据库中,您可以在给定租户的设置中获取存储桶详细信息。因此,当租户上传图像时,您可以计算出存储桶,然后使用 AWS V4 标头签名上传到 S3。

请分享您对这个想法的想法。


0
投票

自定义范围

不确定这是否是最干净的方法。 我确信人们正在使用范围来提供访问级别,但自定义范围也可以用于添加元数据信息。本质上,您可以添加

tenant_id
作为自定义范围。

访问令牌包含范围,因此当将其呈现给您的安全端点时,可以根据范围中提供的

tenant_id
确定适当的目录。

有关创建自定义范围的更多信息 - https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-define-resource-servers.html

© www.soinside.com 2019 - 2024. All rights reserved.