API网关 - 通过代理和AWS_IAM,而不是传递身份

时间:2018-04-11 16:52:19

标签: amazon-web-services aws-api-gateway amazon-cloudformation aws-cognito

我尝试使用AWS_IAM授权程序创建API网关,并使用Amplify使用联合身份登录我的应用程序。

这一切都运行正常,但我没有在我的后端服务中获得身份。 我想要的是能够在我的后端服务中访问用户的身份。例如带有用户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

1 个答案:

答案 0 :(得分:2)

您需要从上下文中添加包含cognitoIdentityId的标头。所以在集成部分你需要:

integration.request.header.Identity: context.identity.cognitoIdentityId