Безсерверный пользовательский вызов извлечения аутентификации запрещен, работает с почтальоном - PullRequest
0 голосов
/ 26 мая 2019

У меня настроены 2 лямбда-функции:

  1. Авторизация пользователя (которая также действует как пользовательская аутентификация)
  2. Список сайтов

Ниже приведены настройки для:

Функция (1):


functions:
  userAuth:
    handler: handler.auth
    role: ${env:ARN_LAMBDA}
    events:
      - http:
          method: post
          path: auth
          cors:
            origin: '*'
            headers: # <-- Specify allowed headers
              - Content-Type
              - X-Amz-Date
              - Authorization
              - X-Api-Key
              - X-Amz-Security-Token
              - X-Amz-User-Agent

функция (2):

events:
      - http:
          path: /
          method: get
          cors:
            origin: '*' # <-- Specify allowed origin
            headers: # <-- Specify allowed headers
              - Content-Type
              - X-Amz-Date
              - Authorization
              - X-Api-Key
              - X-Amz-Security-Token
              - X-Amz-User-Agent
              - Authorization
          authorizer:
            arn: arn:aws:lambda:ap-southeast-1:<arnno>:function:users-${opt:stage}-userAuth
            resultTtlInSeconds: 0
            identitySource: method.request.header.Authorization
            type: request

Я также добавил следующее для обработки запросов CORS на уровне шлюза API без сервера для обеих функций (https://serverless.com/blog/cors-api-gateway-survival-guide/)

resources:
  Resources:
    GatewayResponseDefault4XX:
      Type: 'AWS::ApiGateway::GatewayResponse'
      Properties:
        ResponseParameters:
          gatewayresponse.header.Access-Control-Allow-Origin: "'*'"
          gatewayresponse.header.Access-Control-Allow-Headers: "'*'"
        ResponseType: DEFAULT_4XX
        RestApiId:
          Ref: 'ApiGatewayRestApi'

Когда я запускаю запрос с помощью заголовка «Авторизация» через Почтальон, он работает нормально. Но когда я использую то же самое, что и fetch запрос, я получаю сбой 403.

Есть идеи, чего мне здесь не хватает?

Я занимался делами для CORS. Я также возвращаю "*", так как заголовки допускают происхождение (из ответа функции для всех) для целей тестирования.

Любая помощь будет высоко оценена:).

...