В настоящее время я занимаюсь разработкой безсерверной архитектуры, в которой есть множество ресурсов и методов в шлюзе AWS API. Я планирую добавить аутентификацию Cognito (пул пользователей) и авторизацию в качестве безопасного уровня к шлюзу AWS API.
В AWS API Gateway есть 3 авторизатора: IAM, Cognito User Pool и пользовательская лямбда.
В моем случае для входа в систему и регистрации (аутентификации) используется пользовательский пул cognito через шлюз API. Это прекрасно работает. Мой пользователь предоставит идентификатор клиента приложения и секрет клиента для включения обоих процессов. После входа в систему я хочу, чтобы пользователь мог использовать токен доступа (возвращаемый пулом пользователей) для доступа к ресурсу через шлюз API.
Однако, мой пользователь может иметь другую роль, такую как администратор, владелец или гость. Только пользователь может получить доступ к авторизованному API. Мой подход состоит в том, чтобы поместить пользователя в другую группу в пуле пользователей, назначить политику IAM для группы и включить пул идентификаторов. Это вынуждает меня изменить тип авторизации в API-шлюзе на IAM. и IAM требует, чтобы каждый запрос был подписан подписью V4.
Это означает, что все запросы должны регистрироваться по токену сеанса, ключу доступа, секрету (возвращенному после токена идентификатора обмена с объединенным пулом) вместо использования подхода, основанного на маркере доступа. Таким образом, в моем случае использования, после того как мой пользователь вошел в систему через шлюз API, мое клиентское приложение (инструмент web / mobile / postman) должно сгенерировать подпись и поместить в заголовок авторизации. Существуют ли альтернативные способы управления авторизацией в группе пользователей, но с использованием токена доступа в API-шлюзе? Насколько я понимаю, маркер доступа (в заголовке авторизации) гораздо проще в использовании, чем сложный процесс подписанной подписи.
Поправь меня, если я ошибаюсь. Спасибо.