【发布时间】:2017-08-15 08:51:41
【问题描述】:
故事:
我有一个包含用户的 Cognito 用户池。
此用户池是联合身份池中的身份验证提供程序。
我有一个 S3 存储桶,用户只能通过以下身份验证角色的策略上传到私有路径:
arn:aws:s3:::BUCKET_NAME/${cognito-identity.amazonaws.com:sub}/*
用户通过 aws javascript sdk 直接从网络浏览器上传。
现在这很好用,我的用户仅限于他们上传的位置。他们上传的文件最终在存储桶中的路径如下所示:
us-east-1:0f26319c-1233-4c71-afb6-fac96a798ffb/random_file_name.txt
然后,每当添加文件时,我都会从这个 S3 存储桶触发一个 lambda。为了澄清,用户不会调用 lambda
问题:
我想从 lamda 访问用户池中的用户属性。我认为我可以使用 cognito-identity 子进行此查找。但是,我似乎找不到使用 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 来查找用户的属性?
【问题讨论】:
-
用户名是否可用于浏览器中的代码?
-
@talentedmrjones 它是。但是,如果我使用用户属性来跟踪用户存储配额。这意味着任何用户都可以发送他想要的任何用户名。而且由于用户名通常是电子邮件,因此伪装成其他人相对容易。
标签: amazon-web-services amazon-s3 aws-lambda federated-identity aws-cognito