API 网关 - 通过代理和 AWS_IAM,不传递身份
API Gateway - Pass through proxy and AWS_IAM, not passing identity
我正在尝试创建一个 API 网关,它使用 AWS_IAM 授权方,并使用 Amplify 通过联合身份登录我的应用程序。
这一切都很好,但是我没有在我的后端服务中获得身份。
我想要的是能够在我的后端服务中访问用户的身份。例如 header 和 user-id 或类似的东西。
我一直在看这个例子:https://github.com/matsev/cloudformation-api-gateway/blob/master/cloudformation.template 试图映射 $context,但它似乎不适用于 HTTP_PROXY?
RefreshProxy:
Type: AWS::ApiGateway::Resource
Properties:
ParentId:
Ref: SomeOtherHandler
PathPart: '{proxy+}'
RestApiId:
Ref: ApiGatewayRestApi
RefreshProxyMethod:
Type: AWS::ApiGateway::Method
Properties:
ResourceId:
Ref: RefreshProxy
RestApiId:
Ref: ApiGatewayRestApi
AuthorizationType: AWS_IAM
HttpMethod: POST
RequestParameters:
method.request.path.proxy: true
Integration:
IntegrationHttpMethod: POST
Type: HTTP_PROXY
Uri: url/{proxy}
IntegrationResponses:
- StatusCode: 200
RequestParameters:
integration.request.path.proxy: method.request.path.proxy
integration.request.header.Accept-Encoding: "'identity'"
PassthroughBehavior: WHEN_NO_MATCH
您需要使用上下文中的 cognitoIdentityId 添加 header。所以在集成部分你需要:
integration.request.header.Identity: context.identity.cognitoIdentityId
我正在尝试创建一个 API 网关,它使用 AWS_IAM 授权方,并使用 Amplify 通过联合身份登录我的应用程序。
这一切都很好,但是我没有在我的后端服务中获得身份。 我想要的是能够在我的后端服务中访问用户的身份。例如 header 和 user-id 或类似的东西。
我一直在看这个例子:https://github.com/matsev/cloudformation-api-gateway/blob/master/cloudformation.template 试图映射 $context,但它似乎不适用于 HTTP_PROXY?
RefreshProxy:
Type: AWS::ApiGateway::Resource
Properties:
ParentId:
Ref: SomeOtherHandler
PathPart: '{proxy+}'
RestApiId:
Ref: ApiGatewayRestApi
RefreshProxyMethod:
Type: AWS::ApiGateway::Method
Properties:
ResourceId:
Ref: RefreshProxy
RestApiId:
Ref: ApiGatewayRestApi
AuthorizationType: AWS_IAM
HttpMethod: POST
RequestParameters:
method.request.path.proxy: true
Integration:
IntegrationHttpMethod: POST
Type: HTTP_PROXY
Uri: url/{proxy}
IntegrationResponses:
- StatusCode: 200
RequestParameters:
integration.request.path.proxy: method.request.path.proxy
integration.request.header.Accept-Encoding: "'identity'"
PassthroughBehavior: WHEN_NO_MATCH
您需要使用上下文中的 cognitoIdentityId 添加 header。所以在集成部分你需要:
integration.request.header.Identity: context.identity.cognitoIdentityId