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



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

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

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

我建议您可以为每个租户提供一个单独的S3存储桶,它具有许多好处,如每个租户的自定义对象生命周期策略、基于存储桶级别使用情况的AWS自定义计费指标等。

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

请分享你对这个想法的看法。

自定义作用域

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

访问令牌包含作用域,因此当它呈现给安全端点时,可以根据作用域中提供的tenant_id来确定适当的目录。

有关创建自定义作用域的详细信息-https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-define-resource-servers.html

相关内容

最新更新