LDAP и SSO в корпоративном мессенджере: настройка единого входа

16 марта 2026 · 21 мин чтения

Средний сотрудник в компании из 100 человек использует 12–15 рабочих сервисов. У каждого — свой логин и пароль. По данным LastPass (Business Report 2025), средний пользователь управляет 47 паролями. Из них повторно используются 64%. Один взломанный пароль открывает доступ к нескольким системам.

SSO (Single Sign-On) решает эту проблему: сотрудник входит один раз — через корпоративный каталог (Active Directory, LDAP, Keycloak) — и получает доступ ко всем рабочим сервисам, включая мессенджер. Один пароль (или вообще без пароля — через Passkey), одна точка управления, одно место для отзыва доступа.

Для корпоративного мессенджера SSO — не опция, а требование. Вот почему, и как это настроить.

Зачем мессенджеру SSO: проблема 47 паролей

Безопасность

Без SSO каждый сотрудник создаёт пароль для мессенджера самостоятельно. Что он выбирает? Тот же пароль, что для email. Или «Company2026!». Или — если IT-политика требует сложный пароль — «Qwerty123!@#», записанный на стикере.

С SSO: пароль один. Он управляется корпоративной политикой: минимальная длина, сложность, ротация, запрет повторного использования. Если скомпрометирован — меняется в одном месте, и доступ ко всем сервисам (включая мессенджер) обновляется мгновенно.

Статистика: по данным Verizon DBIR 2025, 81% утечек данных связаны со слабыми или скомпрометированными паролями. SSO с 2FA снижает этот риск на 90%+.

Управление жизненным циклом

Сотрудник уволился. Без SSO: администратор должен вручную деактивировать аккаунт в каждом сервисе. Забыл мессенджер? Бывший сотрудник читает рабочие чаты ещё три месяца.

С SSO: администратор деактивирует учётную запись в Active Directory — и сотрудник автоматически теряет доступ ко всем подключённым сервисам. В ту же секунду. Без ручного перебора 15 систем.

По данным Sailpoint, среднее время деактивации всех аккаунтов уволенного сотрудника без SSO — 7 дней. С SSO — менее 1 часа.

Удобство

Сотрудник открывает мессенджер — и сразу в системе. Без формы логина, без ввода пароля, без «забыл пароль». Браузер перенаправляет на корпоративную страницу входа (если сессия не активна) или пропускает вообще (если сессия активна).

Результат: экономия 5–10 минут в день на авторизациях. Для 100 сотрудников — 500–1 000 минут в день. Это 8–16 рабочих часов ежедневно. Не считая обращений в IT-поддержку «забыл пароль от мессенджера» — которые с SSO исчезают полностью.

LDAP и Active Directory: базовые концепции

Что такое LDAP

LDAP (Lightweight Directory Access Protocol) — протокол для доступа к каталогу пользователей. Каталог — это иерархическая база данных, которая хранит информацию об объектах организации: пользователях, группах, компьютерах, политиках.

Структура LDAP — дерево (Directory Information Tree). Корень — домен компании. Ветви — подразделения (Organizational Units, OU). Листья — объекты (пользователи, группы).

Пример структуры для компании b8q.ru:

dc=b8q,dc=ru
├── ou=People
│   ├── uid=ivanov (Иванов Пётр, отдел разработки)
│   ├── uid=petrova (Петрова Анна, отдел продаж)
│   └── uid=sidorov (Сидоров Максим, IT-отдел)
├── ou=Groups
│   ├── cn=developers (участники: ivanov)
│   ├── cn=sales (участники: petrova)
│   └── cn=admins (участники: sidorov)
└── ou=Services
    └── cn=messenger (сервисный аккаунт для мессенджера)

Каждый объект имеет атрибуты: uid (логин), cn (полное имя), mail (email), memberOf (группы), telephoneNumber и другие.

Active Directory vs OpenLDAP vs FreeIPA

Active Directory (AD) — реализация каталога от Microsoft. Самая распространённая в корпоративном мире. По данным IDC, 90% компаний из Fortune 500 используют AD. Включает LDAP, Kerberos, групповые политики, DNS. Работает на Windows Server.

