В заметке ejabberd с авторизацией через LDAP я описал основные моменты по настройке сервера ejabberd. В заметке внешние программы аутентификации показал как можно использовать внешнюю программу, если не хватает функционала встроенных модулей. Теперь добавим поиск по визитным карточкам пользователей.
Для начала, коротко о подключении модулей. В конфигурации виртуального хоста (или в глобальной области) создаётся запись, следующего вида:
В этой записи и надо перечислить нужные модули с параметрами.
Список модулей и параметров можно найти всё в том же Руководстве по ejabberd.
Сейчас в у меня модули сконфигурированы так:
Поддержка расширения XEP-0030: Service Discovery — поиск сервисов. Без этого модуля клиенты не смогут узнать, какие сервисы мы предлагаем:
Поддержка расширения XEP-0054: vCards — электронные визитные карточки. Модуль позволяет получать из LDAP информацию об имени, фамилии, e-mail и прочем (всё настраивается) для каждого пользователя. Отдельная прелесть его в том, что он работает даже если используется авторизация, отличная от ldap. Т. е. я могу проводить аутентификацию пользователей при помощи собственной программы, и тем не менее извлекать из LDAP полезную информацию.
Если используется аутентификация через LDAP, то следующие опции можно не указывать. Их значения mod_vcard_ldap возьмёт из указанных ранее. Впрочем, если указать их явно, хуже не будет.
Ниже простой пример дальнейшей конфигурации. Использованы только самые основные свойства.
Перезапускаем ejabberd. А вот здесь можно проверить результат. Или воспользоваться клиентом, например Psi:
И поиск по карточкам:
Подключение модулей
Для начала, коротко о подключении модулей. В конфигурации виртуального хоста (или в глобальной области) создаётся запись, следующего вида:
{modules, [ {модуль1, [опции_модуля1]}, {модуль2, [опции_модуля2]} ]},
В этой записи и надо перечислить нужные модули с параметрами.
Список модулей и параметров можно найти всё в том же Руководстве по ejabberd.
Сейчас в у меня модули сконфигурированы так:
{modules, [ {mod_last, []}, {mod_offline, []} ]}
Модуль mod_disco
Поддержка расширения XEP-0030: Service Discovery — поиск сервисов. Без этого модуля клиенты не смогут узнать, какие сервисы мы предлагаем:
{modules, [ {mod_last, []}, {mod_offline, []}, {mod_disco, []} ]}
Модуль mod_vcard_ldap
Поддержка расширения XEP-0054: vCards — электронные визитные карточки. Модуль позволяет получать из LDAP информацию об имени, фамилии, e-mail и прочем (всё настраивается) для каждого пользователя. Отдельная прелесть его в том, что он работает даже если используется авторизация, отличная от ldap. Т. е. я могу проводить аутентификацию пользователей при помощи собственной программы, и тем не менее извлекать из LDAP полезную информацию.
{modules, [ {mod_last, []}, {mod_offline, []}, {mod_disco, []}, {mod_vcard_ldap, [ % Здесь я буду писать опции ]} ]}
Если используется аутентификация через LDAP, то следующие опции можно не указывать. Их значения mod_vcard_ldap возьмёт из указанных ранее. Впрочем, если указать их явно, хуже не будет.
Описание этих опцией уже было в ejabberd с авторизацией через LDAP.{ldap_servers, ["ldap.company.local"]}, {ldap_port, 389}, {ldap_base, "ou=people,dc=company,dc=local"}, {ldap_filter, "(gidNumber=100)"},
Ниже простой пример дальнейшей конфигурации. Использованы только самые основные свойства.
% Устанавливаем соответствия между полями vCard и атрибутами LDAP {ldap_vcard_map, [ {"NICKNAME", "%u", []}, {"GIVEN", "%s", ["givenName"]}, {"FAMILY", "%s", ["sn"]}, {"FN", "%s %s", ["givenName", "sn"]}, {"EMAIL", "%s", ["mail"]} ]}, % Задаём поля для поиска по карточкам и их соответствие атрибутам аккаунтов LDAP {ldap_search_fields, [ {"User", "%u"}, {"Name", "givenName"}, {"Family Name", "sn"}, {"Email", "mail"} ]}, % Задаём какие поля vCard надо показывать в результатах поиска {ldap_search_reported, [ {"Full Name", "FN"}, {"Nickname", "NICKNAME"} ]}
Перезапускаем ejabberd. А вот здесь можно проверить результат. Или воспользоваться клиентом, например Psi:
И поиск по карточкам: