В современных условиях любая растущая компания рано или поздно сталкивается с необходимостью централизованного управления доступом сотрудников к информационным системам. Эффективным решением в такой ситуации является внедрение единой системы идентификации на базе Keycloak.
В мире информационных технологий нет ничего постоянного. Стандарты меняются: если раньше стандартом было развертывание локальных серверов и отдельных учетных записей, то сейчас фокус сместился в сторону централизованного управления идентификацией. Современным базовым стандартом для любой развитой IT-инфраструктуры стал Единый Вход или SSO (Single Sign-On).
SSO — это метод аутентификации, который позволяет пользователю один раз войти в систему и получить доступ к нескольким связанным приложениям или сервисам без необходимости повторного ввода учетных данных.
Наша команда на практике прошла путь интеграции с различными SSO. Мы работали с такими решениями, как WSO2 и ADFS, и каждый раз убеждались в том, насколько SSO важен для инфраструктуры.
Этот опыт позволил определить требования к Identity Provider’у: открытость, масштабируемость и возможность адаптации под быстро меняющиеся бизнес-задачи. И здесь на первый план выходит Keycloak.
Почему именно Keycloak?
В отличие от многих аналогов, Keycloak — это решение с рядом преимуществ:
- Открытый исходный код и отсутствие лицензионных затрат: Keycloak распространяется под лицензией Apache 2.0, что означает его бесплатность для коммерческого использования.
 - Простота внедрения и разработки: легко настраивается и интегрируется благодаря поддержке всех ключевых протоколов (OpenID Connect, SAML 2.0, OAuth 2.0)
 - Платформа предлагает различные механизмы для защиты (двухфакторная аутентификация, настройка требований к сложности пароля и т.д.)
 - Keycloak дает возможность кастомизации. Вы можете полностью изменить интерфейс страницы входа, написать собственные модули для нестандартных сценариев аутентификации и работать с любыми источниками пользователей (базы данных, Active Directory и тд.)
 - Keycloak поддерживает работу в отказоустойчивом режиме.
 
Наша команда не в первый раз работает с этой платформой, и недавно провела внедрение системы идентификации на базе Keycloak для еще одного проекта и поделилась подробностями.
С чего все началось
В рамках проекта заказчик стоял перед проблемой: наличие двух больших, но совершенно разных групп пользователей.
- Первая группа – офисные сотрудники, уже имевшие учетные записи в Active Directory.
 - Вторая группа – многочисленные сотрудники удаленных точек продаж, не заведенные в централизованные каталоги и использовавшие для доступа к системам общие или локальные учетные записи.
 
Единственной системой, где были заведены все сотрудники, была ERP-система, в которой сохранялся только статус сотрудников, что создавало сложности в управлении и неудобства для пользователей.
Было принято решение о внедрении единой системы идентификации и управления доступом на базе Keycloak в отказоустойчивом режиме.
- Ключевые цели проекта включали в себя:
 - Создание единого хранилища учетных данных всех пользователей;
 - Интеграция этого хранилища с ERP-системой для синхронизации актуальных данных;
 - Подключение к Keycloak существующего Active Directory и каталога с пользователями удаленных филиалов;
 - Настройка интеграции информационных систем компании с Keycloak.
 
Опыт внедрения: ключевые этапы
Работа была разделена на несколько четких этапов, что позволило системно подойти к решению этой задачи и завершить внедрение единой системы аутентификации для 44 информационных систем примерно за год.
Этап 1. Подготовка и проектирование
На этом этапе было сделано следующее:
- Продумали, как будут связаны между собой все технические компоненты, чтобы система работала без сбоев.
 - Определили, сколько пользователей система может обслуживать одновременно, чтобы не “легла” в самый ответственный момент.
 - Прописали, какие данные и между какими системами будут передаваться.
 - Провели анализ и выбор систем для пилотного подключения.
 - Изучили и подобрали способ двухфакторной аутентификации.
 - Создали макеты страниц входа и личного кабинета пользователя.
 - Настроили тестовую среду и создали пространство, где можно было бы тестировать настройки, не мешая работе других систем.
 
Этап 2. Реализация
На этом этапе мы перешли к практической реализации:
- Развернули две пробные версии системы (для разработки и тестирования): Dev и Stage окружения Keycloak.
 - Настроили VPN-туннель Site-to-site для безопасного взаимодействия между серверами и CI/CD для сервиса интеграций.
 - Внедрили и протестировали двухфакторную аутентификацию на Stage окружении.
 - Для ERP-системы определили возможные способы получения информации обо всех активных сотрудниках компании, а также сформировали основной перечень атрибутов данных, которые система должна передавать.
 - Провели первую успешная интеграцию: команда установила и подключила к Keycloak две тестовые системы – NetBox и NextCloud. Это позволило отработать процесс переключения и подготовить универсальную инструкцию для коллег из смежных систем.
 - Завершили работу над дизайном страницы авторизации и личного кабинета пользователя в Keycloak.
 
Проверенное решение и наш подход
Keycloak зарекомендовал себя как надежный стандарт. Это решение позволяет эффективно решать задачи безопасности и управления доступом.
Наша работа с Keycloak включает в себя:
- Полный цикл внедрения Keycloak: от проектирования отказоустойчивой архитектуры до подключения конечных систем.
 - Глубокую интеграцию: подключение Keycloak к самым разным системам, а также интеграции с каталогами (например, Active Directory).
 - Миграцию с других решений: понимаем тонкости переноса пользователей и политик с других SSO-провайдеров на платформу Keycloak.
 - Кастомизацию и адаптацию: можем адаптировать интерфейсы и процессы аутентификации под конкретные бизнес-требования и корпоративный стиль заказчика.