Режим регистрации незавершенных попыток входа#

В Blitz Identity Provider все события фиксируются по факту окончания вызывавшего их процесса. Для большинства событий это нормально, так как процессы краткосрочные.

Среди всех регистрируемых событий есть важные события, связанные с входом пользователей. Если вход произошел успешно, то в самом конце процесса входа регистрируется событие безопасности, в котором указывается, кто, куда и когда вошел, какие методы аутентификации были задействованы, IP-адрес, UserAgent и много других деталей.

В зависимости от сделанных при внедрении настроек процесс входа может быть устроен сложно. Не всегда будет достаточно только ввести логин и пароль, и нужно будет дополнительно пройти подтверждение входа или в процессе входа пользователь будет взаимодействовать со вспомогательными приложениями (pipes), например, актуализировать контакт, настраивать Passkey или отвечать на вопрос, доверяет ли он устройству/браузеру. Если пользователь в какой-то момент этого процесса перестанет продолжать вход, то процесс входа не завершится, и как следствие, событие аудита о таком незавершенном входе не создастся. В зависимости от того, в какой момент это случится, это может быть проблемой безопасности. Например, если пользователь просто открыл страницу входа и не стал вводить логин и пароль, то фиксация такого события в журнале безопасности не представляет особого интереса. А вот если пользователь ввел правильные логин и пароль, но попал на экран подтверждения входа, который не стал проходить, то такое событие безопасности было бы хорошо зафиксировать. Возможно, злоумышленник перебирал пароль и смог успешно его подобрать, но не смог пройти проверку второго фактора аутентификации. Событие безопасности позволило бы узнать о такой ситуации, если бы оно было записано и анализировалось.

Для включения регистрации событий неуспешных (незавершенных) входов необходимо в блоке настроек blitz.prod.local.idp.login добавить параметры:

  • postponeEnabled – значение true, если механизм включен;

  • postponeTtl – время в секундах, после истечения которого регистрируется отложенное событие аудита, если вход не был завершен.

В случае если для обработки задач используется RabbitMQ, то для основной очереди задач необходимо сделать дополнительную очередь с названием <название основной очереди>-postpone и задать для нее следующие аргументы:

x-dead-letter-exchange = <используемый exchange>
x-dead-letter-routing-key = <основная очередь>

Так же для созданной очереди необходимо настроить binding на используемый exchange.