Используйте настраиваемую логику авторизации с аутентификацией AWS Cognito

У нас есть пул пользователей Cognito, который содержит пользователей, которым мы хотели бы разрешить доступ к нашему API. Наш API использует функции Lambda для обслуживания конечных точек. Пул Cognito настроен с помощью настраиваемого поля roles, которое по сути представляет собой список ролей, разделенных запятыми, которыми обладает пользователь.

Теперь, во-первых, мы хотим, чтобы имела место аутентификация Cognito (чтобы определить, действительно ли пользователь принадлежит к нашему пулу и действительны ли учетные данные). Затем мы каким-то образом хотим запустить нашу настраиваемую логику для запуска, которая будет смотреть на поле roles, которое она получит через утверждения, а затем разрешить или отклонить запрос на основе внутренней бизнес-логики.

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

Как мы достигаем цели использования настраиваемой логики с авторизацией Cognito? Любая помощь в этом отношении будет принята с благодарностью.


person aditya_medhe    schedule 05.12.2017    source источник
comment
Что вы имеете в виду под «Проблема» заключается в том, что, поскольку Cognito защищает конечные точки API, а не лямбда-функции как таковые, авторизация Cognito просто не запускается при попадании в конечную точку API и вызове настраиваемого авторизатора.   -  person Ashan    schedule 05.12.2017
comment
Авторизатор лямбда-выражения защищен авторизацией Cognito через шлюз API. (Событие HTTP). Но мы выполняем его через настраиваемую настройку авторизатора (тип события REQUEST). Следовательно, авторизация Cognito не вызывается вообще перед запуском настраиваемого авторизатора.   -  person aditya_medhe    schedule 05.12.2017


Ответы (1)


Все утверждения в токене пользователя доступны в контексте, который может быть передан вашей лямбда-функции, если вы используете авторизаторы когнитивных функций в $context.authorizer.claims.property. Сопоставит это утверждение с вашей лямбда-функцией и проверяет, присутствуют ли роли в начале вашей лямбда-функции. лямбда у вас работает?

person behrooziAWS    schedule 14.12.2017