Amazon web services 查找与Cognito标识关联的用户
是否有可能找到给定cognito标识所属的用户(在用户池中)。在AWS控制台中?以编程方式Amazon web services 查找与Cognito标识关联的用户,amazon-web-services,amazon-cognito,aws-cognito,Amazon Web Services,Amazon Cognito,Aws Cognito,是否有可能找到给定cognito标识所属的用户(在用户池中)。在AWS控制台中?以编程方式 在Cognito标识池中,标识看起来像:。当这些身份来自Cognito用户池时,在AWS控制台中,我们可以单击该身份并访问一些信息。该信息仅限于DateCreated和LinkedLogin=cognito idp..amazonaws.com/,它只告诉您该标识来自cognito用户池和哪个池,但这远没有实际用处。我们是否可以实际说出用户池中的哪个用户?在node.js lambda的上下文中,我可以通
在Cognito标识池中,标识看起来像
:
。当这些身份来自Cognito用户池时,在AWS控制台中,我们可以单击该身份并访问一些信息。该信息仅限于DateCreated
和LinkedLogin=cognito idp..amazonaws.com/
,它只告诉您该标识来自cognito用户池和哪个池,但这远没有实际用处。我们是否可以实际说出用户池中的哪个用户?在node.js lambda的上下文中,我可以通过以下方式获得用户池标识:
function getAuthenticatedUser(env, event) {
let cognitoClient =
new AWS.CognitoIdentityServiceProvider(env.cognito.region);
let userSub = event.requestContext.identity
.cognitoAuthenticationProvider.split(':CognitoSignIn:')[1];
let request = {
UserPoolId: env.cognito.userPoolId,
Filter: `sub = "${userSub}"`,
Limit: 1
};
console.log(JSON.stringify(request, null, 2));
return cognitoClient.listUsers(request).promise()
.then((data) => {
console.log('Cognito users list...');
console.log(JSON.stringify(data,null,2));
return data.Users[0]
});
}
其中
event
是执行时传递到lambda的标准事件结构。(请参阅上的在线AWS文档中的)。在与AWS开发人员支持人员交谈后,我发现不可能将Cognito标识链接回Cognito用户池中的用户
因此,如果您需要知道后端代表哪个用户执行代码,在lambda中,您可以选择以下选项:
- 在请求中发送用户信息。即使lambda调用使用Cognito标识进行了身份验证,并且lambda可以访问lambda上下文中的标识,如果您想要用户信息,您需要自己发送它。例如,在请求中发送ID令牌,在服务器端验证它,并从中提取用户信息
- 使用Cognito Sync为您的Cognito身份创建数据集。在数据集中存储一些用户信息
event
变量与作为参数传递给lambda入口点的event
变量非常相似。好的,谢谢。但这并不能真正解决我的问题,您的答案是能够从用户池中获取用户,因为您将用户信息作为lambda请求的一部分发送(即,在请求中您有usersub)。我的问题是,如果你只有一个cognito身份,你能做什么来找出它属于谁。在与AWS支持人员交谈后,他们告诉我不可能将身份链接回用户。明白-我的大多数用例都涉及与API网关或AppSync一起实现的lambda,因此在这些情况下,事件
结构中至少有足够的元数据来执行上述操作。。。对不起,我帮不上忙了。