AWS Cognito и API-шлюз с использованием Lambda Authorizer - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь создать API-интерфейсы с использованием API-шлюза и функций Lambda.

На основе группы пользователей (не групп пользователей Cognito) я хочу предоставить доступ к отдельным таблицам DynamoDB.

Подход, которым я придерживаюсь, заключается в том, что я создаю отдельный пул пользователей Cognito для каждой группы пользователей.

Когда пользователь входит в систему, он аутентифицируется в соответствующем пуле пользователей.

Для вызова последующих API я планирую использовать Lambda Authorizer.

Пользователь передаст токен ID в запросе заголовка HTTP, и я хочу проверить этот токен ID.

Это правильный подход?Или, если есть какой-то лучший подход для реализации этого рабочего процесса.

Можем ли мы использовать группы пользователей Cognito и это будет безопасный подход?

Я хочу строго разделить таблицы одного пользователягруппа от другого.

Я наткнулся на ссылку ниже, чтобы проверить токен ID.

https://github.com/awslabs/aws-support-tools/blob/master/Cognito/decode-verify-jwt/decode-verify-jwt.js

1 Ответ

1 голос
/ 09 июля 2019

AWS предлагает несколько проверенных архитектур и инструментов для упрощения описанного выше варианта использования.

Нет необходимости использовать несколько пулов пользователей для вышеуказанного варианта использования. Это можно сделать с помощью одного пула пользователей.

Простая архитектура может быть UI-> API gateway-> Lambda-> DynamoDB

Пользователи в пуле пользователей Cognito можно добавлять в группы и устанавливать с помощью политик IAM. Затем API-шлюз можно настроить для IAM или Cognito Authorizer. Каждая лямбда-запись, написанная для доступа к различным таблицам DynamoDb, может быть авторизована на уровне API.

В этом случае пользовательский авторизатор не требуется.

Используйте AWS Amplify для аутентификации пользователя и всех других коммуникаций. Amplify будет обрабатывать часть передачи токена самостоятельно с любым дополнительным написанным кодом. При этом подходе токены JWT могут считываться / проверяться и логически использоваться на уровне пользовательского интерфейса, а также в коде сервера (лямбда). Этот же токен используется в шлюзе API для авторизации по умолчанию (без написания кода).

Пул пользователей Cognito и пул удостоверений - это решения AWS корпоративного уровня, а AWS Amplify дополняет высоконадежную реализацию протоколов Sigv4, SRP и т. Д., Которые очень сложны и сложны для реализации с использованием пользовательского кода.

...