Вход:  Пароль:  
FreeSource: Texnologii/Jabber/ejabberdad ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |

Автор Stanislav Bogatyrev <realloc@realloc.spb.ru> (realloc)
это копия страницы http://realloc.spb.ru/share/ejabberdad.html


Ejabberd + Active Directory
ВАРНИНГ!!!: ЭТО МЕНЯЮЩИЙСЯ НЕЗАКОНЧЕННЫЙ ЧЕРНОВИК!


По просьбам сетевой общественность решил описать свой скромный опыт по настройке и доведению ejabberd для комфортного сожительства оного с M$ Active Directory. По идее надо бы ещё и на английский перевести, ибо проблема общая для всей планетки, но это уже дело будущего :)

Задача и решение

Необходимо было построить на базе ejabberd корпоративный jabber-сервер. База пользователей хранится в M$ Active Directory, оттуда же производится авторизация. Так же необходимо что бы все пользователи видели всех пользователей домена в своём ростере. В качестве дополнительного ограничения на пользовательские ростеры выдвигается требование разбиения контактов на группы по отделам.
Для достижения этой светлой цели пришлось написать патчик, за основу которого огромное спасибо Алексею Горбаченко (agent_007). Ниже описвается процесс установки пропатченной версии ejabberd 1.0.0. Предполагается что вы в состоянии почитать документацию по установке на сайте проекта, посему это не освещается.

Что где взять
Патч для v1.0.0: http://realloc.spb.ru/files/ejabberd/ejabber_ad_001.patch.gz
Патч для v1.1.1: http://realloc.spb.ru/files/ejabberd/ejabber_ad_002.patch.gz
ejabberd: http://ejabberd.jabber.ru


Как настроить AD 

Для начала надо сделать некоторые вещи в AD. Необходимо создать группу, члены которой будут иметь доступ к jabber серверу и показываться в ростере. В нашем примере используется домен chloe.ku3 и группа Jabber Users. После внесения всех нужных пользователей в эту группу надо прописать им в поле департамента группу в общем ростере, которой они будут принадлежать. Например пользователь vasya@chloe.ku3 должен быть включен в группу Jabber Users и в поле департамента у него будет прописано Support. Это заставит его контакт появиться в группе Support в ростере. Путано, но надеюсь общий смысл ясен.

Настройка ejabberd

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

{auth_method, ad}.
В качестве метода аутентификации указываем AD. Из-за своеобразного видения стандартов одной маленькой и мягкой фирмой обычная ldap-авторизация с AD не работает.
{ad_servers, ["172.16.125.2"]}.
{ad_uidattr, “sAMAccountName”}.
{ad_group, «CN=Jabber Users,CN=Builtin,DC=chloe,DC=ku3»}.
{ad_base, «dc=chloe,dc=ku3»}.
{ad_rootdn, «CN=ejabberd,CN=Users,DC=chloe,DC=ku3»}.
{ad_password, "Mega Password Secret?" }.


Тут всё просто.
ad_servers – IP или имя нашего домен-контроллера.
ad_uidattr – Атрибут, в котором хранится логин пользователя
ad_group – Группа, в которую входят правильные пользователи
ad_base – Собственно по какому домену ищем
ad_rootdn – Кем биндиться будем
ad_password – Пароль того, кем биндиться будем. Анонимное с AD не работает.


{modules,
[

{mod_roster, []},
{mod_shared_roster_ad, []},
{mod_privacy, []},
{mod_configure, []},
{mod_configure2, []},
{mod_disco, []},
{mod_stats, []},
{mod_vcard_ad, []},
{mod_offline, []},
{mod_announce, [{access, announce}]},
{mod_echo, [{host, “echo.localhost”}]},
{mod_private, []},
{mod_irc, []},
{mod_muc, [{access, muc},
{access_create, muc},
{access_admin, muc_admin}]},
{mod_pubsub, []},
{mod_time, []},
{mod_last, []},
{mod_version, []}

]}.


В списке модулей надо вместо mod_vcard использовать mod_vcard_ad, и вместо mod_shared_roster надо mod_shared_roster_ad соответственно. Это позволит использовать AD ещё и для поиска и для вытягивания юзеринфо. Так же надо отключить in-band регистрацию пользователей. Во-первых она всё-равно не будет работать, а во-вторых она на корпоративном сервере ни к чему. Cделать это можно убрав mod_register из списка модулей.


Настройка клиента

Для авторизации нам необходимо иметь пароль в открытом виде. Поэтому надо в клиенте разрешить передачу пароля незашифрованным. Если использовать SSL, то ничего страшного в этой опции нету.

Итоги

Ну вот вроде и всё. Теперь пользователи могут логиниться с привычными им именами и паролями, принадлежность группам контролируется централизовано, поиск по пользователям есть :). Надо заметить что предложенный патч не является законченным решением, а находится в процессе вялой разработки под собственные нужды. Ещё я не профессиональный программист на Erlang, поэтому код далёк от совершенства. Я по мере возможностей собираюсь допинать до более-менее приличного вида и патч и эту хаутушку, но пока некогда.

 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]