Централизованная аутентификация и SSO на базе Keycloak для корпоративных систем

2 апреля 2026

Крупная сеть ресторанов столкнулась с типичной проблемой растущей IT-инфраструктуры: десятки систем с разными механизмами авторизации, множественные интеграции и отсутствие единого управления доступами. Мы построили централизованную систему аутентификации на базе Keycloak, объединив офисные и ресторанные системы в единую точку входа.

Исходная инфраструктура

В инфраструктуре компании работало около 50–60 систем, каждая со своей историей внедрения, собственным поставщиком и правилами интеграции.

Разнородность систем

Сотрудники делились на два типа: офисные и ресторанные.

Офисные сотрудники находились в Active Directory, и корпоративные системы уже были к нему подключены. В этой части инфраструктура оставалась управляемой. С ресторанными сотрудниками ситуация была иной. Здесь сложилось два подхода, и оба создавали проблемы.

Первый — общие обезличенные учетки из Active Directory. Один логин и пароль на весь ресторан или смену: кассир, администратор и управляющий заходили под одними и теми же данными. Кто именно работал в системе в конкретный момент — неизвестно, полноценный аудит действий в таких условиях невозможен.

Второй — часть систем создавала собственную базу пользователей. Поставщик подключался к ERP (Корпоративная система, в которой HR-отдел ведет учет и управление данными о сотрудниках), забирал нужный ему список сотрудников и хранил их у себя: свои логины, свои пароли, своя логика того, кого считать активным сотрудником, а кого — уволенным. В итоге у каждой такой системы был свой срез сотрудников, и никто не сверял эти списки между собой.

В результате было сложно ответить на базовые вопросы:

  • кто и к каким системам имеет доступ 
  • закрыты ли учетные записи уволенных сотрудников 
  • как именно работает конкретная интеграция 

Эта информация чаще всего находилась только у поставщика системы и нередко была неполной.

Сложность для пользователей и администраторов

Сотрудники, работающие с несколькими системами, были вынуждены запоминать разные логины и пароли.

Администратору, которому требовалось закрыть доступ уволенному сотруднику, приходилось обращаться к каждому поставщику системы отдельно. Единого инструмента управления доступами не существовало.

Архитектура решения: аутентификация и SSO на базе Keycloak

В основе решения — Keycloak, open-source платформа для централизованной аутентификации и авторизации.

Ключевая возможность этой системы — единый вход (SSO). Пользователь вводит логин и пароль один раз и получает доступ ко всем подключенным системам без повторной авторизации.

Keycloak поддерживает стандартные протоколы безопасности:

  • OAuth 2.0 
  • OpenID Connect 
  • SAML 

Это позволяет подключать большинство современных систем без разработки отдельной кастомной интеграции для каждой.

Единым источником данных о сотрудниках стала ERP-система. Из нее информация поступает в сервис синхронизации:

  • для ресторанных сотрудников создаются учетные записи в FreeIPA 
  • для офисных сотрудников основным каталогом остается Active Directory, который дополнительно обогащается данными из ERP 

Keycloak подключен к обоим каталогам через механизм федерации и выступает единой точкой входа для всех систем.

Второй фактор аутентификации реализован по-разному для разных категорий сотрудников:

  • офисные сотрудники используют внешний MFA-сервис с push-подтверждением на телефоне 
  • ресторанные сотрудники используют стандартный TOTP через приложение-аутентификатор 

Восстановление пароля происходит через второй фактор, если он настроен. Если MFA не подключен, используется SMS-код.

Схема (3)

Особенности интеграции

Инфраструктура

Решение развернуто на трех нодах в разных дата-центрах. Keycloak работает в режиме active-active с общим распределенным кэшем Infinispan. FreeIPA работает в режиме multi-master репликации.

Система продолжает функционировать даже при отказе одного из дата-центров.

Два каталога — две истории

Офисные сотрудники уже существовали в Active Directory. Основная задача заключалась в обогащении каталога дополнительными атрибутами из ERP.

Для ресторанных сотрудников каталог FreeIPA создавался с нуля. Был разработан полноценный pipeline синхронизации, который включает:

  • валидацию данных 
  • нормализацию телефонных номеров 
  • обработку дубликатов 
  • защитные механизмы 
  • детальную статистику по каждому запуску 

Кастомные расширения

Стандартного функционала Keycloak оказалось недостаточно, поэтому были разработаны собственные Java-расширения. Среди них:

  • отправка и проверка SMS-кода при сбросе пароля с поддержкой разных SMS-провайдеров 
  • проверка наличия настроенного MFA-устройства для выбора сценария восстановления доступа 

Также реализован кастомный authentication flow с логикой выбора второго фактора в зависимости от типа сотрудника. Форма входа стилизована под корпоративный интерфейс компании.

Подключение систем

Каждая система регистрируется в Keycloak как отдельный клиент — через OIDC или SAML, в зависимости от возможностей продукта. Для каждой системы проводились консультации по интеграции и настройке.

