Настройка интеграции ejabberd 18.12.1 с Active Directory на Debian 9. Настройка SSO (Single Sign On) авторизации.

Продолжаю свое знакомство с XMPP-сервером, на базе ejabberd и реализацию задачи по организации достойного корпоративного мессенджера.

 

Рассмотрим как интегрировать ejabberd с Active Directory на базе (Windows Server 2012 R2), в частности возможность входа на XMPP-сервер по доменным учетным данным, формирование списка контактов (ростера) на основе пользовательских данных с Active Directory, загрузка пользовательских сведений в vCard из Active Directory, а так же рассмотрим вариант настройки SSO (Single Sign On) авторизации в ejabberd.

 

Исходные данные:

  • XMPP-сервер ejabberd 18.12.1 на Debian 9 (установленный по этой статье).
  • Домен (example.com) развернут на Windows Server 2012 R2 (развернутый по этой статье).

 

Настройка домена

В конфигурационном файле (/etc/ejabberd/ejabberd.yml), указываем обслуживаемый виртуальный домен, в моем примере это example.com:

 

Создание сертификата

Для использования SSL, генерируем самоподписной сертификат, для обслуживаемого домена:

Важно в процессе генерации сертификата, в поле Common Name, указать FQDN домена, для которого генерируется сертификат.

 

Далее добавляем приватный ключ к сертификату, назначает права на сертификат и перемещаем его для удобства в каталог установки ejabberd:

Приватный ключ private.key, можно удалить, так как мы его добавили к сертификату и надобности в нем больше нет

 

В конфигурационном файле (/etc/ejabberd/ejabberd.yml), указываем использование сгенерированного сертификата:

 

Настройка LDAP соединения

В конфигурационном файле (/etc/ejabberd/ejabberd.yml), добавляем следующие строки:

Пояснения по строкам:

  • ldap_servers — указываем FQDN домен контроллера
  • ldap_port — используемый порт подключатся к Active Directory
  • ldap_rootdn — учетная запись пользователя через которого будет выполнятся просмотр Active Directory
  • ldap_password — пароль от учетной записи, указанной выше
  • ldap_base — указываем область поиска учетных записей
  • ldap_uids — указываем какие данные использовать в качестве JID идентификатора
  • auth_method — указываем какой метод аутентификации использовать

 

Так же в секции ACL, укажем учетную запись администратора:

 

Теперь можно подключится к домену @example.com, используя доменные учетные записи (прим. superadmin@example.com).

 

Настройка списка контактов LDAP

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

 

Для структурирования списка контактов по отделам, необходимо чтобы в свойствах пользователей были заполнены поля (Отдел). Для примера, приведу свойства одного из пользователей домена:

 

 

В конфигурационном файле (/etc/ejabberd/ejabberd.yml), в секции modules, добавляем описание модуля mod_shared_roster_ldap::

Пояснения по строкам:

  • ldap_base — в какой области искать учетные записи пользователей
  • ldap_rfilter — фильтруем просмотр только в пользователях
  • ldap_groupattr — по какому параметру группировать контакты
  • ldap_groupdesc — из какого параметра брать название группы
  • ldap_memberattr — по какому параметру добавлять пользовательский контакт
  • ldap_userdesc — из какого параметра брать название контакта

 

В итоге после авторизации, список контактов предстанет в таком виде:

 

В списке контактов, все сотрудники компании будут находится в своих отделах, что заметно упростит поиск того или иного контакта для переписки.

 

Загрузка пользовательских сведений в vCard из LDAP

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

 

В конфигурационном файле (/etc/ejabberd/ejabberd.yml), в секции modules, добавляем описание модуля mod_vcard:

Пояснения по строкам:

  • db_type — указываем какой тип данных будем использовать
  • ldap_vcard_map — сопоставляем поля в vCard и Active Directory
  • ldap_search_fields — определяем форму поиска и атрибуты Active Directory
  • ldap_search_reported — отображение контакта

 

