В 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 локально.