【问题标题】:Allow Cognito user to Write to S3允许 Cognito 用户写入 S3
【发布时间】:2017-12-19 09:27:17
【问题描述】:

我有一个需要能够写入 S3 的嵌入式设备。我想避免给嵌入式设备一个实际的 AWS IAMUser。我正在考虑使用 Cognito 来获得对 S3 的写访问权限。

我有一个用户池,其中包含一个组和一个用户(目前)。该组有一个附加策略,允许访问写入某个 S3 存储桶。设置池以便只有管理员可以创建新用户。我已经设法对 cognito 用户进行身份验证,并且可以访问刷新令牌和 idTokens。我希望使用这些令牌写入我的 s3 存储桶。

我正在尝试遵循文档,但我感到困惑。我认为我需要一个联合身份池,但我不需要公共提供者。我只想让我的 cognito 用户组写入 s3。

是否有一个简单的解决方案允许 cognito 用户在没有联合身份的情况下写入 S3,或者如果没有,我是否需要后端来为联合身份提供令牌?

我一直在使用授权https://github.com/capless/warrant 进行身份验证:

from warrant.aws_srp import AWSSRP                                                                                                                                                                                                                                                    
import boto3                                                                                                                                                                                                                                                                          

client = boto3.client('cognito-idp')                                                                                                                                                                                                                                                  

aws = AWSSRP(username='<username>', password='<password>', pool_id='<pool>',                                                                                                                                                                                            
         client_id='<clientid>', client=client)                                                                                                                                                                                                              

tokens = aws.authenticate_user()                    

任何提示将不胜感激!

【问题讨论】:

  • 您需要调用 STS AssumeRoleWithWebIdentity 以使用 Cognito 令牌来检索您随后用于 S3 的临时 AWS 凭证。顺便说一句,介绍用户池(作为现在称为联合身份池的自我管理替代方案)的原始博客文章很有帮助:aws.amazon.com/blogs/aws/new-user-pools-for-amazon-cognito。不需要 Facebook 等。

标签: amazon-web-services amazon-s3 boto3 amazon-cognito


【解决方案1】:

您确实需要一个联合身份池。在身份提供者部分,您选择 Cognito 并输入您的池 ID 和池客户端 ID。然后,您需要为身份池提供authenticatedunauthenticated roles。您可以使用这些角色来提供 S3 写入访问权限。

这是身份提供者设置的默认行为。如果您希望角色来自您的用户所在的组,则需要在您提供池和客户端 ID 的身份提供者部分中设置 Choose role from token 选项。

【讨论】:

    猜你喜欢
    • 2023-03-22
    • 2020-12-18
    • 2017-06-13
    • 2020-04-01
    • 2019-04-05
    • 2020-02-16
    • 1970-01-01
    • 2015-06-18
    • 2020-04-27
    相关资源
    最近更新 更多