Как использовать Django аутентификацию с Amazon Gateway API?
На проекте планируется использование Gateway API от амазона что бы пускать через него все запросы к API. Проет состоит из трех отдельных джанго проектов (микросервисов) которые реализуют REST API. Один микросервис это - users, на котором стоит модуль для JWT авторизации. Стоит задача реализовать аутентификацию пользователей на гейтвее что бы не проверять авторизацию на каждом микросервисе. Был ли у кого нибудь опыт по внедрению django аутентификации с амазоновским гейтвеем?
OAuth + Amazon Lambda function для проверки токенов API Gateway Custom Authorizers
Использую в крупном проекте с большим количеством клиентов, несколько микросервисов с единым центром авторизации, всё работает как надо.
У вас API только для сторонних клиентов или так же есть ваше основное веб приложение которое так же служит неким OAuth приложением с client_id? Можете чуть подробнее описать ваш процесс авторизации и как вы проверяете токен в лямбда функции?
Alexander,
1. Login: сервер аутентификации проверяет имя пользователя / пароль, и возвращает refresh token, содержащий id пользователя. Refresh token криптографически подписывается с помощью закрытого ключа, хранящегося на сервере аутентификации.
2. Получение токена для доступа к данным: сервер авторизации проверяет refresh token с помощью открытого ключа, и возвращает access token, содержащий права доступа. Access token криптографически подписывается с помощью закрытого ключа, хранящегося на сервере авторизации.
3. Проверка токена: amazon api gateway запускает lambda функцию, которая проверяет access token с помощью открытого ключа, и сопоставляет его с параметрами запроса. Результат возвращает в api gateway.
4. Доступ к данным: если проверка пройдена успешно, api gateway обращается к соответствующему микросервису. Если нет, возвращает ошибку.
Для каждого из токенов устанавливается предельный срок жизни, у access token он, как правило, небольшой. Новый access token можно получить с помощью refresh token, не проводя повторную проверку имени пользователя и пароля.