В итоге в сведения о пользователе, будут автоматически взяты из Active Directory и будут выглядеть вот так:

 

Настройка SSO (Single Sign On) авторизации

Сервер ejabberd поддерживает SSO (Single Sign On) авторизацию, но к сожалению далеко не на все XMPP-клиентах можно воспользоваться данной функцией.

 

Я использую в качестве XMPP-клиента Miranda NG v0.95.10, она поддерживает SSO авторизацию.

 

Настройку SSO на Debian системе, я уже описывал в ЭТОЙ статье и они идентичны под текущую задачу. Выполняем все шаги в указанной статье (само собой изменяя такие данные как имя системы, имя служебного пользователя, доменное имя) до пункта «Настройка Apache (Debian 8 Jessie)».

 

Выставляем права на KEYTAB-файл:

 

В конфигурационном файле (/etc/ejabberd/ejabberd.yml), добавляем следующие строки:

Пояснения по строкам:

  • auth_method — обязательно указываем несколько методов авторизации (anonymous, ldap), на случай если клиент не поддерживает SSO, чтобы всегда можно было авторизоваться обычным способом.
  • allow_multiple_connections — данная опция используется только когда включен anonymous режим. Она позволяет использовать одно и то же имя пользователя несколько раз в режиме anonymous входа, если для подключения используются разные ресурсы.
  • anonymous_protocol — указываем использование SASL Anonymous и Login anonymous для авторизации.

 

Перезапускаем eJabberd сервер:

 

На примере XMPP-клиента Miranda NG v0.95.10, добавляем учетную запись XMPP и в поле «Домен/Сервер», указываем название домена, отмечает галочкой пункт «Доменный логин». Если все сделали правильно по инструкции, то авторизация будет осуществлена, без ввода имени пользователя и пароля.

 

Понравилась или оказалась полезной статья, поблагодари автора

 

БесполезноСлабоватоПриемлемоОтличноПревосходно (Еще нет оценок)
Загрузка...

Всего комментариев: 8 Комментировать

  1. Максим /

    Добрый день! Все получилось, кроме SSO. У ejabberd крутится на винде, собственно, какие манипуляции надо произвести, чтобы заработало SSO?

    1. Жаконда / Автор записи

      Добрый день, не знаю, т.к. не разбирал такую связку на Windows

  2. Александр /

    Спасибо за статью, скажите а можно ли реализовать на ejabberd чат для корпоративной сети, а не месссенджер? Просто в данный момоент используется чат V-talking, но он имеет проблемы и недостатки, ищу ему алтернативу. А т.к. в сети больше половины машин по операционной системой Windows XP, то выбор не сильно большой.

    1. Жаконда / Автор записи

      Конечно можно, я собственно и делал для корпоративного общения. Единственный минус это отсутствие клиентов должных под него, если на ПК можно какой то единый найти, то вот для мобильных устройств все печальней, у тех кто использует Android, там есть замечательно приложение XABBER, а вот у кого Apple, то там все печально, имеющиеся приложения с поддержкой XMPP мало и все они ущербны..

      1. Александр /

        Я имел ввиду именно чат. Т.к. по умолчанию jabber сделан как мессенджер. У меня же пользователи привыкли к варианту когда есть общее поле общения и список контактов сбоку от окна.

        1. Жаконда / Автор записи

          Все верно, можно создавать Chatroom, с доступами и т.д. и т.д., в этом плане XMPP (ejabberd) хорош.

          1. Александр /

            Благодарю за быстрый ответ. Значит буду ставить и разбираться.

  3. Александр /

    Добрый день!
    Всё настроил как тут описано, всё работает. Вопрос: как сделать чтобы vcard брался ТОЛЬКО из LDAP? Чтобы пользователи не могли изменить свои данные в vcard.

Оставить ответ

20 − восемнадцать =

© IT-блог Жаконды All Rights Reserved.
Яндекс.Метрика