OpenLDAP — open-source реализация LDAP. Легковесная, работает на Linux. Для компаний, которые не используют Windows-инфраструктуру. Настройка сложнее, чем AD, но полностью бесплатна.

FreeIPA — open-source альтернатива AD для Linux-окружений. Включает LDAP (389 Directory Server), Kerberos, DNS, CA. Удобнее OpenLDAP в настройке, с веб-интерфейсом. Популярна в Linux-ориентированных компаниях.

Keycloak — open-source Identity Provider (IdP). Не каталог, а именно SSO-решение: поддерживает SAML, OIDC, может подключаться к AD/LDAP как к backend. Часто используется как прослойка между корпоративным каталогом и приложениями.

Как мессенджер использует LDAP

Два режима:

  1. Аутентификация (LDAP Bind). Пользователь вводит логин и пароль в мессенджере. Мессенджер передаёт их LDAP-серверу (bind-запрос). Если LDAP подтверждает — пользователь авторизован. Пароль не хранится в мессенджере.
  2. Синхронизация (LDAP Search). Мессенджер периодически (раз в 5–60 минут) запрашивает у LDAP список пользователей и групп. Новые пользователи — автоматически создаются в мессенджере. Удалённые — деактивируются. Изменённые (новая фамилия, новый отдел) — обновляются.

Протоколы SSO: SAML 2.0, OIDC, Kerberos

SAML 2.0

Security Assertion Markup Language — стандарт SSO для enterprise-приложений. Разработан OASIS в 2005 году. Используется повсеместно: Salesforce, AWS, Google Workspace, Jira — все поддерживают SAML.

Как работает:

  1. Пользователь открывает мессенджер (Service Provider, SP)
  2. Мессенджер перенаправляет на Identity Provider (IdP) — AD FS, Keycloak, Okta
  3. Пользователь вводит корпоративные учётные данные (или уже авторизован)
  4. IdP создаёт SAML Assertion — XML-документ с информацией о пользователе, подписанный цифровой подписью
  5. Браузер передаёт Assertion мессенджеру
  6. Мессенджер проверяет подпись, извлекает данные, создаёт сессию

Преимущества: зрелый стандарт, поддерживается везде, хорошая совместимость с enterprise IdP (AD FS, Shibboleth). Недостатки: XML-based (тяжеловесный), сложная настройка, не подходит для мобильных приложений (редиректы через браузер).

OpenID Connect (OIDC)

Надстройка над OAuth 2.0, разработанная в 2014 году. Современная альтернатива SAML. Используется Google, Microsoft, Apple, GitHub.

Как работает:

  1. Пользователь нажимает «Войти через SSO» в мессенджере
  2. Мессенджер перенаправляет на IdP (Keycloak, Azure AD, Google) с указанием scope (openid, profile, email)
  3. Пользователь авторизуется
  4. IdP возвращает Authorization Code
  5. Мессенджер обменивает код на ID Token (JWT) и Access Token
  6. ID Token содержит информацию о пользователе: sub, email, name, groups

Преимущества: JSON-based (легковесный), отлично работает с мобильными и веб-приложениями, проще в реализации, чем SAML. Поддерживает PKCE (защита от перехвата кода). Недостатки: менее зрелый, чем SAML, некоторые legacy-системы не поддерживают.

Kerberos

Протокол аутентификации, встроенный в Active Directory. Работает на основе билетов (tickets): пользователь получает TGT (Ticket Granting Ticket) при входе в Windows, затем использует его для доступа к сервисам без повторного ввода пароля.

Для мессенджера Kerberos актуален в одном сценарии: Windows-десктоп + Internet Explorer/Edge + мессенджер в интранете. Пользователь входит в Windows — и мессенджер автоматически подхватывает Kerberos-билет. Никаких форм логина. Это называется «прозрачная аутентификация» (Seamless SSO).

На практике: работает только в Windows-доменах, только для веб-клиента (не PWA с кастомного домена), и только если всё правильно настроено (SPN, делегирование). Для смешанных окружений (Windows + macOS + Linux) — Kerberos не подходит как основной метод, но может работать как дополнительный.

Что выбрать

