Конечная точка шлюза Api для гостевых и аутентифицированных пользователей одновременно - PullRequest
0 голосов
/ 17 февраля 2020

Есть ли способ иметь конечную точку шлюза API, чтобы иметь Cognito Authorizer и в то же время разрешать неаутентифицированным пользователям.

Конечная точка будет доступна любому, но если пользователь аутентифицирован, я возьму его id и некоторые другие вещи.

На данный момент мой шаблон Cloudformation выглядит примерно так. У меня уже есть настройка Cognito.


Resources:
  webApi:
    Type: AWS::Serverless::Api
    Properties:
      Auth:
        DefaultAuthorizer: CognitoAuthorizer
        Authorizers:
          CognitoAuthorizer:
            UserPoolArn: !Ref UserPoolArn
        AddDefaultAuthorizerToCorsPreflight: false
      Cors:
        AllowMethods: "'*'"
        AllowHeaders: "'*'"
        AllowOrigin: "'*'"
      StageName: !Ref Environment
      DefinitionBody:
        swagger: "2.0"
        info:
          title:
            Ref: AWS::StackName
        paths:
          /authendpoint:
            post:
              security:
                - NONE: []
              responses: {}
              x-amazon-apigateway-integration:
                ...
                httpMethod: "POST"
                type: "aws_proxy"

          /endpoint
            get:
              security:
                - NONE: []
              responses: {}
              x-amazon-apigateway-integration:
                ...
                httpMethod: "POST"
                type: "aws_proxy"

  #FUNCTIONS ==========================================

...

Я думал о создании собственного авторизатора, но мне было интересно, есть ли способ заставить его работать без добавления пользовательского кода

Спасибо

РЕДАКТИРОВАТЬ: чтобы уточнить, все, что мне нужно, это конечная точка, которая с помощью токена извлечет информацию о пользователе и присоединит ее к объекту запроса лямбда-выражения, в случае go это будет что-то вроде cognitoClaims := request.RequestContext.Authorizer["claims"]. Если токен не передан в заголовок, API-шлюз все равно разрешит гостевым пользователям.

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