从lambda访问用户信息

时间:2018-11-15 15:31:11

标签: aws-lambda aws-api-gateway amazon-cognito

我正在使用AWS开发无服务器应用程序。

我使用AWS Cognito用户池来管理用户:注册,登录和注销。 确认这些用户后,我将使用AWS Cognito身份池来获取临时凭证。然后,我使用这些凭据来访问api(我的api上的终结点需要AWS_IAM进行身份验证并调用lambda)。

所有这些都能完美地工作。但是我需要知道哪个用户已请求该操作。在lambda中,我可以从我的身份池中获取IdentityId。但是我需要从用户池中的用户那里获取属性。

所以我的问题是:有没有办法使用附加到其上的身份的IdentityId从用户池中获取用户?或至少获得访问令牌?我知道我可以在标头中发送访问令牌,但我只希望依赖于AWS​​_IAM身份验证。

1 个答案:

答案 0 :(得分:0)

从联合identity_id返回用户池用户非常棘手,因为不能保证 是用户池用户(很可能是Facebook上的某个人,甚至是未经身份验证的用户)用户-取决于您的配置。

  1. 给出一个IdentityId,您可以使用identity:GetOpenIdToken获取有效的OpenId令牌(如果您是 logins部分) >仅使用UserPools。

  2. 然后您可以在userpools:GetUser端点上使用此令牌。

这里有一些陷阱,例如确保使用范围允许您查看您关心的所有属性的身份验证。如果还没有,则需要使用userpools:AdminGetUser返回的username来获取完整的用户个人资料。