首页 文章

Cognito:联合身份标识和用户属性

提问于
浏览
10

Story:

我有一个Cognito用户池与用户 .

此用户池是联合身份池中的身份验证提供程序 .

我有一个S3存储桶,用户只能通过Auth Role上的策略上传到私有路径,如下所示:

arn:aws:s3 ::: BUCKET_NAME / $ /*

用户通过aws javascript sdk直接从Web浏览器上传 .

现在这很好用,我的用户仅限于他们上传的位置 . 他们上传的文件最终会显示桶中的路径,如下所示:

us-east-1:0f26319c-1233-4c71-afb6-fac96a798ffb / random_file_name.txt

然后我有一个lambda,只要添加一个文件,就会从这个S3桶中触发 . 为了澄清,用户不会调用lambda

Problem:

我想从lamda访问用户池中的用户属性 . 我以为我可以使用cognito-identity sub进行查找 . 但是,我似乎无法找到使用SDK api来实现此目的的方法 .

使用此api:http://boto3.readthedocs.io/en/latest/reference/services/cognito-identity.html#CognitoIdentity.Client.describe_identity我可以获取登录/用户池,但不能获取与此身份ID关联的用户名 .

如果我有用户名,那么我可以使用api:http://boto3.readthedocs.io/en/latest/reference/services/cognito-idp.html?highlight=cognito#CognitoIdentityProvider.Client.admin_get_user

有关如何使用联合身份ID查找用户属性的任何想法?

1 回答

  • 1

    如何存储文件呢?
    arn:aws:s3:::BUCKET_NAME/${cognito-idp.us-east-1.amazonaws.com:sub}

    这将解析为文件夹名称,如
    f4cfd4a8-0e94-4287-8c5e-1b01538dd2a1

    使用来自 Cognito User Poolsub 用户,您可以list users with that sub,例如在cli中:
    aws cognito-idp list-users --user-pool-id=us-east-1_ndhjGJQYE --filter "sub = 'f4cfd4a8-0e94-4287-8c5e-example'"

相关问题