Как я могу применить Authorizer для выбора маршрутов в моей интеграции с API Gateway Proxy - PullRequest
0 голосов
/ 11 октября 2019

Я развертываю приложение на AWS Lambda, используя серверную инфраструктуру. Мое приложение обслуживается одной Lambda, поэтому я прохожу через путь запроса, используя {proxy+}:

functions:
  app:
    runtime: go1.x
    handler: bin/lambda
    events:
      - http:
         path: /{proxy+}
         method: any

Теперь я хотел бы использовать собственный Lambda-авторизатор для защиты определенной части моегоприложение (думаю, все /admin/). Я подумал, что мог бы просто добавить другое определение события, которое использует авторизатор, например:

functions:
  app:
    runtime: go1.x
    handler: bin/lambda
    events:
      - http:
          path: /admin/{proxy+}
          method: any
          authorizer:
            name: authorizer
            resultTtlInSeconds: 0
            identitySource: method.request.header.Authorization
      - http:
         path: /{proxy+}
         method: any

, но это никак не влияет. Если я применю свой авторизатор к прокси-серверу корневого уровня, он будет применен, как и ожидалось, поэтому сам авторизатор работает как положено.

Как я могу определить свои маршруты в таком сценарии? Нужно ли использовать разные лямбды или мне чего-то не хватает?

Ответы [ 2 ]

1 голос
/ 12 октября 2019

Есть два варианта, о которых я могу подумать:

  1. Если вы действительно хотите, чтобы конечные точки были такими, как вы написали, вы можете использовать общую конечную точку (корневую конечную точку) и внутри этого обработчика. проверьте, является ли запрос для /admin, а затем перенаправьте или выполните какой-то другой особый случай для этого.

  2. Откажитесь от наличия корневой конечной точки и используйте две "нормальные" конечные точки:

    functions:
      app:
        runtime: go1.x
        handler: bin/lambda
        events:
          - http:
              path: /admin/{proxy+}
              method: any
              authorizer:
                name: authorizer
                resultTtlInSeconds: 0
                identitySource: method.request.header.Authorization
          - http:
             path: /user/{proxy+}
             method: any

0 голосов
/ 11 октября 2019

вы должны изучить https://docs.aws.amazon.com/en_pv/apigateway/latest/developerguide/api-gateway-swagger-extensions.html

в основном (для open api 3.0) вы должны определить ключ security на вашем маршруте. определение такого ключа находится в пределах components.securitySchemas

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...