Работа с коробочными решениями шла глубже: мы изучали документацию конкретного продукта, разбиралась со спецификой его интеграции и при необходимости находили обходные решения или настраивали параметры на стороне Keycloak.

Параллельно с технической настройкой происходило поэтапное переключение систем.

Процесс внедрения и эксплуатация 

Поэтапное переключение систем

Внедрение проходило постепенно. Первыми подключались офисные системы, интегрированные с Active Directory. Сначала был проведен пилот на одном приложении, после чего схема подключения была масштабирована на остальные системы.

Ресторанные системы потребовали отдельного подхода. В первую очередь переключались системы, которые использовали общие ресторанные учетные записи из Active Directory. Для каждой системы был организован постепенный перевод сотрудников на персональные учетные записи — ресторан за рестораном, с обучением и инструкциями.

Такой подход позволил постепенно внедрять второй фактор аутентификации. Одновременный переход примерно 30 тысяч сотрудников на MFA был бы слишком сложным как для поддержки, так и для пользователей.

На уровне Keycloak с помощью дополнительного кастомного расширения была реализована возможность закрывать доступ общих учетных записей к отдельным приложениям.

По мере того, как в системе полностью исчезали общие учетные записи, это становилось индикатором готовности. Значит сотрудники уже используют вход через Keycloak и можно переключать следующий слой систем.

Перед переключением каждой системы отдельно проводилась сверка данных. Для систем, которые напрямую обращались к ERP, анализировались расхождения в данных сотрудников, оценивалась доля пользователей с потенциальными проблемами при переходе и готовились рекомендации по очистке данных с конкретными примерами.

Отказоустойчивость

Перед запуском было проведено комплексное тестирование отказоустойчивости трех кластеров:

  • Keycloak 
  • PostgreSQL 
  • FreeIPA 

Проверялись сценарии отключения отдельных нод, потери связи между дата-центрами и недоступности базы данных. Во всех штатных сценариях система автоматически восстанавливалась примерно за 30 секунд. Пользовательские сессии при этом сохранялись.

Однако тестирование выявило и нестандартный сценарий. При временной потере связи между дата-центрами нода Infinispan после восстановления не всегда корректно возвращалась в кластер и могла считать себя координатором. Это приводило к рассинхронизации кэшей и ошибкам при обработке запросов. Проблема стабильно воспроизводилась, обновление версии Keycloak ее не решало.

В качестве временного решения был написан watchdog-скрипт на Python. Он отслеживает состояние кластера и при необходимости автоматически перезапускает контейнер без участия администратора.

Также проблема была зарегистрирована в репозитории Keycloak. Мы зарепортили эту проблему и команда Keycloak подтвердила наличие бага и включила исправление в roadmap.

Нагрузочное тестирование

Нагрузочные тесты проводились с использованием Yandex Tank. Тестировались сценарии входа пользователей с учетом OTP-аутентификации и обновления токенов.

Тесты запускались:

  • из внутренней сети 
  • из внешней среды через Яндекс Облако 

Проверялась работа отдельных нод напрямую и через балансировщик. В результате удалось получить реалистичную картину производительности и подтвердить готовность системы к ожидаемой нагрузке.

2 (4)

(Пример сбоя в момент нагрузочного тестирования. Оранжевые пики указывают на зависания в ответах и возникновение тайм-аутов через определенное время)

3 (3)

(Пример успешного прохождения нагрузочного тестирования. После устранения проблем балансировщика время ответа не превышало 60 мс)

Мониторинг

Состояние системы отслеживается через Grafana с использованием VictoriaMetrics и Loki. Настроены отдельные дашборды для компонентов:

  • Keycloak 
  • PostgreSQL 
  • FreeIPA 
  • etcd 

Логи хранятся 90 дней. Настроены алерты на ключевые события: от проблем с репликацией до превышения порога ошибок синхронизации.

4 (4)

(Дашборд мониторинга переключенных систем на Keycloak в Grafana.)

Что получили в итоге

Единая точка входа. Все системы подключены к одному механизму аутентификации. Сотрудник входит один раз и получает доступ ко всем необходимым приложениям без повторного ввода учетных данных.

Прозрачность и контроль управления доступами. Появился инструмент управления жизненным циклом учетных записей. Новые сотрудники автоматически получают доступ к системам, а доступ уволенных сотрудников автоматически закрывается. По каждой учетной записи доступна история изменений: когда она создана, обновлена или удалена и по какой причине.

Повышение безопасности. В инфраструктуре появились централизованные политики паролей, второй фактор аутентификации и механизмы защиты от дубликатов учетных записей. Общие обезличенные учетные записи постепенно выводятся из эксплуатации. Им на смену приходят персональные аккаунты с возможностью полноценного аудита действий.

Готовность инфраструктуры к масштабированию. Архитектура прошла тестирование на отказоустойчивость и нагрузку. Подключение новых систем теперь происходит значительно быстрее, поскольку базовая архитектура и процессы уже выстроены.

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

Подробнее о наших услугах здесь - DevOps и инфраструктура

Недавние публикации