首页 文章

具有Cognito用户池授权程序和Lambda的API网关

提问于
浏览
1

我正在使用一个架构,我正在使用带有Cognito用户池授权程序的API网关,并且我在客户端ReST调用中传递了授权头中的IdToken .

它工作正常 .

I need the cognitoIdentityId in Lambda.

在API网关中的集成请求中尝试的主体模板映射

内容类型 - application / json

{
"cognito-identity" : "$context.identity.cognitoIdentityId"
}

它不会发送identityid(在事件或上下文中),也只会将我的有效负载转换为此json .

如何在我的有效负载完好无损的情况下获取Lambda中的identityid?

2 回答

  • 2

    仅当您使用Cognito Identity Credentials时,Cognito Identity Id才可用 . 如果您想获取有关通过athorizer授权的Cognito用户池用户的信息,可以在context.authorizer.claims Map 中找到它 .

    有关详细信息,请参阅this documentation .

    此外,如果您希望此值在Lambda函数中可用,它将位于event.requestContext.authorizer.claims映射中(如果您使用的是Lambda代理集成),或者您选择将其映射到映射的任何位置模板(如果您不使用代理集成) .

    编辑修复错字 .

  • 4

    CognitoIdentityId 来自 Federated Identity Pool . 如果您需要identityId,则必须使用 AWS Cognito User PoolAWS Cognito Federated Identities 中创建标识池 . Click here

    然后,您需要验证您的UserPool用户,该用户将返回 JWT Tokens (IdToken, AccessToken and RefreshToken) . 使用此IdToken,您可以调用 Cognito Federated Identities APIGetId方法来获取IdentityId .

相关问题