Необходим пользовательский авторизатор AWS Gateway при использовании авторизации AWS_IAM в запросе метода?

Я использую AWS Gateway в качестве веб-API с AWS Lambda в качестве бессерверного бэкэнда. Лямбда-функции вызываются только API шлюза. Через Lambda я вызываю и выполняю операции на других сервисах AWS (RDS, SNS и т. Д.). Я хочу, чтобы только мои клиенты получали доступ к моим веб-API. Для этого я настраиваю все свои API шлюза с авторизацией AWS_IAM. У неаутентифицированного клиента есть только политики, которые позволяют ему вызывать, например: функция для входа / регистрации пользователя. Для сравнения, у аутентифицированного клиента есть политики, которые позволяют ему получить доступ к большему количеству ресурсов.

Теперь возникает вопрос: поскольку я хочу, чтобы мои клиенты получали доступ только к моим API-интерфейсам шлюза и делали это как можно более безопасным, необходимо ли создавать настраиваемый авторизатор, который проверяет действительность токенов?

Я не настраивал ни пул пользователей когнитивных данных, ни внешний публичный провайдер (google, Facebook, openId, amazon и т. Д.). Я работаю с пользовательскими удостоверениями, аутентифицированными разработчиками. Все пользователи сохраняются в AWS RDS. Когда пользователь пытается войти в систему и проходит правильную аутентификацию по электронной почте и паролю, клиенту возвращается открытый идентификатор и токен jwt. Это делается путем вызова getOpenIdTokenForDeveloperIdentity.

Я нашел несколько ресурсов в Интернете, где люди создавали настраиваемый авторизатор, но они всегда проверяли действительность токена внешним поставщиком (google, facebook, auth0 и т. Д.). Этот участник написал, что вам нужен внешний провайдер только тогда, когда у вас есть «[...] совершенно другая логика авторизации [...]» https://stackoverflow.com/a/39407156/5181862. И я не думаю, что здесь дело обстоит именно так.

Клиентами, на которых запускается приложение, являются устройства iOS и более поздние версии Android, если эта информация необходима.


person Baran Emre    schedule 08.08.2017    source источник


Ответы (1)


Если все API имеют авторизацию AWS_IAM, это уже довольно безопасно. AWS_IAM требует, чтобы у клиента были действительные учетные данные AWS из той же учетной записи, что и API (ваша учетная запись).

Похоже, вы используете Cognito (речь идет о политике неаутентифицированного клиента), и в этом случае ваша модель авторизации безопасна, если реализована правильно.

person jackko    schedule 04.12.2017
comment
Хорошо, что это от команды AWS. Спасибо. Я уже реализовал окончательное решение, и да, я работаю с AWS Cognito. Я обновлю свой ответ для других людей, которые столкнутся с той же проблемой / вопросом. - person Baran Emre; 05.12.2017