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