Критерий SAML 2.0 OIDC Kerberos
Сложность настройкиВысокаяСредняяВысокая
Мобильные приложенияПлохоОтличноНет
PWAХорошоОтличноОграниченно
Enterprise совместимостьМаксимальнаяВысокаяWindows only
Прозрачный вход (без формы)НетНет (кроме refresh token)Да (Windows)
РекомендацияLegacy enterpriseНовые проектыWindows-домены

Для новых интеграций: OIDC. Проще, легче, лучше работает с PWA и мобильными клиентами. SAML — если IdP не поддерживает OIDC (такое бывает с legacy AD FS). Kerberos — как дополнение для Windows-пользователей.

Архитектура: как мессенджер интегрируется с IdP

Вариант 1: Прямая интеграция с LDAP

Мессенджер подключается к LDAP-серверу напрямую. Аутентификация — через LDAP Bind. Синхронизация — через LDAP Search.

Плюсы: простота, минимум компонентов. Минусы: мессенджер получает доступ к LDAP (дополнительная точка атаки), нет SSO с другими приложениями (только аутентификация через LDAP, но не Single Sign-On).

Когда использовать: для self-hosted мессенджера в доверенной корпоративной сети, если нет IdP (Keycloak, AD FS).

Вариант 2: Через IdP (рекомендуемый)

IdP (Keycloak, AD FS, Okta) подключён к LDAP/AD. Мессенджер подключён к IdP через SAML/OIDC. Пользователь авторизуется через IdP — мессенджер получает токен.

Плюсы: настоящий SSO (один вход — доступ ко всем приложениям), мессенджер не имеет прямого доступа к LDAP, централизованное управление политиками (2FA, блокировка, сессии). Минусы: дополнительный компонент (IdP) для настройки и поддержки.

Когда использовать: всегда, если позволяет инфраструктура. Это стандартная архитектура для enterprise.

Вариант 3: Гибрид

OIDC/SAML для SSO + LDAP для синхронизации пользователей. Мессенджер аутентифицирует через IdP (SSO), но дополнительно синхронизирует профили и группы напрямую из LDAP. Так получают и SSO, и автоматический маппинг групп.

Настройка LDAP-интеграции: пошагово

Пример для b8q Self-Hosted + Active Directory.

Предварительные требования

Шаг 1: Создание сервисного аккаунта

В Active Directory создайте пользователя для мессенджера:

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

Шаг 2: Конфигурация подключения

Параметры подключения к LDAP в конфигурации мессенджера:

# LDAP server
LDAP_URL=ldaps://ad.company.local:636
LDAP_BIND_DN=CN=svc-b8q-ldap,OU=Services,DC=company,DC=local
LDAP_BIND_PASSWORD=<encrypted_password>

# Search base
LDAP_USER_BASE=OU=People,DC=company,DC=local
LDAP_GROUP_BASE=OU=Groups,DC=company,DC=local

# Filters
LDAP_USER_FILTER=(&(objectClass=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
LDAP_GROUP_FILTER=(objectClass=group)

# Attribute mapping
LDAP_ATTR_UID=sAMAccountName
LDAP_ATTR_EMAIL=mail
LDAP_ATTR_FIRSTNAME=givenName
LDAP_ATTR_LASTNAME=sn
LDAP_ATTR_AVATAR=thumbnailPhoto

# Sync interval (minutes)
LDAP_SYNC_INTERVAL=15

Ключевые моменты:

Шаг 3: Маппинг атрибутов

Маппинг определяет, какой атрибут LDAP соответствует какому полю в мессенджере:

Поле мессенджера Атрибут AD Атрибут OpenLDAP Описание
UsernamesAMAccountNameuidЛогин
EmailmailmailEmail-адрес
ИмяgivenNamegivenNameИмя
ФамилияsnsnФамилия
ОтделdepartmentouОтдел
ДолжностьtitletitleДолжность
ТелефонtelephoneNumbertelephoneNumberРабочий телефон
АватарthumbnailPhotojpegPhotoФотография

Шаг 4: Тестирование

Перед включением для всех пользователей проверьте:

  1. Подключение к LDAP-серверу (ldapsearch с сервера мессенджера)
  2. Аутентификация тестового пользователя
  3. Синхронизация: количество найденных пользователей совпадает с ожидаемым
  4. Маппинг: имя, фамилия, email заполнились корректно
  5. Аватар: если используется thumbnailPhoto — загружается
  6. Деактивация: отключите тестового пользователя в AD → в мессенджере он деактивируется при следующей синхронизации

Настройка SAML 2.0 SSO: пошагово

Пример: b8q + Keycloak (но принцип одинаковый для AD FS, Okta, OneLogin).

Шаг 1: Создание клиента в Keycloak

  1. Откройте Keycloak Admin Console
  2. Выберите realm (или создайте новый)
  3. Clients → Create Client
  4. Client type: SAML
  5. Client ID: b8q-messenger (это Entity ID — уникальный идентификатор мессенджера)
  6. Valid Redirect URIs: https://messenger.company.local/auth/saml/callback
  7. Включите: Sign Assertions, Force POST Binding

Шаг 2: Настройка маппинга атрибутов в Keycloak

Добавьте маппинг Protocol Mappers для передачи атрибутов пользователя в SAML Assertion:

Шаг 3: Получение метаданных

Скачайте IdP Metadata XML из Keycloak: Realm Settings → General → SAML 2.0 Identity Provider Metadata. Этот XML содержит: URL для входа (SSO Endpoint), URL для выхода (SLO Endpoint), публичный сертификат для проверки подписей.

Шаг 4: Конфигурация мессенджера

# SAML SSO Configuration
SAML_ENABLED=true
SAML_IDP_METADATA_URL=https://keycloak.company.local/realms/company/protocol/saml/descriptor
SAML_SP_ENTITY_ID=b8q-messenger
SAML_CALLBACK_URL=https://messenger.company.local/auth/saml/callback
SAML_SIGN_REQUESTS=true
SAML_WANT_ASSERTIONS_SIGNED=true
SAML_CERTIFICATE=/etc/b8q/saml/sp.crt
SAML_PRIVATE_KEY=/etc/b8q/saml/sp.key

Шаг 5: Тестирование

  1. Откройте мессенджер в приватном окне браузера
  2. Нажмите «Войти через SSO»
  3. Должен произойти редирект на Keycloak
  4. Введите учётные данные
  5. Должен произойти редирект обратно в мессенджер — уже авторизованным
  6. Проверьте: имя, email, аватар заполнены корректно

Настройка OpenID Connect: пошагово

OIDC — более простой и современный вариант. Пример: b8q + Keycloak.

Шаг 1: Создание клиента в Keycloak

  1. Clients → Create Client
  2. Client type: OpenID Connect
  3. Client ID: b8q-messenger
  4. Client authentication: On (confidential client)
  5. Valid Redirect URIs: https://messenger.company.local/auth/oidc/callback
  6. Web Origins: https://messenger.company.local

Сохраните Client Secret — он понадобится для конфигурации мессенджера.

Шаг 2: Конфигурация мессенджера

# OIDC SSO Configuration
OIDC_ENABLED=true
OIDC_ISSUER=https://keycloak.company.local/realms/company
OIDC_CLIENT_ID=b8q-messenger
OIDC_CLIENT_SECRET=<encrypted_secret>
OIDC_CALLBACK_URL=https://messenger.company.local/auth/oidc/callback
OIDC_SCOPES=openid profile email groups
OIDC_PKCE=true

Обратите внимание на PKCE (Proof Key for Code Exchange) — защита от перехвата authorization code. Обязательно для PWA и мобильных клиентов.

Шаг 3: Тестирование

Аналогично SAML: приватное окно → Войти через SSO → редирект на Keycloak → авторизация → редирект обратно. Проверьте поля профиля и принадлежность к группам.

SCIM: автоматическое управление пользователями

SCIM (System for Cross-domain Identity Management) — протокол для автоматического провижинга и деактивации пользователей. Если LDAP-синхронизация — это «мессенджер спрашивает LDAP каждые 15 минут», то SCIM — это «IdP сообщает мессенджеру в реальном времени».

Что даёт SCIM

SCIM работает через REST API: IdP отправляет HTTP-запросы (POST для создания, PUT для обновления, DELETE для удаления) на SCIM-эндпоинт мессенджера.

Поддержка SCIM в мессенджерах

Keycloak: почему и как использовать

Keycloak — open-source Identity Provider от Red Hat. В контексте корпоративного мессенджера Keycloak решает задачу, которую AD FS решает для Microsoft-мира: централизованная аутентификация для всех приложений.

Почему Keycloak

Типичная архитектура

Keycloak подключается к Active Directory (или OpenLDAP/FreeIPA) как User Federation Provider. Пользователи и группы синхронизируются из AD в Keycloak. Приложения (мессенджер, CRM, ERP, GitLab) подключаются к Keycloak через OIDC или SAML.

Результат: сотрудник входит один раз через Keycloak — и имеет доступ ко всем приложениям. Пароль хранится в AD (единственный источник правды). MFA настраивается в Keycloak (один раз, для всех приложений).

Требования для установки

Keycloak можно развернуть на том же сервере, что и мессенджер (для малых установок), или на отдельном — для изоляции и масштабирования.

Альтернативы Keycloak

Маппинг групп: LDAP-группы → каналы мессенджера

Одна из самых полезных возможностей LDAP-интеграции: автоматическое добавление пользователей в каналы мессенджера на основе их групп в Active Directory.

Пример маппинга

Группа AD Канал мессенджера Роль
CN=All Staff#объявленияMember (read-only)
CN=Developers#разработкаMember
CN=Sales#продажиMember
CN=Managers#руководствоMember
CN=IT AdminsВсе каналыAdmin
CN=Project Alpha#проект-альфаMember

Когда нового сотрудника добавляют в группу «Developers» в AD — он автоматически появляется в канале #разработка в мессенджере. Когда убирают из группы — автоматически удаляется из канала.

Это экономит: время администратора (не нужно вручную добавлять в каналы), исключает ошибки (забыли добавить / забыли удалить), обеспечивает соответствие политикам (доступ определяется ролью в AD, а не ручными действиями).

Практические советы по Active Directory

Active Directory — стандарт de facto в корпоративном мире. Вот специфические рекомендации для интеграции мессенджера с AD.

Организационные единицы (OU) для мессенджера

Не синхронизируйте всё дерево AD. Ограничьте LDAP_USER_BASE конкретными OU:

Если структура AD сложная (несколько OU в разных поддеревьях) — используйте несколько LDAP_USER_BASE или фильтр по атрибуту (например, memberOf=CN=MessengerUsers,OU=Groups,DC=company,DC=local).

Вложенные группы

AD поддерживает вложенные группы: группа «All Engineers» включает группы «Backend», «Frontend», «QA». Не все мессенджеры корректно обрабатывают вложенность. Проверьте: если пользователь в группе «Backend», а маппинг настроен на «All Engineers» — попадёт ли он в канал?

Если мессенджер не поддерживает вложенные группы — используйте LDAP-фильтр с рекурсией: (memberOf:1.2.840.113556.1.4.1941:=CN=All Engineers,...). Этот OID — специальный оператор AD для рекурсивного поиска по вложенным группам.

Множественные домены

Крупные компании часто имеют несколько AD-доменов (холдинговая структура: company.local, subsidiary.local, partner.local). Для интеграции:

Безопасность: 8 правил интеграции

  1. Только LDAPS. Никогда не используйте LDAP без TLS в production. Пароли и данные пользователей передаются в открытом виде. Порт 636 (LDAPS) или StartTLS на порту 389.
  2. Минимальные привилегии сервисного аккаунта. Read-only доступ к нужным OU. Не Domain Admin. Не Account Operators. Только чтение.
  3. Ротация сервисных паролей. Пароль сервисного аккаунта — каждые 90 дней. Автоматизируйте через secret management (Vault, AWS Secrets Manager).
  4. 2FA через IdP. Включите двухфакторную аутентификацию на уровне IdP (Keycloak, AD FS). Мессенджер получает уже аутентифицированного пользователя — 2FA обработана IdP.
  5. Ограничение по IP. Если мессенджер self-hosted в корпоративной сети — ограничьте доступ к LDAP с IP-адреса сервера мессенджера. Firewall: allow tcp 636 from messenger-ip to ldap-ip.
  6. Аудит-логи LDAP-запросов. Включите аудит на LDAP-сервере: кто, когда, что запрашивал. Если сервисный аккаунт вдруг начнёт делать необычные запросы — это сигнал компрометации.
  7. Таймаут сессий. SSO-сессия не должна быть бесконечной. Рекомендация: 8–12 часов для активной сессии, 7 дней для refresh token (с возможностью отзыва).
  8. Проверка сертификатов. Мессенджер должен проверять SSL-сертификат LDAP-сервера. Не отключайте проверку — это открывает дверь для MITM-атак.

Passwordless: вход без паролей

Пароли — самое слабое звено аутентификации. Passwordless — подход, при котором пароль не используется вообще. Вместо него:

Passwordless через Keycloak

Keycloak 22+ поддерживает passwordless-вход через WebAuthn. Настройка:

  1. Authentication → Flows → создать новый flow на основе WebAuthn
  2. Включить WebAuthn Passwordless Authenticator
  3. Привязать flow к клиенту мессенджера
  4. Пользователи регистрируют Passkey при первом входе (один раз)
  5. Последующие входы — биометрия или PIN, без пароля

Для корпоративного мессенджера passwordless — идеальный сценарий: сотрудник открывает PWA, подтверждает Face ID — и в мессенджере. Без формы логина, без пароля, без 2FA-кода (биометрия уже является вторым фактором).

Совместимость

Платформа Passkeys Hardware key (YubiKey)
iOS 16+iCloud KeychainNFC / Lightning
Android 14+Google Password ManagerNFC / USB-C
macOS 13+iCloud Keychain / ChromeUSB-A / USB-C
Windows 10+Windows HelloUSB-A / USB-C / NFC
LinuxChrome (через Google PM)USB-A / USB-C

Passkeys синхронизируются между устройствами: создали на iPhone — работают на Mac, iPad. Но не синхронизируются между экосистемами (iCloud → Google — нет). Для корпоративной среды с разными устройствами: разрешите регистрацию нескольких Passkeys на одном аккаунте.

Диагностика проблем

«Пользователь не может войти»

Чек-лист:

  1. Аккаунт не заблокирован в AD? Проверьте userAccountControl.
  2. Пользователь находится в правильной OU? Если LDAP_USER_BASE = OU=People, а пользователь в OU=External — его не видно.
  3. LDAP-фильтр не исключает пользователя? Проверьте objectClass, memberOf.
  4. Пароль правильный? Попробуйте LDAP bind вручную (ldapsearch -W).
  5. LDAPS-сертификат валиден? Проверьте expiry, CN, CA chain.

«Синхронизация не работает»

  1. Сетевой доступ: telnet ldap-server 636 с сервера мессенджера
  2. Сервисный аккаунт: не заблокирован? Пароль не истёк?
  3. Тайм-ауты: LDAP-запрос к большому каталогу (10 000+ пользователей) может таймаутиться. Увеличьте timeout или используйте paged search.
  4. Логи мессенджера: ищите ошибки LDAP в логах — обычно сообщение об ошибке указывает на проблему.

«SSO-редирект зацикливается»

  1. Проверьте Callback URL: совпадает в конфигурации мессенджера и в IdP?
  2. Часы синхронизированы? Разница во времени между IdP и мессенджером > 5 минут вызывает ошибку проверки токена.
  3. Cookie SameSite: если IdP и мессенджер на разных доменах, проверьте настройки SameSite для cookie.
  4. Сертификаты: проверьте, что мессенджер доверяет сертификату IdP (и наоборот, для SAML).

JIT Provisioning: создание аккаунтов при первом входе

JIT (Just-In-Time) Provisioning — альтернатива LDAP-синхронизации и SCIM. Аккаунт в мессенджере создаётся автоматически при первом входе через SSO. Не нужно заранее синхронизировать — пользователь авторизовался через IdP → мессенджер получил SAML Assertion или ID Token с атрибутами → создал аккаунт на лету.

Как работает

  1. Новый сотрудник получает учётную запись в AD/Keycloak
  2. Открывает мессенджер, нажимает «Войти через SSO»
  3. IdP аутентифицирует пользователя, передаёт атрибуты (email, имя, фамилия, группы)
  4. Мессенджер: «Такого пользователя нет → создаю». Заполняет профиль из атрибутов SSO.
  5. Маппинг групп: если атрибуты содержат группы — добавляет в соответствующие каналы.

JIT vs SCIM vs LDAP Sync

Критерий JIT LDAP Sync SCIM
Создание аккаунтаПри первом входеПо расписаниюВ реальном времени
ДеактивацияНет (только руками)При следующей синхронизацииВ реальном времени
Обновление профиляПри каждом входеПо расписаниюВ реальном времени
Маппинг группПри каждом входеПо расписаниюВ реальном времени
Сложность настройкиМинимальнаяСредняяВысокая
Подходит дляМалые командыСредние + крупныеКрупные

Главный минус JIT: нет автоматической деактивации. Если сотрудник уволен и не пытается войти — его аккаунт в мессенджере остаётся активным (хотя войти он не сможет — SSO откажет). Для аудита это может быть проблемой: «активный аккаунт уволенного сотрудника» в отчёте выглядит плохо.

Рекомендация: JIT — для малых компаний (до 50 человек) без строгих compliance-требований. LDAP Sync — для средних (50–500). SCIM — для крупных (500+) с требованиями мгновенной деактивации.

Сравнение мессенджеров по поддержке SSO

Мессенджер LDAP SAML 2.0 OIDC SCIM Group Mapping Тариф
b8qДаДаДаДаДаБизнес
MattermostДаДа (E20)Да (E20)ПлагинДаEnterprise
DialogДаДаНетНетДаEnterprise
VK TeamsДаДаДаНетЧастичноBusiness
PachcaНетНетНетНетНет
CompassНетНетНетНетНет

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

LDAP и SSO — это не «дополнительная фишка». Для компании с 50+ сотрудниками и корпоративным каталогом это обязательное требование. Один пароль, один источник правды, мгновенная деактивация — всё это снижает риски и экономит десятки часов IT-отдела ежемесячно.

b8q поддерживает все три протокола (LDAP, SAML 2.0, OIDC), SCIM-провижинг и маппинг групп на каналы. Настройка занимает 1–2 часа для типовой конфигурации с AD или Keycloak. Для нетиповых сценариев — свяжитесь с нами, поможем с интеграцией.

Многофакторная аутентификация через SSO

SSO без MFA (Multi-Factor Authentication) — как замок без ключа. Один скомпрометированный пароль открывает доступ ко всем системам. Поэтому SSO и MFA — неразрывная пара.

Варианты второго фактора

Рекомендуемая конфигурация

Настройка MFA делается на уровне IdP (Keycloak, AD FS), не на уровне мессенджера. Мессенджер получает уже аутентифицированного пользователя — проверку второго фактора выполнил IdP.

Управление жизненным циклом: от найма до увольнения

LDAP/SSO-интеграция позволяет автоматизировать весь жизненный цикл сотрудника в мессенджере:

Найм (Provisioning)

  1. HR создаёт учётную запись в Active Directory (или HR-система создаёт автоматически)
  2. AD назначает группы: отдел, проект, роль
  3. SCIM или LDAP-синхронизация создаёт аккаунт в мессенджере
  4. Маппинг групп добавляет сотрудника в нужные каналы
  5. Сотрудник получает email с инструкцией: «Ваш корпоративный мессенджер: [URL]. Войдите через SSO.»
  6. Первый вход — через корпоративный логин. Без отдельной регистрации.

Время от создания в AD до доступа в мессенджер: с SCIM — менее 1 минуты. С LDAP-синхронизацией (интервал 15 минут) — до 15 минут.

Изменение роли (Modification)

Сотрудник перешёл из отдела продаж в отдел маркетинга:

  1. В AD: удалён из группы Sales, добавлен в группу Marketing
  2. В мессенджере (автоматически): удалён из канала #продажи, добавлен в канал #маркетинг
  3. Атрибут department обновлён — в профиле мессенджера отображается новый отдел

Без LDAP-интеграции: администратор мессенджера должен вручную переместить сотрудника. С интеграцией — автоматически.

Увольнение (Deprovisioning)

  1. HR деактивирует учётную запись в AD
  2. SCIM отправляет DELETE/PATCH запрос — или LDAP-синхронизация обнаруживает деактивацию
  3. Мессенджер: аккаунт деактивирован, все активные сессии закрыты
  4. Бывший сотрудник не может войти, прочитать историю или скачать файлы
  5. Данные (сообщения, файлы) остаются в системе — доступны администратору для аудита

Критично: деактивация должна быть мгновенной. Для SCIM — это секунды. Для LDAP-синхронизации с интервалом 15 минут — до 15 минут. Для критичных ситуаций (увольнение с конфликтом, компрометация аккаунта) настройте ручную деактивацию в мессенджере как дополнение к LDAP.

Кейс: настройка SSO для компании 300 человек

Профиль: производственная компания, 300 сотрудников, 5 офисов + 40 удалёнщиков. Инфраструктура: Windows Server 2019 + Active Directory, Keycloak как IdP (настроен ранее для CRM и ERP).

Задача

Развернуть b8q Self-Hosted с SSO через Keycloak + LDAP-синхронизацией для маппинга групп на каналы.

Реализация

День 1: Установка b8q на выделенный сервер (8 vCPU, 16 GB RAM, 500 GB SSD). Docker Compose, 30 минут. Настройка SSL через Let's Encrypt + Nginx reverse proxy.

День 1 (продолжение): Создание OIDC-клиента в Keycloak. Настройка OIDC в b8q. Тест — вход через SSO работает. 1.5 часа.

День 2: Настройка LDAP-синхронизации: подключение к AD, маппинг атрибутов, фильтрация (исключили сервисные аккаунты и деактивированных пользователей). Первая синхронизация: 287 пользователей из 300 (13 — сервисные аккаунты). 2 часа.

День 2 (продолжение): Маппинг групп: 12 групп AD → 12 каналов мессенджера. Тестирование: добавили тестового пользователя в группу — он автоматически появился в канале. Удалили — исчез. 1 час.

День 3: Настройка MFA в Keycloak: обязательный TOTP для всех пользователей. Тестирование входа с 2FA. Настройка политики сессий: 8 часов активная сессия, 7 дней refresh token. 2 часа.

Итого: 2 рабочих дня от начала до полностью рабочей SSO-интеграции. Один инженер. Без внешних консультантов.

Результат через 3 месяца

Частые вопросы

Можно ли использовать SSO без LDAP?

Да. SSO (SAML/OIDC) и LDAP — независимые механизмы. Можно использовать только SSO (аутентификация через IdP) без LDAP-синхронизации (пользователи создаются вручную или при первом входе через SSO — JIT provisioning). Но маппинг групп без LDAP или SCIM придётся настраивать вручную.

Что если LDAP-сервер недоступен?

Если мессенджер использует LDAP только для синхронизации (а аутентификация — через SSO/OIDC), то недоступность LDAP не влияет на вход пользователей. Просто не будут обновляться профили и группы до восстановления. Если LDAP используется для аутентификации (LDAP Bind) — пользователи не смогут войти. Рекомендация: используйте SSO для аутентификации, LDAP — только для синхронизации.

Поддерживает ли b8q несколько IdP одновременно?

Да. Можно настроить несколько OIDC/SAML провайдеров: например, корпоративный Keycloak для сотрудников и Google Workspace для внешних подрядчиков. Пользователь выбирает провайдер на экране входа.

Как мигрировать с локальных аккаунтов на SSO?

Если мессенджер уже используется с локальными аккаунтами (email + пароль), переход на SSO — пошаговый: 1) Настроить SSO. 2) Привязать существующие аккаунты к SSO-идентификаторам (по email). 3) Включить обязательный SSO. 4) Отключить локальную аутентификацию. Пользователи при следующем входе будут перенаправлены на IdP.

Мессенджер с полноценным SSO

b8q поддерживает LDAP, SAML 2.0, OIDC, SCIM и маппинг групп. Один вход — доступ ко всему.

Запросить демо Тарифы