URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 75093
[ Назад ]

Исходное сообщение
"Jabberd2 SASL и BerkleyDB"

Отправлено geekkoo , 10-Июл-07 12:10 
Как заносить пользователей jabber в bd? Авторы не предлагают никаких тулзов для ручного добавления пользователей в базу данных, предлагают использовать автоматическое добавление (при входе с jabber-клиента). Но у меня эта штука не работает. Т.е., судя по логам, в базе данных такой пользователь создается, но зайти под ним всё-равно не удаётся. <authreg> <module> <mechanism> тэги в c2s.xml заполнены, <auto-create> в sm.xml тоже установлен.
Кто использует пользователей из базы данных SASL (не жабировской) в jabber-е поделитесь, пожалуйста, конфигами и соображениями. Как вообще должен выглядеть <authreg> тэг в случае если все пользователи уже имеются во внешнем хранилище (т.е. сам <authreg>, получается, как-бы уже и не нужен).
jabberd-2.1.7 glibc-2.3.5 sasl-2.0.21 (версию glibc привожу, поскольку jabber при конфигурировании ругается на функцию fnmatch, так что пришлось эту проверку отключить)

Содержание

Сообщения в этом обсуждении
"Jabberd2 SASL и BerkleyDB"
Отправлено geekkoo , 10-Июл-07 18:39 
>Как заносить пользователей jabber в bd? Авторы не предлагают никаких тулзов для ручного добавления пользователей в базу данных, предлагают использовать автоматическое добавление (при входе с jabber-клиента). Но у меня эта штука не работает. Т.е., судя по логам, в базе данных такой пользователь создается, но зайти под ним всё-равно не удаётся. <authreg> <module> <mechanism> тэги в c2s.xml заполнены, <auto-create> в sm.xml тоже установлен.
>Кто использует пользователей из базы данных SASL (не жабировской) в jabber-е поделитесь, пожалуйста, конфигами и соображениями. Как вообще должен выглядеть <authreg> тэг в случае если все пользователи уже имеются во внешнем хранилище (т.е. сам <authreg>, получается, как-бы уже и не нужен).
>jabberd-2.1.7 glibc-2.3.5 sasl-2.0.21 (версию glibc привожу, поскольку jabber при конфигурировании ругается на
>функцию fnmatch, так что пришлось эту проверку отключить)


Проблема даже не в модуле bd. С MySQL таже песня. В таблице authreg пользователи создаются (после того как я под ними пытаюсь залогиниться из tkabbera), но доступа все равно нет. "Authentication failed: Authentication Error (Temporary auth failure) Create new account?" Если жать "Yes" то всё равно ничего хорошего не получается - "Registration failed: Unrecoverable error (Conflict)", понятное дело, поскольку такой пользователь в базе данных MySQl уже создан. Аутентификация по традиционным механизмам запрещена, разрешена только по sasl, но по ней почему-то пароль не срабатывает:
<sasl>
        <plain/>
        <gssapi/>
        <!--
        <anonymous/>
        -->
      </sasl>


"Jabberd2 SASL и BerkleyDB"
Отправлено ligurio , 11-Июл-07 16:54 
>Как заносить пользователей jabber в bd? Авторы не предлагают никаких тулзов для ручного добавления пользователей в базу данных, предлагают использовать автоматическое добавление (при входе с jabber-клиента). Но у меня эта штука не работает. Т.е., судя по логам, в базе данных такой пользователь создается, но зайти под ним всё-равно не удаётся. <authreg> <module> <mechanism> тэги в c2s.xml заполнены, <auto-create> в sm.xml тоже установлен.
>Кто использует пользователей из базы данных SASL (не жабировской) в jabber-е поделитесь, пожалуйста, конфигами и соображениями. Как вообще должен выглядеть <authreg> тэг в случае если все пользователи уже имеются во внешнем хранилище (т.е. сам <authreg>, получается, как-бы уже и не нужен).
>jabberd-2.1.7 glibc-2.3.5 sasl-2.0.21 (версию glibc привожу, поскольку jabber при конфигурировании ругается на
>функцию fnmatch, так что пришлось эту проверку отключить)


попробуй ejabberd. С ним попроще.


"Jabberd2 SASL и BerkleyDB"
Отправлено geekkoo , 12-Июл-07 10:26 
>попробуй ejabberd. С ним попроще.

В каком смысле проще? По-моему, в нём поддержка SASL в ещё более зачаточном состоянии.



