AWS SAM - Использование Cognito для управления доступом - PullRequest
1 голос
/ 26 мая 2020

В AWS документации для «Управление доступом к API шлюза API» говорится:

Механизм, который вы выбираете для управления доступом к API шлюза API, зависит от по нескольким факторам. Например, если у вас есть новый проект, в котором еще не настроена авторизация или управление доступом, то пулы пользователей Amazon Cognito могут быть вашим лучшим вариантом. Это связано с тем, что при настройке пулов пользователей вы также автоматически настраиваете как аутентификацию, так и контроль доступа.

Я настроил аутентификацию с использованием AWS::Serverless::Api в AWS SAM:

 MyApi:
    Type: 'AWS::Serverless::Api'
    Properties:
      StageName: Prod
      Auth:
        AddDefaultAuthorizerToCorsPreflight: false
        DefaultAuthorizer: CognitoAuthorizer
        Authorizers:
          CognitoAuthorizer:
            UserPoolArn:<MY_RESOURCE_ARN>

Я не понимаю, что имеется в виду под:

вы также автоматически настраиваете аутентификацию и контроль доступа

У меня есть конечная точка GET, которая должна быть доступна только в зависимости от личности пользователя. В настоящее время пользователи должны войти в систему, чтобы иметь возможность запрашивать конечную точку, но как Cognito позволяет настраивать авторизацию в дополнение к аутентификации?

Я хотел бы иметь возможность настроить его, чтобы некоторым пользователям было разрешено звонить :

/api/group_profile/a но не: /api/group_profile/b

Думаю, я понимаю, как это можно сделать с помощью лямбда-авторизатора, но в документации предполагается, что если у вас еще нет настройки аутентификации, вы можете использовать Cognito для этой цели?


В рамках. NET Core Lambda-функции я могу посмотреть ClaimsPrincipal на HttpContext.User и проверить cognito:groups. Это рекомендуемый подход?

Я не понимаю, как это будет работать с включенным кешированием на шлюзе API и вызовет проблемы для запуска API локально.

...