Мой опыт показал, что этот простой на первый взгляд механизм часто вызывает неожиданные сложности в реализации. Когда в дискуссиях меня начинают спрашивать почему, приходится долго объяснять. Поэтому решил создать эту статью как ликбез, да и чтобы в процессе свои мысли структурировать для будущих аргументов.
TLDR;
Использование IDaaS (SaaS в авторизации и аутентификации пользователей) для систем, не ограниченных контуром предприятия, имеют самую большую эффективность и удобство. В конце статьи будет сравнительная таблица.
Что такое SaaS и IDaaS? (Если вам это не знакомо)
SaaS (Software as a Service) - это модель, в которой программное обеспечение работает в облаке и предоставляется пользователю как готовый сервис.
Инфраструктура, обновления, безопасность, масштабирование и эксплуатация находятся на стороне поставщика, а команда клиента взаимодействует только с функциональностью - через веб-интерфейс или API.
В России к примерам можно отнести такие сервисы как amoCRM или Яндекс 360.
Вместо того чтобы поднимать собственные CRM или офисные пакеты, компании просто подключаются к готовой платформе и пользуются функционалом “из коробки”.
IDaaS (Identity as a Service, частный вариант SaaS) - это облачное решение для управления идентификацией и доступом (IAM), предоставляемое сторонним поставщиком по подписке. Оно обеспечивает безопасный вход (SSO), многофакторную аутентификацию (MFA) и управление пользователями, снижая затраты на инфраструктуру и повышая безопасность.
Давайте разберемся почему так выходит:
Итак, авторизация сейчас реализуется преимущественно в 5 стандартных сценариях (отсортированы по популярности по убыванию).
Использование Open Source
Самостоятельная разработка
Использование корпоративных решений
SaaS-сервисы
Вайб-кодинг
Дисклеймер:
Поскольку использование SaaS когда ПО развернуто внутри закрытого контура предприятия, не самая лучшая идея, все сценарии буду рассматривать через призму их использования через глобальную сеть.
Оценки давал субъективные, поэтому с чьим-то опытом они могут не совпасть. Мы можем обсудить ваши оценки в комментариях.
А теперь по списку:
1. Open-source
Этап |
Задачи |
Сложность / Затраты |
1. Анализ требований |
Какие функции нужны, какие open-source подходят |
Средняя |
2. Деплой |
Настройка сервера, контейнеризация (Docker/K8s) |
Средняя |
3. Конфигурация |
Настройка клиентов, политик, ролей, шифрования |
Средняя-Высокая |
4. Интеграция с фронтом и бэком |
SDK, API, документация |
Средняя |
5. Тестирование |
Защищенность, нагрузка, баги |
Средняя-Высокая |
6. Поддержка |
Обновления OSS, патчи безопасности, миграции |
Средняя |
7. Модификация / кастомизация |
Если нужны уникальные фичи |
Высокая, иногда почти как разработка с нуля |
Итого: не критично много разработки, хотя без нее не обходится, и остаются значительные затраты на деплой, настройку и поддержку.
В некоторых случаях это действительно хорошее решение, например для использования в закрытом контуре предприятия, когда использование корпоративных решений не оправдывает себя. И тем не менее - это совсем не так “бесплатно”, как звучит. Это скорее немного проще и надежней, чем самостоятельная разработка.
2. Самостоятельная разработка (с нуля)
Этап |
Задачи |
Сложность / Затраты |
1. Анализ требований |
Определение сценариев логина, ролей, прав доступа, compliance |
Высокая |
2. Дизайн архитектуры |
Решение о токенах (JWT, OIDC), хранении паролей, сессиях, масштабировании, модулях |
Высокая |
3. Выбор технологий |
Языки, БД, криптография, обмен данными |
Средняя |
4. Разработка модулей |
Регистрация, логин, MFA, OAuth2/OIDC, RBAC, ACL |
Очень высокая |
5. Интеграция с фронтом |
SDK, API, документация для команд |
Средняя |
6. Безопасность |
Хэширование паролей, защита от CSRF, XSS, brute-force, аудит |
Очень высокая |
7. Логирование и мониторинг |
Ведение событий, оповещения |
Средняя |
8. Тестирование |
Unit, интеграционное, нагрузочное, security |
Высокая |
9. Поддержка и обновления |
Исправления багов, адаптация под новые стандарты |
Постоянная высокая |
Итого: почти полностью ручная работа, высокая стоимость времени и рисков.
Если кто-то скажет, что запилим сами за неделю, стоит насторожиться. А если посчитать работы в рублях, то и поплохеть может. В одной организации такой инструмент при мне создавали год целой командой (было стратегическое решение, что данный модуль должен быть "своим").
3. Корпоративное решение
Этап |
Задачи |
Сложность / Затраты |
1. Анализ требований |
Полная модель пользователей, интеграции, соответствие стандартам |
Средняя-Высокая |
2. Закупка лицензий |
Стоимость лицензий, серверов, SLA |
Очень высокая |
3. Деплой / установка |
Серверы, сетевые настройки, LDAP/AD |
Высокая |
4. Конфигурация |
Клиенты, ролей, групп, политик безопасности |
Средняя-Высокая |
5. Интеграция с продуктами |
SDK, SSO, SAML/OIDC, API |
Средняя-Высокая |
6. Обучение персонала |
Администраторы, DevOps, поддержка |
Средняя |
7. Тестирование и аудит |
Security, compliance, нагрузка |
Средняя-Высокая |
8. Поддержка |
SLA, обновления, патчи, консалтинг |
Постоянная высокая |
Итого: дорого, сложная интеграция, медленная адаптация, но высокая надежность. Для корпораций часто важна минимизация рисков, соблюдение жестких требований, за что они готовы неплохо платить. Именно для этого и создается корпоративное ПО.
4. SaaS-сервис
Этап |
Задачи |
Сложность / Затраты |
1. Анализ требований |
Определение сценариев логина и прав |
Низкая |
2. Регистрация и настройка |
Создание проекта, ключей API |
Низкая |
3. Интеграция с фронтом и бэком |
Использование SDK/REST API |
Средняя |
4. Тестирование |
Проверка логики интеграции, пользовательских ролей |
Средняя (короткий цикл) |
5. Поддержка |
Обновления и безопасность обеспечиваются SaaS |
Очень низкая для команды клиента |
Итого: почти все тяжелые этапы перекладываются на сервис, затраты клиента минимальны, быстрая интеграция, низкие риски безопасности и регуляторных требований. При этом сохраняется необходимый уровень доступа к данным пользователей.
5. Вайб-кодинг
Этап |
Задачи |
Сложность / Затраты |
1. Анализ требований |
Определение сценариев логина, ролей, прав |
Низкая |
2. Настройка платформы |
Создание проекта, подключение пользователей, шаблоны auth |
Низкая-Средняя |
3. Интеграция с фронтом/бэком |
Drag-and-drop компоненты, готовые API |
Средняя |
4. Тестирование |
Проверка логики интеграции, ролей |
Средняя (короткий цикл) |
5. Поддержка |
Обновления, исправления багов обеспечиваются платформой |
Низкая |
6. Ограничения / кастомизация |
Если нужны уникальные фичи или сложная RBAC - возможно придется писать код |
Средняя-Высокая при сложных требованиях |
Итого: Быстрое прототипирование и MVP, экономия времени. На данном этапе своего развития это решение несет некоторые риски, и являясь отличным инструментом для малого бизнеса, для среднего уже может быть опасным. Ограничения платформы могут мешать сложным сценариям безопасности или интеграции. В случае разработки кода с помощью ИИ-агентов в IDE (возможно, это вообще стоит отнести к самостоятельной разработке) - нестабильность кода и сложность поддержки и дальнейшей разработки, масштабирования. Но если вайб-кодинг использовать вместе с SaaS - то это может повысить стабильность системы за счет высокой стабильности ее отдельных компонентов.
Попробую собрать сложность в сводной таблице:
Критерий |
Самостоятельная разработка |
Open-source |
Корпоративное решение |
SaaS (Авториза) |
Вайб-кодинг / low-code |
Анализ требований |
8/10 — требуется проработка всех сценариев |
6/10 — нужно сопоставить с возможностями OSS |
7/10 — строгие стандарты |
3/10 — описать сценарии |
3/10 — упрощённая модель |
Разработка / конфигурация |
10/10 - всё с нуля |
7/10 - глубокая настройка |
7/10 - сложная конфигурация |
2/10 - почти всё готово |
4/10 - GUI + немного кода |
Интеграция с фронтом / бэком |
6/10 - писать SDK |
5/10 - интеграция с API OSS |
6/10 - сложные протоколы |
4/10 - понятные SDK/API |
4/10 - drag-and-drop + API |
Тестирование |
8/10 - все уровни тестов |
6/10 - защищенность и нагрузка |
6/10 - аудит и совместимость |
4/10 - в основном функциональное |
4/10 - короткий цикл |
Безопасность / регуляторы |
10/10 - всё на команде |
7/10 - зависит от качества OSS |
6/10 - высокий уровень требований |
2/10 - на стороне сервиса |
3/10 - обеспечивается платформой |
Поддержка и обновления |
9/10 - постоянные затраты |
6/10 - патчи OSS |
6/10 - SLA и обновления |
2/10 - на стороне SaaS |
3/10 - автоматические |
Кастомизация / расширяемость |
6/10 - полная свобода |
6/10 - ограничена ядром OSS |
6/10 - но сложная |
4/10 - ограничена моделью SaaS |
5/10 - ограничена low-code |
Скорость внедрения |
10/10 - медленно |
6/10 - средне |
7/10 - медленно |
2/10 - очень быстро |
3/10 - быстро |
Стоимость реализации |
10/10 - самая высокая |
6/10 - средняя |
9/10 - высокая (лицензии) |
3/10 - низкая |
4/10 - низкая-средняя |
Риски / сложность управления |
9/10 - много уязвимостей |
6/10 - зависимость от OSS |
7/1 - сложность, vendor lock-in |
3/10 - минимальные |
5/10 - ограничения платформы |
Итоговая сложность (средний балл по столбцу)
Я посчитал средний балл по всем критериям - это «общая сложность и затратность подхода». Оценка 0-10, где 10 = максимально сложно/затратно.
Решение |
Итоговый балл |
Интерпретация |
Самостоятельная разработка |
8,6 / 10 |
Самое трудоемкое, дорогое и рискованное |
Open-source |
6,1 / 10 |
Средняя сложность, ощутимые DevOps-затраты |
Корпоративное решение |
6,7 / 10 |
Дорого, долго, сложно, но надежно |
SaaS |
2,9 / 10 |
Минимальная сложность, оптимально по стоимости и скорости |
Вайб-кодинг / low-code |
3,8 / 10 |
Быстро для MVP, ограничения при росте |
А теперь козыри на стол - из всех решений только внедрение SaaS позволяет за один-два дня работы мидл разработчика подключить готовый безопасный полноценный функционал, который будет обходиться на проде в год всего 20-30 тысяч рублей! А для разработки вообще бесплатен. Например Авториза на старте бесплатна для проектов с 500 пользователями, а потом стоимость фиксирована в месяц. Из минусов - относительная потеря контроля над данными. Они хранятся не в "своих" БД. На самом деле этот риск легко нивелируется, например, возможностью миграций, предусмотренных в SaaS, и другими инструментами.
Возможно, в статье я забыл какое-то преимущество или минус - кидайте в комментарии, обсудим. Такой формат для меня не привычен, но я постарался, чтобы статья была полезна.
Руководствуясь этими мыслями, я запускаю сервис Авториза - для аутентификации и авторизации пользователей в веб-приложениях и платформах. Сейчас он еще не готов для запуска, но в ближайшее время будет развернута первая версия.
У меня запущена гуглоформа, которая собирает обратную связь, и в которой можно также подписаться на новости.
Отдельно хочу искренне поблагодарить тех, кто уже оставил обратную связь! Ваши отклики и комментарии очень помогают мне
не сдаватьсявыбирать стратегию развития проекта.Я ищу сооснователей - если вы заинтересовались и хотите принять в проекте участие на правах соучредителя, а не за зарплату - я открыт к контактам.
Также проект ищет инвесторов, готовых поучаствовать в его развитии.
Спасибо, что дочитали!
BigD
Keycloak as a service?
metis Автор
Близко к этому, но не совсем оно) Если у вас есть такой запрос, на Keycloak as a service - напишите, и это в целом возможно отдельной услугой сделать.