AWS Api Gateway: как обрабатывать авторизацию, аутентификацию, SSO и т. д


Я рассматриваю несколько подходов к повторной разработке узла.JS restful монолитное приложение, использующее микросервисы в сочетании со шлюзом api. При рассмотрении использования шлюза aws api, хотя, кажется, есть несколько пунктов, по которым я не смог найти много документации. Во-первых, приложение, которое я разрабатываю, должно поддерживать SSO, я хотел бы, чтобы пользователи могли зарегистрироваться, либо создав локальный логин, либо используя свои текущие facebook, twitter и т. д. социальные счета.

Как этот процесс будет обрабатываться aws api gateway, тем более что мне потребуется использовать пользовательскую базу данных для записи и чтения, не говоря уже о авторизации пользователя?

Кроме того, например, предположим, что мои микросервисы имеют следующие ограниченные контексты:

Учетная запись (логин, регистрация, управление профилем),

Биллинг (может быть не идеально подходит для бессерверного из-за времени работы, может выбрать docker + ec2),

Друг (настройка друга ассоциации),

Файл (пользователи могут загружать фотографии и видео на свою временную шкалу-похоже, это еще один кандидат docker + ec2);

И я хочу использовать шлюз api для защиты всех конечных точек микросервиса, кроме тех, которые относятся к входу и регистрации, как это должно быть сделано?

Узел.js содержит пакет, который, кажется, обрабатывает jwt и аутентификацию пользователей через facebook, twitter, local и т. д. называется passport, могу ли я использовать его со шлюзом api проверка подлинности?

Кроме того, если шлюз api защищает микросервисы, как объект запроса и объект ответа передаются между шлюзом и микросервисами для различных выполняемых запросов?

Кроме того, если я решу построить пользовательский шлюз api, где шлюз прослушивает другой порт и содержится в отдельном контейнере docker, как он должен регулировать разрешения для микросервисов, которые находятся в других контейнерах docker, прослушивающих другие порты?

В двух словах, любая документация, которая действительно проходит через этот процесс и отвечает на вопросы, которые я перечислил выше, будет чрезвычайно полезна. Кроме того, если я смотрю на это неправильно или задаю неправильные вопросы, совет в этом отношении также был бы полезен.
1 2

1 ответ:

Я бы предложил использовать пользовательский пул Cognito для защиты ваших API, но вам нужна лямбда-функция в качестве бэкенда, так как API Gateway не поддерживает интеграцию с VPC. Я предлагаю вам посмотреть этот пост в блоге для настройки пользовательского пула cognito в качестве авторизатора для ваших API.

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