dr_klm: (В человеческом обличье)
[personal profile] dr_klm
В порядке развлечения упаковал для Ubuntu Xenial. Было весело. ;-) Сразу скажу, что просто так из гуляющих по Internet патчей собрать работоспособную версию нельзя. Кое-какие ключевые моменты в них отсутствуют (не говоря уже о таких мелочах как поддержка запуска при включенном MAC через apparmor).

Date: 2016-06-27 06:05 pm (UTC)
From: [identity profile] caml-programmer.livejournal.com

А кроме gssapi там что то новое появилось?  А то лет 10 назад его накатывал.

Date: 2016-06-27 07:50 pm (UTC)
From: [identity profile] dr-klm.livejournal.com
Честно говоря, кроме gssapi меня в нём мало что интересовало. Кроме того, gssapi там (в официальной версии) нет и сейчас.

Могу только сказать, что размер пакета с версии 2.13 вырос примерно раза в два. Может, конечно, там просто отладочную информацию перестали удалять (что вряд ли), а может быть это всё новые фичи. ;-)

Меня он интересует прежде всего для чата, я даже конференциями в нём (пока) не пользуюсь.

К.Л.М.
Edited Date: 2016-06-27 07:51 pm (UTC)

Date: 2016-07-20 11:22 am (UTC)
From: [identity profile] http://users.livejournal.com/_beg_/
Видел Ваш комментарий на https://support.process-one.net/browse/EJAB-831
Может стоит выложить туда последний патч, если он отличается от сделанного Badlop?

PS. Принимать в основную ветку без тестов отказались, так что, видимо, так и останется в виде иногда обновляемого патча.

Date: 2016-07-20 02:22 pm (UTC)
From: [identity profile] dr-klm.livejournal.com
Главное отличие от исходного патча описано в моём комментарии к EJAB-831. Остальные изменения имеют отношения к интеграции в Ubuntu (запуск сервиса, поддержка MAC через apparmor).

Ну, можно надеяться что примут рано или поздно, если кто-то подчистит код и напишет тесты. Но это точно буду не я, поскольку мои знания Erlang слишком поверхностны.

К.Л.М.

Date: 2016-07-20 02:35 pm (UTC)
From: [identity profile] http://users.livejournal.com/_beg_/
Ну как и мои.
Странно что у меня работает без этого изменения, надо будет перепроверить при очередном апдейте.

Date: 2016-07-20 08:14 pm (UTC)
From: [identity profile] dr-klm.livejournal.com
Да, оно и работало раньше без этого изменения (у меня, кстати, прекрасно работал ejabberd 2.1.13). Потом (как я понимаю, при переносе на более новую версию ejabberd либо erlang-esasl) кто-то поменял тип переменной и тест на окончание handshake перестал срабатывать. Моё изменение меняет тип переменной так, чтобы он был согласован с остальным кодом. Без этого изменения (на ejabberd 16.01 с последними патчами из EJAB-831 на то время и последним erlang-esasl) аутентификация у меня не проходила.

К.Л.М.

Date: 2016-08-12 04:21 pm (UTC)
From: [identity profile] Александр Лычангин (from livejournal.com)
Уже более двух недель бьюсь и не могу внедрить sso в ejabberd. Как я понял патч вы берете в EJAB-831. А erlang-esasl это получается тоже самое что и erlang-sasl в репозитории erlang? Просто таким макаром при компиляции вместе с патчем он видит опции sasl_realm и тому подобное, но аутентификация так и не проходит. Как у вас получилось ее реализовать?

