Я использую 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, если эта информация необходима.