Как отключить пользователя Cognito после превышения неудачных попыток входа - PullRequest
0 голосов
/ 24 октября 2019

У меня есть угловое приложение, которое использует AWS Cognito для аутентификации, и я хочу отключить пользователей после 5 неудачных попыток. Есть метод adminDisableUser(), но он требует учетных данных администратора. Я имею в виду лямбда-функцию, которая должна запускаться при Предварительная регистрация или Предварительная проверка подлинности , которая должна проверять, успешна ли попытка или нет. Если это не удалось, он должен увеличить значение пользовательского атрибута, например custom:failedAttempts. Если значение равно 5, пользователь должен быть отключен. Лямбда может быть выполнена с разрешения администратора, так что он может использовать adminUpdateUserAttributes() и adminDisableUser() Однако я не совсем уверен, как это может произойти, потому что я новичок в AWS лямбда и IAM. Заранее спасибо!

1 Ответ

0 голосов
/ 31 октября 2019

Cognito уже ограничивает конечную точку входа в систему, чтобы предотвратить атаки методом перебора, хотя, по моему опыту, кажется, что это может быть немного ужесточено. Я полагаю, что предложенный вами план является опасным подходом, поскольку злоумышленник может отправить 5 неудачных попыток входа в систему для любого пользователя и заблокировать их.

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

В Post-аутентификации (срабатывает после успешного входа в систему) сбросьте пользовательский атрибут на ноль.

...