Меня прежде всего интересовала возможность интеграции сервиса IM с AD и возможность прозрачной ntlm-авторизации для клиентов. На сколько мне известно поддержка ntlm-авторизации есть в openfire, но она работает только на платформе M$. Но как организовать подобное на linux? На linux есть winbind, который поддерживает серверный вариант протокола ntlm v2. Для авторизации можно использовать утилиту ntlm_auth (как например делается в прокси-сервере squid для ntlm-авторизцации на прокси или модуле для apache mod_auth_ntlm_winbind).
Ок, с сервером вроде бы всё ясно, но вот с IM-клиентами, поддерживающими ntlm-авторизацию не всё так хорошо, по крайне мере ни один из opensource пейджеров не умеет ntlm. Написал патч для pidgin'а, но, к сожалению, есть регресс: поскольку реализовывать поддержку ntlm надо было в cyrus-sasl, а этим заниматься категорически не хотелось, поэтому сборка делается без cyrus-sasl и поддерживаются только три механизма: digest-md5, plain ну и заветный ntlm.
плагин Djabberd-SASL-NTLM. ( http://xrt.no-ip.org/pidgin/DJabberd-SA
Пока это просто хак, "который просто работает" (C). В конфигурацию djabberd добавляется такие строки:
<Plugin DJabberd::SASL::NTLM>
Optional yes
NTLMAuthHelper /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
</Plugin>
После чего xmpp-сервер будет анонсировать наличие механизма NTLM для SASL-авторизации. Это также требует настроенного winbind на сервере и чтобы пользователь, под которым запускается xmpp-сервер, входил в группу winbind_privileged.
Набор патчей для Pidgin 2.5.5 для ntlm-авторизации (только для win32):
* pidgin-2.5.5-ntlmsspi.patch ( http://xrt.no-ip.org/pidgin/pidgin-2.5.5-n
* pidgin-2.5.5-ntlmauth.patch ( http://xrt.no-ip.org/pidgin/pidgin-2.5.5-n
* pidgin-2.5.5-ntlmproxy.patch ( http://xrt.no-ip.org/pidgin/pidgin-2.5.5-n
Т.о. если требуется настроить в Pidgin прозрачную ntlm-авторизацию на xmpp-сервере, то в настройках соединения указываются *произвольные* логин и пароль (просто иначе кнопка создать учётку будет неактивна). При авторизации будут использоваться учётные данные с которым пользователь вошёл в систему (вида domain\user )
Третий патч нужен если требуется выход через корпоративный прокси (какой протокол ICQ, Jabber, MSN... не важен), требующий ntlm-авторизацию. В настройках соединения указывается тип прокси "использовать настройки окружения".
Для тех кому лень собирать самому в cygwin'е, есть готовая сборка pidgin:
pidgin-2.5.5 (все патчи): http://xrt.no-ip.org/pidgin/pidgin-2.5.5-n
md5sum: http://xrt.no-ip.org/pidgin/pidgin-2.5.5-n