Метод API Gateway Options, выбрасывающий 403 - PullRequest
0 голосов
/ 19 января 2019

У меня есть Custom Authorizer с API Gateway. При развертывании через SAM Module он также создает Options Method при включении CORS. Вещь, которую я действительно не понимаю, почему пользовательский авторизатор подключается к конечной точке Options? enter image description here

Выдает 403, когда я пытаюсь вызвать конечную точку из браузера, и прекрасно работает, когда я удаляю Authorization из метода Options.

enter image description here

Ниже template.yaml

AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'

Globals:
  Function:
    Runtime: nodejs8.10
  Api:
    Cors:
      AllowMethods: "'*'"
      AllowHeaders: "'*'"
      AllowOrigin: "'*'"

Resources:
  TestApi:
    Type: AWS::Serverless::Api
    Properties:
      StageName: dev
      Auth:
        DefaultAuthorizer: testAuthoriser
        Authorizers:
          testAuthoriser:
            FunctionArn:
              Fn::ImportValue: !Sub test-custom-autoriser
            Identity:
              Header: Authorization
              ValidationExpression: ^Bearer [-0-9a-zA-Z\._]*$
              ReauthorizeEvery: 30 

  Version:
    Type: 'AWS::Serverless::Function'
    Properties:
      FunctionName: test
      CodeUri: src/test
      Handler: index.test
      Events:
        EndPoint:
          Type: Api
          Properties:
            RestApiId: !Ref TestApi
            Path: /test
            Method: get
            Auth:
              Authorizer: testAuthoriser

Я также включил 'Access-Control-Allow-Origin': '*' в заголовке. Не уверен, что здесь происходит. Любая помощь будет оценена

1 Ответ

0 голосов
/ 19 января 2019

Для CORS AWS API Gateway всегда включает метод OPTIONS, чтобы разрешить предварительную проверку. Вы можете прочитать больше об этом в документах .

Причина, по которой вы видите ошибку предпечатной проверки в вашем браузере, потому что 403 Запрещено поступает от вашего Пользовательского Авторизатора. Custom Authorizer не возвращает заголовки, поэтому вы всегда увидите ошибку предпечатной проверки, если запрос был отклонен Custom Authorzer.

Чтобы отладить это, зарегистрируйте политику, которую возвращает ваш Custom Authorizer. Вы можете увидеть это в CloudWatch. Политика должна содержать инструкцию Allow для запрашиваемого ресурса.

...