我正在与aws合作开发一个无服务器应用程序。
我使用AWS Cognito用户池管理用户:注册、登录、注销。确认这些用户后,我将使用AWS Cognito Identity Pool获取临时凭据。然后,我使用这些凭据来访问api (我的api上的端点需要AWS_IAM进行身份验证并调用lambda)。
所有这些都能完美地工作。但我需要知道哪个用户请求了该操作。在lambda中,我可以从我的身份池中获取IdentityId。但我需要从user Pool中的用户那里获取属性。
所以我的问题是:有没有一种方法可以使用附加到用户池的身份的IdentityId从用户池中获取用户?或者至少,获得访问令牌?我知道我可以在报头中发送访问令牌,但我想只依赖于AWS_IAM身份验证。
发布于 2018-11-16 17:36:56
从联邦identity_id返回到用户池用户是很棘手的,因为不能保证它是用户池用户(它很可能是来自Facebook的某个人,甚至是一个未经身份验证的用户-取决于您的配置)。
IdentityId后,您可以使用identity:GetOpenIdToken获取有效的OpenId令牌(如果您正在使用UserPools).logins部分,然后可以对userpools:GetUser端点使用此令牌。这里有一些陷阱,比如确保您使用一个允许您查看所有您关心的属性的范围进行身份验证。如果没有,则需要使用随userpools:AdminGetUser返回的username来获取完整的用户配置文件。
https://stackoverflow.com/questions/53322757
复制相似问题