3

我有一个体系结构,我将 API 网关与 Cognito 用户池授权器一起使用,并且我正在从客户端 ReST 调用传递授权标头中的 IdToken。

它工作正常。

我需要 Lambda 中的 cognitoIdentityId。

API Gateway 中集成请求中尝试的正文模板映射

内容类型 - 应用程序/json

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

它不发送身份标识(在事件中或上下文中),并且它仅将我的有效负载转换为此 json。

在这种情况下,如何在我的有效负载完好无损的情况下获取 Lambda 中的身份标识?

4

2 回答 2

4

仅当您使用 Cognito 身份凭证时,才能使用 Cognito 身份 ID。如果您想获取有关通过 ahorizer 授权的 Cognito 用户池用户的信息,它将在context.authorizer.claims映射中可用。

有关更多详细信息,请参阅此文档

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

编辑以修复错字。

于 2017-04-09T18:23:32.197 回答
2

CognitoIdentityId来自Federated Identity Pool. 如果您想要一个 identityId,那么您必须AWS Cognito Federated Identities使用您的AWS Cognito User Pool. 点击这里

然后您需要验证您的 UserPool 用户,这将返回您的JWT Tokens (IdToken, AccessToken and RefreshToken). 使用这个IdToken你可以调用GetId方法Cognito Federated Identities API获取IdentityId。

于 2017-04-26T22:10:23.757 回答