Алексей Хмельницкий: Надо сказать, что на старте здесь многих ждет ловушка. Она исходит из тезиса «любой junior-разработчик напишет форму логина». Действительно, нередко аутентификация пользователей зарождается как простой модуль или микросервис в составе цифровой инфраструктуры. Вход по логину и паролю с кодом по SMS в качестве второго фактора или вход через соцсеть можно реализовать на основе бесплатной библиотеки или легкого Open Source проекта. Многим кажется, что это и есть вся аутентификация.
Сложности появляются при попытке выйти за рамки простых задач: добавить вход по электронной цифровой подписи (ЭЦП), организовать бесшовную аутентификацию между сервисами (Single Sign-on), разработанными разными командами, осуществлять авторизацию в зависимости от должности в компании, выполнять асинхронные проверки при регистрации и так далее. И делать все это в соответствии со стандартами безопасности, подходом Application Security, не забывая про UX. Так что
первой особенностью разработки CIAM я бы назвал высокую техническую сложность.
Вторая особенность — необходимость выдерживать высокую и волнообразную нагрузку. Клиентов у компании обычно в разы больше, чем сотрудников, и приходят они неравномерно. На приток клиентов влияют акции, зарплатные дни, слухи на бирже и т.д.. Доступность CIAM, кстати, должна быть даже выше, чем у бизнес-системы, к которой пытается обратиться пользователь.
Кроме того, CIAM-система должна обеспечить отличный клиентский UX. Аутентификация — это первая и наиболее часто используемая функция ваших приложений. Если говорить утрированно, пользователь ничего не сделает, пока не войдет, поэтому сценарии взаимодействия пользователя с CIAM должны быть тщательно продуманы.
В RooX UIDM сценарии позволяют не ограничиваться вариантами «логин+пароль с двухфакторной аутентификацией или без нее». В нашей системе можно строить произвольные сценарии аутентификации в виде графа с развилками и слияниями при выполнении заложенных условий. При этом система спроектирована в соответствии с подходом API-First, поэтому можно писать интерфейс аутентификации с использованием любой технологии. А благодаря SDK разработчики получают простую интеграцию с сервером RooX UIDM.
И, наконец, надо отметить, что
хорошая CIAM-система должна позволять находить компромисс между безопасностью и удобством для пользователей. Но поскольку такие системы, как правило, стоят между злоумышленниками и чувствительными данными, цена ошибки высока. Это тоже приходится учитывать в разработке.
Интервью полностью на TAdviser.ru.