我正在使用一个架构,我正在使用带有Cognito用户池授权程序的API网关,并且我在客户端ReST调用中传递了授权头中的IdToken .
它工作正常 .
I need the cognitoIdentityId in Lambda.
在API网关中的集成请求中尝试的主体模板映射
内容类型 - application / json
{
"cognito-identity" : "$context.identity.cognitoIdentityId"
}
它不会发送identityid(在事件或上下文中),也只会将我的有效负载转换为此json .
如何在我的有效负载完好无损的情况下获取Lambda中的identityid?
2 回答
仅当您使用Cognito Identity Credentials时,Cognito Identity Id才可用 . 如果您想获取有关通过athorizer授权的Cognito用户池用户的信息,可以在context.authorizer.claims Map 中找到它 .
有关详细信息,请参阅this documentation .
此外,如果您希望此值在Lambda函数中可用,它将位于event.requestContext.authorizer.claims映射中(如果您使用的是Lambda代理集成),或者您选择将其映射到映射的任何位置模板(如果您不使用代理集成) .
编辑修复错字 .
CognitoIdentityId
来自Federated Identity Pool
. 如果您需要identityId,则必须使用AWS Cognito User Pool
在AWS Cognito Federated Identities
中创建标识池 . Click here然后,您需要验证您的UserPool用户,该用户将返回
JWT Tokens (IdToken, AccessToken and RefreshToken)
. 使用此IdToken,您可以调用Cognito Federated Identities API
的GetId方法来获取IdentityId .