Мы запускаем ejabberd 17.07 на виртуальной машине Ubuntu 17.10 и выполняем аутентификацию в Active Directory на Windows Server 2012 R2.
это в основном работает, но несколько раз в день не удается войти в систему. Похоже, что у ejabberd истекло время ожидания при попытке поиска информации с сервера LDAP. Перезапускаем демон вот так:
sudo ejabberdctl restart
... очевидно, всех выгоняют, но после этого вход в систему снова работает.
Я не вижу очевидных связанных журналов на стороне Windows (я просмотрел журналы службы безопасности и каталогов), предполагая, что на самом деле попытка аутентификации не выполнялась. Однако на стороне ejabberd иногда появляются логи, подобные этому:
2018-04-30 13:08:05.560 [error] <0.587.0>@eldap_pool:do_request:75 LDAP request failed: timed out
И при перезапуске сервера этот:
2018-04-30 14:58:35.524 [error] <0.793.0>@eldap_pool:do_request:77 LDAP request failed: eldap:search([[{base,<<"ou=Mitarbeiter,dc=…,dc=local">>},{filter,{and,[{equalityMatch,{'AttributeValueAssertion',<<"objectCategory">>,<<"group">>}},{equalityMatch,{'AttributeValueAssertion',<<"cn">>,<<"Alle Mitarbeiter">>}}]}},{timeout,5},{deref_aliases,never},{attributes,[<<"sAMAccountName">>]}]])
Reason: {shutdown,{gen_fsm,sync_send_event,[<0.462.0>,{search,{eldap_search,wholeSubtree,<<"ou=Mitarbeiter,dc=trenz,dc=local">>,{and,[{equalityMatch,{'AttributeValueAssertion',<<"objectCategory">>,<<"group">>}},{equalityMatch,{'AttributeValueAssertion',<<"cn">>,<<"Alle Mitarbeiter">>}}]},0,[<<"sAMAccountName">>],false,neverDerefAliases,5}},110500]}}
Обратите внимание на часть «причина: выключение».
Беглый поиск предполагает, что это связано с настройками поддержки активности TCP, а именно: похоже, что ejabberd ожидает, что соединение LDAP останется открытым, тогда как Active Directory (молча) ожидает, что запрос будет одной транзакцией. Насколько я правильно понимаю это?
Если это так, за исключением исправления двоичного файла ejabberd, как предлагается Вот и в других местах, что я могу сделать?
(Я также пытался, но безуспешно, настроить параметры поддержки активности на машине Linux.)