ejabberd - Comments for "SOLVED: Помощь в настройке mod_shared_roster_ldap" https://www.ejabberd.im/node/5486 en Здравствуйте! Столкнулся с https://www.ejabberd.im/node/5486#comment-65056 <p>Здравствуйте!<br /> Столкнулся с аналогичной проблемой в eJabberd 2.1.10 - нужно, что бы JID брались из поля Mail, как у вас...<br /> Если с авторизацией проблем не возникло, то mod_shared_roster_ldap настроить не получается - ошибок не видно, но и общая группа не появляется.<br /> Уже почти неделю сижу, не знаю уже куда копать. </p> <p>Почитал про указанный вами модуль, раз он подошел к 2.1.11, то надеюсь, что подойдёт и мне на 2.1.10 с Debian 6.7.<br /> Но проблема в том, что не знаю как его собрать и подключить... eJabberd ставил из репозитория Wheezy.</p> Sun, 12 Oct 2014 06:11:01 +0000 TlnK comment 65056 at https://www.ejabberd.im Полностью согласен. Но, как https://www.ejabberd.im/node/5486#comment-58775 <p>Полностью согласен. Но, как ни странно, у меня эти настройки заработали именно тогда, когда я убрал все пробелы именно между параметрами. Возможно это какой то косяк в модуле...</p> Sat, 09 Jun 2012 12:19:33 +0000 Daggers comment 58775 at https://www.ejabberd.im Вы не совсем правы. Пробелов https://www.ejabberd.im/node/5486#comment-58774 <p>Вы не совсем правы. Пробелов не должно быть в фильтрах, и это определяется <noindex><a href="http://tools.ietf.org/html/rfc4515" rel="nofollow" >стандартом строкового представления фильтров LDAP</a></noindex>. Между названиями и значениями параметров могут быть любые пробелы, равно как и около разнообразных скобок...</p> Fri, 08 Jun 2012 20:44:33 +0000 mikekaganski comment 58774 at https://www.ejabberd.im Хочу поделиться своей победой https://www.ejabberd.im/node/5486#comment-58773 <p>Хочу поделиться своей победой в трехдневной битвой с сабжевым модом =)<br /> Дано: бинарная установка ejabberd-2.1.11 на CentOS 5.5. Авторизация пользователей по email, который неикак не совпадает с именем пользователя в домене, а просто прописан в поле "mail", откуда и подхватывает юзеров postfix и dovecot.<br /> Бился-бился, когда победил, то понял, что в параметрах модуля НЕ ДОЛЖНО БЫТЬ ПРОБЕЛОВ. Получившийся конфиг модуля:</p> <p>{mod_shared_roster_ldap,[<br /> {ldap_groupattr,"department"},<br /> {ldap_groupdesc,"department"},<br /> {ldap_rfilter,"(&amp;(memberOf=CN=JabberUsers,CN=Users,DC=flame,dc=local)(|(userAccountControl=66050)(userAccountControl=66048)(userAccountControl=512)))"},<br /> {ldap_memberattr,"mail"},<br /> {ldap_user_cache_validity,1}, %% Эту и следующую строчку можно убрать,<br /> {ldap_group_cache_validity,1}, %% разницы с ними и без что-то не видно<br /> {ldap_useruid,"mail"},<br /> {ldap_memberattr_format,"%u@domain.ru"},<br /> {ldap_userdesc,"displayName"}<br /> ]},</p> <p>Теперь ищу какого-нить веб-клиента, чтобы его прикрутить к roundcube и к сайту нашей компании....<br /> Буду благодарен, если подскажете где копать =)</p> Fri, 08 Jun 2012 13:51:43 +0000 Daggers comment 58773 at https://www.ejabberd.im Спасибо за разъяснения в https://www.ejabberd.im/node/5486#comment-58714 <p>Спасибо за разъяснения в работе модуля и за помощь в настройке. </p> <p>Все заработало!!! </p> <p>Вот рабочая конфигурация:<br /> {ldap_base, "ou=People,ou=test,dc=local"},<br /> {ldap_rfilter, "(objectClass=organizationalUnit)"},<br /> {ldap_groupattr, "ou"},<br /> {ldap_gfilter, "(&amp;(objectClass=organizationalUnit)(!(ou=People))(ou=%g))"},<br /> {ldap_groupdesc, "ou"},<br /> {ldap_member_selection_mode, group_children},<br /> {ldap_useruid, "mail"},<br /> {ldap_useruid_format, "%u@domain.local"},<br /> {ldap_userdesc, "cn"}</p> Thu, 24 May 2012 14:02:12 +0000 mi4igan comment 58714 at https://www.ejabberd.im Видимо, фильтр https://www.ejabberd.im/node/5486#comment-58713 <p>Видимо, фильтр "(objectClass=organizationalUnit)", применённый к "ou=People,ou=test,dc=local", даёт в качестве результата не только подобъекты, но и сам корневой объект. Для того, чтобы этого избежать, можно изменить фильтр так:<br /> {ldap_gfilter, "(&amp;(objectClass=organizationalUnit)(!(ou=Peple)))"},<br /> т.е. все OU, кроме тех, имя которых People. Правда, при этом нужно ещё убрать лишнее имя из подобъектов.</p> <p>При использовании {ldap_member_selection_mode, group_children}, контакты ищутся по всему поддереву каждого объекта-группы. Поэтому если группы имеют такую структуру:</p> <p>OU_Корень<br /> -&gt; OU_1<br /> --&gt; User1<br /> --&gt; User2<br /> -&gt; OU_2<br /> --&gt; User3</p> <p>То список групп будет</p> <p>OU_Корень<br /> OU_1<br /> OU_2,</p> <p>а пользователи в каждой группе:</p> <p>OU_Корень: User1, User2, User3<br /> OU_1: User1, User2<br /> OU_2: User3</p> <p>Теперь, если посмотреть на ростер, он будет выглядеть примерно так:<br /> User1: группы OU_Корень, OU_1<br /> User2: группы OU_Корень, OU_1<br /> User3: группы OU_Корень, OU_2</p> <p>И если клиент отображает, скажем, только первыю группу из списка групп пользователя, то в этом случае в ростере окажется только одна группа. Возможно, что манипуляции с объектами OU привели к тому, что теперь сервер LDAP выдаёт список в другой последовательности, и тогда ростер выглядит так:<br /> User1: группы OU_1, OU_Корень<br /> User2: группы OU_1, OU_Корень<br /> User3: группы OU_3, OU_Корень</p> <p>Вообще для точного "диагноза" надо смотреть логи...</p> Thu, 24 May 2012 13:45:18 +0000 mikekaganski comment 58713 at https://www.ejabberd.im До изменения они были https://www.ejabberd.im/node/5486#comment-58712 <p>До изменения они были такими:<br /> dn: ou=test123,ou=People,dc=local<br /> objectclass: organizationalUnit<br /> objectclass: top<br /> ou: test123</p> <p>dn: ou=test555,ou=People,ou=test,dc=mp,dc=local<br /> objectclass: organizationalUnit<br /> objectclass: top<br /> ou: test555</p> <p>Причем если добавить "ou: People" только к одной группе, то в ростер появляются группы test123 и test555.</p> <p>Сейчас посмотрел на разных клиентах, при старых OU.<br /> В miranda выводится только группа People.<br /> В kopete, Pidgin и Pandion 3 группы: People, test123, test555. В группе People находятся все пользователи.</p> Thu, 24 May 2012 13:11:01 +0000 mi4igan comment 58712 at https://www.ejabberd.im mi4igan wrote: Потом изменил https://www.ejabberd.im/node/5486#comment-58711 <div class="quote-msg"> <div class="quote-author"><em>mi4igan</em> wrote:</div> <p>Потом изменил группы test123 и test555 в LDAP. Они стали следующего вида:<br /> dn: ou=test123,ou=People,ou=test,dc=local<br /> objectclass: organizationalUnit<br /> objectclass: top<br /> ou: test123<br /> ou: People</p> <p>...</p> <p>Ростер заработал, группы появились.<br /> Можете объяснить как работает параметр {ldap_member_selection_mode, group_children}? Он не строит дерево групп?<br /> Как сделал я путем добавления еще одного имени OU это верно с точки зрения технологии ldap и работы модуля?</p></div> <p>А можно поподробнее, как выглядели OU до изменения?</p> <p>Дерево групп не строится. На данный момент нет возможности отображать вложенность групп, все группы будут на верхнем уровне. Если элемент относится к нескольким группам, это будет отражено в ростре, но от клиента зависит, покажет ли он это</p> <p>Два имени - это не правильно, но чтобы сделать правильно, сначала нужно разобраться, почему не заработало сразу. С точки зрения LDAP, множественные атрибуты - это нормально, но не все</p> Thu, 24 May 2012 12:44:36 +0000 mikekaganski comment 58711 at https://www.ejabberd.im Измениил конфиг. Результат https://www.ejabberd.im/node/5486#comment-58710 <p>Измениил конфиг. Результат тот же - выводится группа People и все сотрудники в ней.<br /> {ldap_base, "ou=People,ou=test,dc=local"},<br /> {ldap_roster_cache_size, "0"},<br /> {ldap_rfilter, "(objectClass=organizationalUnit)"},<br /> {ldap_groupattr, "ou"},<br /> {ldap_gfilter, "(&amp;(objectClass=organizationalUnit)(ou=%g))"},<br /> {ldap_groupdesc, "ou"},<br /> {ldap_member_selection_mode, group_children},<br /> {ldap_useruid, "mail"},<br /> {ldap_useruid_format, "%u@rregion.ru"},<br /> {ldap_user_cache_validity, 10},<br /> {ldap_group_cache_validity, 10},<br /> {ldap_userdesc, "cn"}</p> <p>Потом изменил группы test123 и test555 в LDAP. Они стали следующего вида:<br /> dn: ou=test123,ou=People,ou=test,dc=local<br /> objectclass: organizationalUnit<br /> objectclass: top<br /> ou: test123<br /> ou: People</p> <p>dn: ou=test555,ou=People,ou=test,dc=local<br /> objectclass: organizationalUnit<br /> objectclass: top<br /> ou: test555<br /> ou: People</p> <p>Ростер заработал, группы появились.<br /> Можете объяснить как работает параметр {ldap_member_selection_mode, group_children}? Он не строит дерево групп?<br /> Как сделал я путем добавления еще одного имени OU это верно с точки зрения технологии ldap и работы модуля?</p> <p>ЗЫ Только начинаю вникать в работу LDAP.</p> Thu, 24 May 2012 11:48:36 +0000 mi4igan comment 58710 at https://www.ejabberd.im mi4igan wrote: Вот с такой https://www.ejabberd.im/node/5486#comment-58709 <div class="quote-msg"> <div class="quote-author"><em>mi4igan</em> wrote:</div> <p>Вот с такой конфигурацией ничего не выводится:<br /> ...<br /> {ldap_groupattr, "objectGUID"},<br /> {ldap_gfilter, "(objectGUID=%g)"},<br /> ...<br /> Что неправильно в конфигурации?</p></div> <p>К сожалению, это не проблема конфигурации. В некоторых системах (не знаю по какому принципу, моя система тоже этим страдает) фильтрация по GUID не работает. :(</p> <div class="quote-msg"> <div class="quote-author"><em>mi4igan</em> wrote:</div> <p>только все находятся в одной группе People, хотя должны быть в группе test123.<br /> ...<br /> {ldap_rfilter, "(&amp;(objectClass=organizationalUnit)(ou=People))"},</p></div> <p>Ну, а чего же ещё ждать? Вы же прямо написали: список групп состоит из объектов organizationalUnit, у которых имя People. Я подозреваю, что таких объектов у Вас один :)<br /> Теперь небольшие доделки:<br /> - В этой версии параметр ldap_filter не используется вообще, его можно просто убрать.<br /> - После окончания отладки настоятельно рекомендую убрать {ldap_roster_cache_size, "0"}, иначе производительность будет страдать.<br /> - В этой версии ldap_auth_check по умолчанию выключен, так что тоже можно убрать.</p> Thu, 24 May 2012 10:24:25 +0000 mikekaganski comment 58709 at https://www.ejabberd.im Скомпилировал и установил https://www.ejabberd.im/node/5486#comment-58706 <p>Скомпилировал и установил модуль. Теперь ростер заполняется, но только все находятся в одной группе People, хотя должны быть в группе test123. Конфигурация такая:<br /> {ldap_base, "ou=test,dc=local"},<br /> {ldap_roster_cache_size, "0"},<br /> {ldap_filter, ""},<br /> {ldap_rfilter, "(&amp;(objectClass=organizationalUnit)(ou=People))"},<br /> {ldap_groupattr, "ou"},<br /> {ldap_gfilter, "(&amp;(objectClass=organizationalUnit)(ou=%g))"},<br /> {ldap_groupdesc, "ou"},<br /> {ldap_member_selection_mode, group_children},<br /> {ldap_useruid, "mail"},<br /> {ldap_useruid_format, "%u@test.ru"},<br /> {ldap_auth_check, off},<br /> {ldap_userdesc, "cn"}</p> <p>Вот с такой конфигурацией ничего не выводится:<br /> {ldap_base, "ou=test,dc=local"},<br /> {ldap_roster_cache_size, "0"},<br /> {ldap_filter, ""},<br /> {ldap_rfilter, "(&amp;(objectClass=organizationalUnit)(ou=People))"},<br /> {ldap_groupattr, "objectGUID"},<br /> {ldap_gfilter, "(objectGUID=%g)"},<br /> {ldap_groupdesc, "ou"},<br /> {ldap_member_selection_mode, group_children},<br /> {ldap_useruid, "mail"},<br /> {ldap_useruid_format, "%u@rregion.ru"},<br /> {ldap_auth_check, off},<br /> {ldap_userdesc, "cn"}</p> <p>Что неправильно в конфигурации?</p> Thu, 24 May 2012 06:39:39 +0000 mi4igan comment 58706 at https://www.ejabberd.im Поставил модуль по https://www.ejabberd.im/node/5486#comment-58702 <p>Поставил модуль по ссылке.<br /> При такой конфигурации выводится группа People, хотя ожидал что будет test123.<br /> {ldap_base, "dc=mp,dc=local"},<br /> {ldap_filter, ""},<br /> {ldap_rfilter, "(&amp;(objectClass=organizationalUnit)(ou=People))"},<br /> {ldap_groupattr, "ou"},<br /> {ldap_gfilter, "(&amp;(objectClass=organizationalUnit)(ou=%g))"},<br /> {ldap_groupdesc, "ou"},<br /> {ldap_member_selection_mode, group_children},<br /> {ldap_useruid, "cn"},<br /> {ldap_userdesc, "cn"}</p> <p>При другой конфигурации невыводится ничего:<br /> {ldap_base, "dc=mp,dc=local"},<br /> {ldap_filter, ""},<br /> {ldap_rfilter, "(&amp;(objectClass=organizationalUnit)(ou=People))"},<br /> {ldap_groupattr, "objectGUID"},<br /> {ldap_gfilter, "(objectGUID=%g)"},<br /> {ldap_groupdesc, "ou"},<br /> {ldap_member_selection_mode, group_children},<br /> {ldap_useruid, "cn"},<br /> {ldap_userdesc, "cn"}</p> Wed, 23 May 2012 13:55:36 +0000 mi4igan comment 58702 at https://www.ejabberd.im Родной модуль в принципе не https://www.ejabberd.im/node/5486#comment-58701 <p>Родной модуль в принципе не способен на это.<br /> Вам <noindex><a href="https://support.process-one.net/browse/EJAB-1480" rel="nofollow" >сюда</a></noindex>.</p> Wed, 23 May 2012 12:31:23 +0000 mikekaganski comment 58701 at https://www.ejabberd.im