Date: 2016-08-12 05:12 pm (UTC)
From: [identity profile] dr-klm.livejournal.com
Да, патч я беру там, потом кое что исправляю. Библиотека erlang-esasl бралась последняя на тот (и на данный) момент в GIT (https://github.com/mikma/esasl). Если хотите конкретнее -- смотрите исходники пакетов в Launchpad. Там мои полные патчи относительно исходных версий (Ejabberd 16.01 и erlang-esasl commit c87ecc3). Ну, или просто поставьте мои пакеты в Ubuntu Xenial, у меня они работают.

К.Л.М.

Date: 2016-08-13 11:58 am (UTC)
From: [identity profile] Александр Лычангин (from livejournal.com)
То есть как я правильно понял, в патче изначально не работает gssapi, а вы что-то поменяли и gssapi заработало? Просто я в этом не очень силен. Или ваши правки исключительно касаются для ubuntu дистрибутива? Я почему то подумал что https://github.com/mikma/esasl давно умерла и исходники давно неактуальны под новые версии ejabberd

Date: 2016-08-14 07:11 pm (UTC)
From: [identity profile] a-lychangin.livejournal.com
Я попробовал твою сборку с патчами, почему то не взлетело, может быть я что-то не так сделал? Поставил сразу два пакета erlang-esasl
ejabberd-gssapi. При настройке в конфиге я только настроил чтобы учетки подтягивались их АД, и отключил шифрованное соединение по админскому порту (5280). Более я ничего не трогал. В чем может быть еще проблема?

Date: 2016-08-14 07:37 pm (UTC)
From: [identity profile] dr-klm.livejournal.com
Если это всё, то этого мало. Нужно ещё указать путь к keytab (через переменную окружения KRB5_KTNAME) с ключами xmpp/ и указать realm в конфиге (опция sasl_realm).

К.Л.М.

Date: 2016-08-14 09:00 pm (UTC)
From: [identity profile] Александр Лычангин (from livejournal.com)
Увы, я про все это знаю, и переменную указывал и ключ создавал. Единственное что я ключ без шифрования создавал на самом сервере АД. Я ВООБЩЕ не понимаю что делаю не так. Думал что с вашей сборкой заработает, а тут ничего не получилось.
Еще почему то когда я в логах клиента смотрю ошибку. Он пишет что есть два механизка авторизации: OAUTH и PLAIN. То есть я думаю что у меня сам механизм GSSAPI как таковой недоступен, хотя в конфиге sasl_realm указывал
Edited Date: 2016-08-14 09:12 pm (UTC)

Date: 2016-08-15 11:28 am (UTC)
From: [identity profile] dr-klm.livejournal.com
Ключ мало создать на сервере, его ещё нужно экспортировать в .keytab файл, который должен быть доступен ejabberd.

Нет ключа, нет GSSAPI.

К.Л.М.

Date: 2016-08-15 12:27 pm (UTC)
From: [identity profile] Александр Лычангин (from livejournal.com)
Ключ я создавал на АД сервере двумя командами
1) setspn -A xmpp/jabber.realm.local@REALM.LOCAL xmpp-ejabberd
2) ktpass -princ xmpp/jabber.realm.local@REALM.LOCAL -mapuser xmpp-ejabberd@realm.local -pass * -ptype KRB5_NT_PRINCIPAL -out c:\xmpp.keytab
Учетная запись xmpp-ejabberd создал с постоянным паролем и параметром "Does not require Kerberos Preauthentication"
Ключ скинул на сервер jabber, изменил владельца на ejabberd. Проверил ключ на сервере
kinit -V -k -t /etc/ejabberd/xmpp.keytab xmpp/jabber.realm.local@REALM.LOCAL
Все работает
в файл /etc/default/ejabberd-gssapi в конец файла включаю окружение export KRB5_KTNAME="/etc/ejabberd/xmpp.keytab
в конфиг добавляю
{sasl_realm, «REALM.LOCAL»}.
{sasl_fqdn, «jabber.realm.local»}.
перезапускаю сервер и на клиенте miranda пытаюсь зайти под доменной учеткой и в дебаге клиента пишет что доступные механизмы PLAIN и OAUTH и все