"Jabberd2 SASL и BerkleyDB"
Отправлено geekkoo , 20-Июл-07 23:21 
Вот, удалось всё же побороть. ошибок было несколько, какая именно оказалась критичной, я не понял, поэтому привожу все в порядке их устранения.
1. Разкомментировал секцию <traditional>. Так что при этом получилось два варианта логина - через базу данных SASL и/или пароли создаваемые в самом jabberd.
2. Юзеров пришлось вручную создавать в mysql (колонки username, realm, passwd в таблице authreg, остальное забил null-ями). Т.е. авторегистрация работает крайне глючно. Но в sm.xml  <auto-create> отмечен, так же как и тэг <id register-enable='true' realm="DOMAIN.MY">
3. Создал файл /usr/lib/sasl2/xmpp.conf. По идее он не должен использоваться (поскольку вся информация из него продублирована в c2s.xml), но есть ощущуение, что jabberd2 в него заглядывает.
4. Это по-моему главное. Есть неразбериха с realm-ами SASL и жабировскими JID-ами. Т.е. жабир считает, что всё, что идёт после @ в ЖИДе - это и есть релм. Поэтому мне пришлось в sm.xml и c2s.xml указывать в качестве <id> доменное имя - DOMAIN.MY, а потом в ДНС вставялть SRV записи, которые это имя транслируют в адрес хоста, где крутится жабир. В этом была, видимо, главная ошибка, поскольку я в начале использовал после @ в ЖИДах имя жабир-сервера.
5. Как уже отмечал автор патчей поддержки SASL для jabberd2, ни один из клиентов не поддерживает fallback механизмов. Т.е. если сервер предлагает на выбор несколько механизмов, то клиент (в моем случае tkabber) выбирает самый сильный из предложенных или отваливается, если самый сильный механизм он не поддерживает (вместо того чтобы откатиться к более слабому). Поэтому если сервер предлагает <gssapi/> и <plain/>, то tkabber выбирает всегда <gssapi/>. А с gssapi у tkabber-а есть один серьезный глюк. Как следует из 4, я при логине из tkabber должен указать своё имя в Username, Password - пустой (у меня есть билетик), server - DOMAIN.MY (!), а на вкладке connection указать Host - имя жабер-сервера (ну, чтобы от ДНС не зависить). Так вот tkabber в своем коде обработки SASL использует в качестве имени сервера запись из поля server (которая в данном случае является именем домена), что является ошибкой, а не SRV запись из ДНС или поле Host со вкладки Connection.  Как тут нужно пофиксить этот код я не знаю, но что-то с этм делать надо.  

"Jabberd2 SASL и BerkleyDB"
Отправлено geekkoo , 22-Июл-07 08:48 
>4. Это по-моему главное. Есть неразбериха с realm-ами SASL и жабировскими JID-ами. Т.е. жабир считает, что всё, что идёт после @ в ЖИДе - это и есть релм. Поэтому мне пришлось в sm.xml и c2s.xml указывать в качестве <id> доменное имя - DOMAIN.MY, а потом в ДНС вставялть SRV записи, которые это имя транслируют в адрес хоста, где крутится жабир. В этом была, видимо, главная ошибка, поскольку я в начале использовал после @ в ЖИДах имя жабир-сервера.

Оказывается, это у всех такая проблема и все её решают добавляя в ДНС хост с именем состоящим только из доменной части.

$host -t SRV _xmpp-client._tcp.jabber.ru
_xmpp-client._tcp.jabber.ru has SRV record 0 0 5222 jabber.ru.
$host jabber.ru
jabber.ru has address 213.180.203.19
jabber.ru has address 213.180.203.18
jabber.ru mail is handled by 10 mx.jabber.ru.

У jabber.snc.ru таже самая картина:

$host -t SRV _xmpp-client._tcp.jabber.snc.ru
_xmpp-client._tcp.jabber.snc.ru has SRV record 0 0 5222 jabber.snc.ru.


"Jabberd2 SASL и BerkleyDB"
Отправлено alexkbv , 15-Авг-07 09:29 
Может есть способ вообще отвязаться от DNS ? Как -то же в Jabberd 2.0.10 это нормально работает и без DNS.

"Jabberd2 SASL и BerkleyDB"
Отправлено geekkoo , 03-Сен-07 10:43 
>Может есть способ вообще отвязаться от DNS ? Как -то же в
>Jabberd 2.0.10 это нормально работает и без DNS.

По-моему, это вообще вопрос не к серверу, а к клиентам.

Я не спец в жабирах, но любой почтовый клиент, отправляя письмо по адресу someone@somedomain.ru, считает нужным проконсультироваться с MX записью DNS для соответствующего домена. Почему же жабир клиенты при виде такого же точно jid-a считают, что  после собаки идёт имя  сервера? Этим страдает не только tkabber, но также и pidgin.

Это не проблема, если пользователей можно привезать к серверу. А если пользователи для домена/realm-a уже существуют, то (на мой взгляд) заставить жабер использовать их практически нереально. Т.е. на сервере их использовать можно, но не один клиент без дополнительной переделки это не поддерживает.  


"Jabberd2 SASL и BerkleyDB"
Отправлено дима , 17-Дек-07 18:46 
psi и miranda позволяют указать хост отличный от того что идет после собаки