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

时间:2017-03-23 00:43:38

标签: amazon-web-services amazon-s3 aws-lambda federated-identity aws-cognito

故事:

我有一个包含用户的Cognito用户池。

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

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

  

ARN:AWS:S3 ::: BUCKET_NAME / $ {cognito-identity.amazonaws.com:sub} / *

用户通过aws javascript sdk直接从网络浏览器上传。

现在效果很好,我的用户仅限于上传的位置。他们上传的文件以桶中的路径结束,如下所示:

  

我们 - 东 - 1:0f26319c-1233-4c71-afb6-fac96a798ffb / random_file_name.txt

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

问题:

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

使用此API: http://boto3.readthedocs.io/en/latest/reference/services/cognito-identity.html#CognitoIdentity.Client.describe_identity 我能够获得登录/用户池,但不能获得与此身份证关联的用户名。

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

如何使用联合身份ID查找用户的属性?

2 个答案:

答案 0 :(得分:1)

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

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

使用 Cognito用户池中的sub用户,您可以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'"

答案 1 :(得分:0)

不幸的是,我认为这是不可能的。据我了解,其原因是,从技术上讲,联盟身份ID不必代表用户池用户。例如,如果将其他身份验证提供程序连接到身份池,则用户可能具有完全不同的属性。