如何在 AWS API 网关请求的后端获取 Cognito Identity Id?
How to get Cognito Identity Id in backend that is requested by AWS API Gateway?
我在我的 Web 应用程序中使用 AWS Cognito 身份验证。我有一个带有 REST API 的 PHP 后端。用户身份验证后,我使用 this library 向 AWS API 网关发出请求。 API 网关方法具有 HTTP 集成类型。他们将 HTTP 请求代理到我的 PHP 后端。如何在我的 PHP 后端获取 Cognito Identity Id?我需要在我的后端设置对 Cognito 用户的关系引用。
API 网关使呼叫者的身份 ID 在 request context 中可用。假设您正在使用 Cognito 身份池(联合),您正在寻找这个 属性:$context.identity.cognitoIdentityId
.
您可以配置 API 网关将新 header 中的身份 ID 值发送到您的后端。为此,您必须:
- 打开方法配置的集成请求面板
- 展开 HTTP headers 部分并单击 "Add header" link
- 给你header一个名字,比如
X-Cognito-Identity-Id
- 在 "mapped from" 字段中使用以下表达式:
context.identity.cognitoIdentityId
- 使用右侧的复选标记 link 保存配置更改。
Re-deploy API 和您的 PHP 后端应该开始接收额外的 header 填充了来自原始请求的 Cognito 身份 ID。
对于@stefano 提供的答案无效的那些人,您可以将上下文变量 context.identity.cognitoIdentityId
替换为 context.authorizer.claims.sub
。
header name: X-Cognito-User-Id
//或者你喜欢的任何名字
映射自:context.authorizer.claims.sub
// returns 认知用户 ID。
我在我的 Web 应用程序中使用 AWS Cognito 身份验证。我有一个带有 REST API 的 PHP 后端。用户身份验证后,我使用 this library 向 AWS API 网关发出请求。 API 网关方法具有 HTTP 集成类型。他们将 HTTP 请求代理到我的 PHP 后端。如何在我的 PHP 后端获取 Cognito Identity Id?我需要在我的后端设置对 Cognito 用户的关系引用。
API 网关使呼叫者的身份 ID 在 request context 中可用。假设您正在使用 Cognito 身份池(联合),您正在寻找这个 属性:$context.identity.cognitoIdentityId
.
您可以配置 API 网关将新 header 中的身份 ID 值发送到您的后端。为此,您必须:
- 打开方法配置的集成请求面板
- 展开 HTTP headers 部分并单击 "Add header" link
- 给你header一个名字,比如
X-Cognito-Identity-Id
- 在 "mapped from" 字段中使用以下表达式:
context.identity.cognitoIdentityId
- 使用右侧的复选标记 link 保存配置更改。
Re-deploy API 和您的 PHP 后端应该开始接收额外的 header 填充了来自原始请求的 Cognito 身份 ID。
对于@stefano 提供的答案无效的那些人,您可以将上下文变量 context.identity.cognitoIdentityId
替换为 context.authorizer.claims.sub
。
header name: X-Cognito-User-Id
//或者你喜欢的任何名字
映射自:context.authorizer.claims.sub
// returns 认知用户 ID。