Date: 2016-08-15 12:38 pm (UTC)
From: [identity profile] dr-klm.livejournal.com
в конфиг добавляю
{sasl_realm, «REALM.LOCAL»}.
{sasl_fqdn, «jabber.realm.local»}.
В ejabberd 16.01 конфиги пишутся на языке yaml (https://docs.ejabberd.im/admin/guide/configuration/), у него другой синтаксис (да и расширение конфигурационного файла другое).

К.Л.М.

Date: 2016-08-15 01:12 pm (UTC)
From: [identity profile] Александр Лычангин (from livejournal.com)
Извиняю
sasl_realm: "REALM.LOCAL"
sasl_fqdn: "jabber.realm.local"
Просто быстро скопировал и не глядя отправил, но общий смысл такой что такие параметры я добавил и они не работают, но не пишет в логах что такие параметры неизвестны или неправельные опции

Date: 2016-08-15 01:17 pm (UTC)
From: [identity profile] dr-klm.livejournal.com
Ну, тогда смотрите логи. Процесс esasl запускается ? Нет ли ошибок apparmor ?

К.Л.М.

Date: 2016-08-15 01:24 pm (UTC)
From: [identity profile] Александр Лычангин (from livejournal.com)
а пакет cyrus-sasl ставить надо было?

Date: 2016-08-15 01:31 pm (UTC)
From: [identity profile] dr-klm.livejournal.com
Нет. Нужно libgsasl7, но эта библиотека и так в зависимостях.

К.Л.М.
Edited Date: 2016-08-15 01:32 pm (UTC)

Date: 2016-08-15 05:17 pm (UTC)
From: [identity profile] a-lychangin.livejournal.com
Я полностью отключил AppArmor:
sudo systemctl stop apparmor.service
sudo systemctl disable apparmor.service
sudo update-rc.d -f apparmor remove
Вот конфиг, который я использую в данный момент config (https://gist.github.com/Lychangin/cfc3bbdd36868577c4d1b1fb1a456141)
при запуске ejabberd в режиме ejabberdctl live выдает такую портянку ejabberd.log (https://gist.github.com/Lychangin/c75e86c13e606e8810abab962547aa87) и попутно в тот же самый момент запустил подключение агента

Date: 2016-08-15 06:07 pm (UTC)
From: [identity profile] a-lychangin.livejournal.com
В личном сообщении скинул конфиги и логи ejabberd. Здесь почему то ссылки нельзя прикрепить

Date: 2016-08-18 07:39 pm (UTC)
From: [identity profile] a-lychangin.livejournal.com
Здравствуйте, во время компиляции esasl исходника, выдает предупреждение такого рода:
../../esasl/c_src/gsasl_drv.c:174:20: предупреждение: «string_from_rc» определена, но нигде не используется [-Wunused-function]
При компиляции исходника ejabberd, такая же ошибка вылезает. Ставлю на centos 7 x64, ejabberd 16.06.

Date: 2016-08-19 11:02 am (UTC)
From: [identity profile] dr-klm.livejournal.com
Ну, это выглядит как безвредное сообщение. Просто некоторая функция определена, но нигде не используется. Может быть она использовалась в одной из старых итераций кода, а потом стала не нужна.

К.Л.М.

Date: 2016-08-19 12:26 pm (UTC)
From: [identity profile] a-lychangin.livejournal.com
Уж и не знаю на что и грешить тогда, ваши пакеты все работают, но у меня не получается собрать работоспособный ejabberd с gssapi Выдает такую ошибку при подключении клиента по gssapi

error.log
2016-08-19 12:17:24.945 [error] <0.492.0> gen_fsm <0.492.0> in state wait_for_feature_request terminated with reason: no match of right hand value {error,{gsasl_error,2}} in cyrsasl_gssapi:mech_new/1 line 84
2016-08-19 12:17:24.945 [error] <0.492.0> CRASH REPORT Process <0.492.0> with 0 neighbours exited with reason: no match of right hand value {error,{gsasl_error,2}} in cyrsasl_gssapi:mech_new/1 line 84 in p1_fsm:terminate/8 line 760

При старте все ок, ошибок нету
ejabberd.log
2016-08-18 15:52:55.605 [info] <0.7.0> Application lager started on node ejabberd@localhost
2016-08-18 15:52:55.610 [info] <0.7.0> Application crypto started on node ejabberd@localhost
2016-08-18 15:52:55.623 [info] <0.7.0> Application sasl started on node ejabberd@localhost
2016-08-18 15:52:55.631 [info] <0.7.0> Application asn1 started on node ejabberd@localhost
2016-08-18 15:52:55.631 [info] <0.7.0> Application public_key started on node ejabberd@localhost
2016-08-18 15:52:55.641 [info] <0.7.0> Application ssl started on node ejabberd@localhost
2016-08-18 15:52:55.645 [info] <0.7.0> Application fast_yaml started on node ejabberd@localhost
2016-08-18 15:52:55.653 [info] <0.7.0> Application fast_tls started on node ejabberd@localhost
2016-08-18 15:52:55.658 [info] <0.7.0> Application fast_xml started on node ejabberd@localhost
2016-08-18 15:52:55.661 [info] <0.7.0> Application stringprep started on node ejabberd@localhost
2016-08-18 15:52:55.664 [info] <0.7.0> Application cache_tab started on node ejabberd@localhost
2016-08-18 15:52:55.844 [info] <0.7.0> Application mnesia started on node ejabberd@localhost
2016-08-18 15:52:56.472 [info] <0.7.0> Application inets started on node ejabberd@localhost
2016-08-18 15:52:56.850 [notice] <0.60.0>@lager_file_backend:131 Changed loglevel of /opt/ejabberd/var/log/ejabberd/ejabberd.log to debug

2016-08-18 15:52:56.864 [debug] <0.372.0> Supervisor ejabberd_sup started ejabberd_listener:start_link() at pid <0.413.0>
2016-08-18 15:52:56.864 [debug] <0.372.0> Supervisor ejabberd_sup started ejabberd_sm:start_link() at pid <0.414.0>
2016-08-18 15:52:56.870 [debug] <0.422.0> Supervisor inet_gethost_native_sup started undefined at pid <0.423.0>
2016-08-18 15:52:56.870 [debug] <0.35.0> Supervisor kernel_safe_sup started inet_gethost_native:start_link() at pid <0.422.0>
2016-08-18 15:52:56.872 [info] <0.41.0>@cyrsasl_digest:start:60 FQDN used to check DIGEST-MD5 SASL authentication: <<"jabber01.KOMETADOM.LOCAL">>
2016-08-18 15:52:56.872 [debug] <0.41.0>@cyrsasl:register_mechanism:104 SASL mechanism <<"DIGEST-MD5">> is disabled
2016-08-18 15:52:56.884 [debug] <0.372.0> Supervisor ejabberd_sup started esasl:start_link({local,cyrsasl_gssapi}) at pid <0.424.0>

Date: 2016-08-19 12:38 pm (UTC)
From: [identity profile] dr-klm.livejournal.com
Тоесть мой ejabberd по gssapi авторизует, а тот, который Вы собираете, выдаёт ошибку ?

Date: 2016-08-19 12:55 pm (UTC)
From: [identity profile] a-lychangin.livejournal.com
да, все нормально авторизует, но опять же, у меня версия 16.06 и последний патч и esasl с последнего коммита. То есть в самой настройке я не мог ошибиться, ключи и конфиги ejabberd те же самые. Просто если я допустим вашу сборку буду использовать, то встанет вопрос обновления, я не смогу корректно обновиться, если сейчас не разберусь. Я просто не понимаю, неужели те патчи с EJAB-831 изначально неработающие?

Date: 2016-08-19 02:13 pm (UTC)
From: [identity profile] dr-klm.livejournal.com
Да, изначально неработающие.

Но там в EJAB-831 я написал что считаю в них ключевым. По-идее, если исправить только эту строчку в последнем на тот момент патче, всё должно работать как у меня. Но я не уверен, конечно, насчет 16.06 и более новых версий патча из EJAB-831, там могут быть другие грабли.

Я взял за основу версию, используемую в последнем Ubuntu LTS (Xenial). При переходе на следующий LTS (через несколько лет) я планирую свой патч обновить.

А у Вас CentOS ? Неужели там такой новый Ejabberd ? Я всегда думал, что CentOS более консервативен, чем Ubuntu.

К.Л.М.
Edited Date: 2016-08-19 02:14 pm (UTC)

Date: 2016-08-19 02:33 pm (UTC)
From: [identity profile] a-lychangin.livejournal.com
Ну ejabberd как бы выходит и на деб и на рпм одновременно. И на момент того как вы отписались была версия 16.06. просто badlop отправался что патч 29.07 вроде как работает на 16.06, но у меня не взлетело

Date: 2016-10-09 06:01 pm (UTC)
From: [identity profile] krasilnikovkb.livejournal.com
Подскажите как бороться с такой проблемой?
авторизация по GSSAPI начинается:


2016-10-09 20:44:11.524 [debug] <0.464.0>@ejabberd_receiver:process_data:282 Received XML on stream = < <" < auth xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\" mechanism=\"GSSAPI\">YIIGyAYJKoZIhvcSAQICAQB............



но прерывается такими записями в логах:


2016-10-09 20:44:11.591 [error] <0.465.0> gen_fsm <0.465.0> in state wait_for_feature_request terminated with reason: no function clause matching esasl:server_start(cyrsasl_gssapi, "GSSAPI", "xmpp", <<"ubuntu-01.my.domain.local">>) line 131
2016-10-09 20:44:11.591 [error] <0.465.0> CRASH REPORT Process <0.465.0> with 0 neighbours exited with reason: no function clause matching esasl:server_start(cyrsasl_gssapi, "GSSAPI", "xmpp", <<"ubuntu-01.my.domain.local">>)
line 131 in p1_fsm:terminate/8 line 760


Date: 2016-10-09 08:33 pm (UTC)
From: [identity profile] dr-klm.livejournal.com
Это моя сборка такое выдаёт ?

К.Л.М.

Date: 2016-10-10 06:14 am (UTC)
From: [identity profile] krasilnikovkb.livejournal.com
Да. Сборка ваша. ставил примерно по этой инструкции https://twistedlinux.wordpress.com/2016/02/11/install-ejabberd-with-active-directory-sso-backend/
(само собой указав ваш sudo add-apt-repository ppa:metlov/ejabberd-gssapi && sudo apt-get update)

Данная инструкция близка к идеалу ?

Есть конечно позывы почистить все упоминания SPN == XMPP в AD и сделать снова чистую установку....

Date: 2016-10-10 07:29 am (UTC)
From: [identity profile] krasilnikovkb.livejournal.com
кстати ставлю на ubuntu-16.04.1-server-amd64.iso
проверялось на х64 ?

Date: 2016-10-10 09:07 am (UTC)
From: [identity profile] dr-klm.livejournal.com
Да, на x64 у меня работает.

Всё, что пока могу сказать -- мне кажется проблема в настройках (самого ejabberd или apparmor). Проверьте, что ключи для Ejabberd (с префиксом xmpp) есть в keytab и они доступны (т.е. нет ошибок apparmor).

К.Л.М.

Date: 2016-10-10 09:30 am (UTC)
From: [identity profile] krasilnikovkb.livejournal.com
ну у меня еще несколько мыслей:

1. может этот apparmor вообще отключить? как? или как проверить что с ним всё ок?
2. в вашем конфиге ejabberd закоментировал что принимать соединения на IPv6 - уж вряд ли оно влияет ?
3. у нас в конторе древний AD - 2003... быть может нет пересекающихся алгоритмов шифрования ? :(

Date: 2016-10-10 10:22 am (UTC)
From: [identity profile] dr-klm.livejournal.com
Да, для тестирования можно и отключить.

Я много сделал для того, чтобы ejabberd-gssapi работал под apparmor, но, если какие-то файлы (например keytab) находятся у Вас не там, где у меня, то профиль нужно будет поправить.

ipv6 не должно влиять.

Мне кажеся, что проблема в инициализации kerberos, вследствии чего не проходит инициализация esasl. Это может быть из-за отсутствия доступа к ключам или, да, несовместимости с KDC.

У меня всё работает под Linux доменом (т.е. MIT krb5 и openldap). Но вроде бы у других и под Windows AD работало, как мне писали (по крайней мере, esasl инициализировался нормально).

К.Л.М.

Date: 2016-10-11 06:42 am (UTC)
From: [identity profile] krasilnikovkb.livejournal.com
у меня идеи куда еще смотреть закончились (((

приведу то с чем работал.

Контроллер домена Windows 2003 (да да да старенький)

Виртуалка с чистым линуксом:
# uname -a
Linux ubuntu-01.my.domain.local 4.4.0-42-generic #62-Ubuntu SMP Fri Oct 7 23:11:45 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

root@ubuntu-01:/# /etc/init.d/apparmor stop
[ ok ] Stopping apparmor (via systemctl): apparmor.service.



Файл кейтаб генерировал и через ввод в домен через самбу и такой командой:
# msktutil -c -b "CN=COMPUTERS" -s xmpp/ubuntu-01.my.domain.local -h ubuntu-01.my.domain.local -k /etc/ejabberd/ejabberd.keytab --computer-name UBUNTU-01 --upn xmpp/ubuntu-01.my.domain.local --server vm-dc-1.my.domain.local


в итог имеем содержимое кейтаба:
root@ubuntu-01:~# klist -k -e -t /etc/ejabberd/ejabberd.keytab
Keytab name: FILE:/etc/ejabberd/ejabberd.keytab
KVNO Timestamp           Principal
---- ------------------- ------------------------------------------------------
   3 10.10.2016 17:54:17 UBUNTU-01$@MY.DOMAIN.LOCAL (des-cbc-crc)
   3 10.10.2016 17:54:17 UBUNTU-01$@MY.DOMAIN.LOCAL (des-cbc-md5)
   3 10.10.2016 17:54:17 UBUNTU-01$@MY.DOMAIN.LOCAL (arcfour-hmac)
   3 10.10.2016 17:54:17 xmpp/ubuntu-01.my.domain.local@MY.DOMAIN.LOCAL (des-cbc-crc)
   3 10.10.2016 17:54:17 xmpp/ubuntu-01.my.domain.local@MY.DOMAIN.LOCAL (des-cbc-md5)
   3 10.10.2016 17:54:17 xmpp/ubuntu-01.my.domain.local@MY.DOMAIN.LOCAL (arcfour-hmac)
   3 10.10.2016 17:54:17 host/UBUNTU-01@MY.DOMAIN.LOCAL (des-cbc-crc)
   3 10.10.2016 17:54:17 host/UBUNTU-01@MY.DOMAIN.LOCAL (des-cbc-md5)
   3 10.10.2016 17:54:17 host/UBUNTU-01@MY.DOMAIN.LOCAL (arcfour-hmac)
   3 10.10.2016 17:54:17 host/ubuntu-01.my.domain.local@MY.DOMAIN.LOCAL (des-cbc-crc)
   3 10.10.2016 17:54:17 host/ubuntu-01.my.domain.local@MY.DOMAIN.LOCAL (des-cbc-md5)
   3 10.10.2016 17:54:17 host/ubuntu-01.my.domain.local@MY.DOMAIN.LOCAL (arcfour-hmac)


Аналогичное содержание кейтаба есть на соседнем прокси-сервре. и там SSO успешно работает с нашим KDC


Пробую получить билетик при помощи сгенерированного кейтаба через kinit:

root@ubuntu-01:~# klist
klist: Credentials cache file '/tmp/krb5cc_0' not found
root@ubuntu-01:~# kinit -V -k -t /etc/ejabberd/ejabberd.keytab xmpp/ubuntu-01.my.domain.local
Using default cache: /tmp/krb5cc_0
Using principal: xmpp/ubuntu-01.my.domain.local@MY.DOMAIN.LOCAL
Using keytab: /etc/ejabberd/ejabberd.keytab
Authenticated to Kerberos v5


Билетик получен:
root@ubuntu-01:~# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: xmpp/ubuntu-01.my.domain.local@MY.DOMAIN.LOCAL

Valid starting       Expires              Service principal
11.10.2016 09:01:29  11.10.2016 19:01:29  krbtgt/MY.DOMAIN.LOCAL@MY.DOMAIN.LOCAL
        renew until 12.10.2016 09:01:29


Права на файл:

		
root@ubuntu-01:/etc/ejabberd# ls -l
итого 56
lrwxrwxrwx 1 root     root        26 июл  9 13:50 ejabberdctl.cfg -> ../default/ejabberd-gssapi
-r--r--r-- 1 ejabberd ejabberd   919 окт 10 17:54 ejabberd.keytab
-rw-r----- 1 root     ejabberd  3071 окт 10 15:06 ejabberd.pem
-rw------- 1 ejabberd ejabberd 13823 окт 11 08:55 ejabberd.yml
-rw-r--r-- 1 root     root       111 июл  9 13:50 inetrc
drwxr-xr-x 2 root     root      4096 окт 10 15:06 modules.d


Авторизация через LDAP просто указав логин и пароль успешно проходит.

Date: 2016-10-11 12:30 pm (UTC)
From: [identity profile] dr-klm.livejournal.com
Путь к keytab указан ли в /etc/default/ejabberd-gssapi через переменную KRB5_KTNAME ?

К.Л.М.

Date: 2016-10-11 06:42 am (UTC)
From: [identity profile] krasilnikovkb.livejournal.com

в логах записи при попытке авторизоваться через SSO:
root@ubuntu-01:/var/log/ejabberd# tail -n 1 ./error.log
2016-10-11 08:58:29.623 [error] <0.460.0> CRASH REPORT Process <0.460.0> with 0 neighbours exited with reason: no function clause matching esasl:server_start(cyrsasl_gssapi, "GSSAPI", "xmpp", < <"ubuntu-01.my.domain.local">>) line 131 in p1_fsm:terminate/8 line 760


root@ubuntu-01:/var/log/ejabberd# tail -n 6 ./ejabberd.log
2016-10-11 08:58:29.621 [debug] <0.459.0>@ejabberd_receiver:process_data:282 Received XML on stream = < <"YIIGyAYiiufFPxBCfwKQtFvGq2HiBARC6Bz2IEAX9wWg98rV8TgofQILNgPI6Bh/997Qx4QJyljs8VvkAEDCC/TraZ1bg7y/mBx4OBXxRl_тут_кусочек_вырезал___WsAfQWAeDRfL3GBbkAjKmxUPMzU"> >
2016-10-11 08:58:29.622 [debug] <0.459.0>@shaper:update:120 State: {maxrate,10000,0.0,1476165509621131}, Size=2393
M=119.65, I=0.653
2016-10-11 08:58:29.622 [debug] <0.460.0>@cyrsasl_gssapi:mech_new:83 mech_new <<"ubuntu-01.my.domain.ru">> <<"ubuntu-01.my.domain.local">>
2016-10-11 08:58:29.623 [error] <0.460.0> gen_fsm <0.460.0> in state wait_for_feature_request terminated with reason: no function clause matching esasl:server_start(cyrsasl_gssapi, "GSSAPI", "xmpp", < <"ubuntu-01.my.domain.local"> >) line 131
2016-10-11 08:58:29.623 [error] <0.460.0> CRASH REPORT Process <0.460.0> with 0 neighbours exited with reason: no function clause matching esasl:server_start(cyrsasl_gssapi, "GSSAPI", "xmpp", < <"ubuntu-01.my.domain.local"> >) line 131 in p1_fsm:terminate/8 line 760





Может какой нить гуру по erlang пробегая мимо возьмет да и подскажет в чом дело.

Date: 2016-10-11 12:33 pm (UTC)
From: [identity profile] dr-klm.livejournal.com
Тут, к сожалению, гуру по erlang не водятся. :-( Их вообще мало.

Как я понимяю, функции не находятся потому что модуль не смог инициализироваться. Единственная конфигурируемая (зависящая от внешних факторов) операция при инициализации, насколько я понимаю -- считывание ключа из keytab.

К.Л.М.

Date: 2016-10-19 02:59 pm (UTC)
From: [identity profile] dr-klm.livejournal.com
Гуру по erlang (его зовут Adam Glasgall) нашёлся и прислал мне патч !

Действительно, иногда ejabberd вызывает esasl:server_start с hostname в виде binary. Лечится добавлением варианта функции, который конвертирует из binary в list. Вот его патч

Index: erlang-esasl-0.1git+c87ecc3/esasl/src/esasl.erl
===================================================================
--- erlang-esasl-0.1git+c87ecc3.orig/esasl/src/esasl.erl
+++ erlang-esasl-0.1git+c87ecc3/esasl/src/esasl.erl
@@ -137,8 +137,15 @@ server_start(Server_ref, Mech, Service,
{ok, {Pid, Ref}};
E ->
E
- end.
+ end;

+server_start(Server_ref, Mech, Service, Host) when is_list(Mech),
+ is_list(Service),
+ is_binary(Host) ->
+ server_start(Server_ref, Mech, Service,
+ binary_to_list(Host)).
+
+
%%--------------------------------------------------------------------
%% Function: client_start(Server_ref, Mech, Service, Host)
%% Server_ref = Name | pid()

Я включу его в следующую версию пакета erlang-esasl, которую постараюсь выпустить в ближайшее время.

Да, ещё в процессе беседы мы выяснили, что тип hostname зависит от наличия опции sasl_fqdn в конфиге. Если её нет (как у меня) hostname берётся из net:gethostname/1 и передаётся как список (тогда мой оригинальный пакет работает), если опция sasl_fqdn указана в конфиге, то её значение парсится как binary (тогда функция с таким типом аргумента не находится).

К.Л.М.
Edited Date: 2016-10-19 04:46 pm (UTC)
From: [identity profile] svishchev semen (from livejournal.com)
Здравствуйте, Константин
ПОставил вашу сборку, в логах вот такая ошибка:
2016-10-12 14:27:56.646 [info] <0.1796.0>@ejabberd_c2s:wait_for_feature_request:772 ({socket_state,ezlib,{zlibsock,gen_tcp,#Port<0.26013>,#Port<0.26014>},<0.1795.0>}) Failed authentication for semen@jabra.med.local from ::FFFF:192.168.50.50

В админку и по вручную введеному логину-паролю входит

Опробывал на клиентах Миранда и Миранда NG

В качестве уида:
ldap_uids:
- "sAMAccountName": "%u"
Edited Date: 2016-10-12 12:14 pm (UTC)
From: [identity profile] dr-klm.livejournal.com
Оно может делать много разных пррррррррррррр, но я только по gssapi могу попробовать немного покумекать. Если входит по логину-паролю, то это какая-то другая аутентификация срабатывает.

Для правильной работы gssapi нужны ldap+kerberos, конфиг в формате yml с опцией sasl_realm, ключи для xmpp/<server>, keytab с этими ключами в /etc/ejabberd/xmpp.keytab и /etc/default/ejabberd-gssapi с KRB5_KTNAME=/etc/ejabberd/xmpp.keytab . И это всё только если я ничего не забыл. ;-)

Ах, да ! На клиенте тоже долен работать kerberos, у пользователя должны быть ключи в ticket cache и клиент должен поддерживать авторизацию через gssapi (pidgin поддерживает, насчёт остальных не знаю).

К.Л.М.

Profile

dr_klm: (Default)
Dr. K. L. Metlov

March 2017

S M T W T F S
   1234
567891011
1213141516 1718
19202122232425
262728293031 

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 27th, 2017 02:44 am
Powered by Dreamwidth Studios