有什么方法可以在lambda函数中获取cognito用户对象?
我的客户已经发送了身份,我有context.identity.cognitoIdentityId
,但我没有找到任何方法将其“转换”为有效的用户对象。
例如,如果我想知道经过身份验证的用户用户名,电子邮件地址或其他Cognito属性,那么获取它的正确方法是什么?
这个identityId是用户的唯一标识符?我的意思是,如果用户使用他们的fb帐户注册,然后连接他们的Twitter帐户,身份ID仍然存在?还是新的?如果它是新的,我如何将旧的ID“连接”到新的?
由于
b0c1
答案 0 :(得分:1)
原始用户名/电子邮件不会跨越联盟边界,因此,如果您通过Cognito Federated Identity交换AWS Credentials的Cognito用户池ID令牌,则Id令牌中的所有声明都将丢失。
如果您使用API网关使用Lambda,则可以直接使用Cognito User Pools Id令牌和Cognito Authorizer选项对请求进行身份验证,并且ID令牌中的所有声明都将与上下文一起传递。详情here。
不幸的是,听起来您正试图将多个提供商链接到同一个身份,除非您使用联合身份,否则您无法做到这一点。但是要回答关于如何在联合身份中将两个身份提供者帐户链接在一起的问题,如果您在登录映射中同时传递两个令牌,它将链接这两个身份。
"graph.facebook.com":"facebookToken"
"accounts.google.com":"googleToken"
如果您之前从未关联过任何一个帐户,您将获得一个新的ID,如果您之前已经链接过,则身份将合并,您将获得一个或另一个。