ejabberd (FreeBSD) + Active Directory (Win)

Проблемы с установкой, настройкой и работой системных и сетевых программ.

Модераторы: GRooVE, alexco

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
redhot
рядовой
Сообщения: 46
Зарегистрирован: 2009-03-27 10:05:54

ejabberd (FreeBSD) + Active Directory (Win)

Непрочитанное сообщение redhot » 2009-03-27 10:19:35

Помогите, пожалуйста, разобраться в вопросе аутентификации пользователей ejabberd с использованем логинов и паролей из Active Directory (на Win сервере)

Код: Выделить всё

%%%   =======================
%%%   OVERRIDE STORED OPTIONS
override_global.
override_local.
override_acls.

%%%   =========
%%%   DEBUGGING
{loglevel, 5}.

%%%   ================
%%%   SERVED HOSTNAMES

{hosts, ["localhost", "jabber.domain", "jabber.domain.local"]}.

%%%   ===============
%%%   LISTENING PORTS

{listen,
 [

  {5222, ejabberd_c2s, [

                        %%
                        %% If TLS is compiled and you installed a SSL
                        %% certificate, put the correct path to the
                        %% file and uncomment this line:
                        %%
                        %%{certfile, "/path/to/ssl.pem"}, starttls,

                        {access, c2s},
                        {shaper, c2s_shaper},
                        {max_stanza_size, 65536}
                       ]},

  %%
  %% To enable the old SSL connection method in port 5223:
  %%
  %%{5223, ejabberd_c2s, [
  %%                    {access, c2s},
  %%                    {shaper, c2s_shaper},
  %%                    {certfile, "/path/to/ssl.pem"}, tls,
  %%                    {max_stanza_size, 65536}
  %%                   ]},

  {5269, ejabberd_s2s_in, [
                           {shaper, s2s_shaper},
                           {max_stanza_size, 131072}
                          ]},

  %%
  %% ejabberd_service: Interact with external components (transports...)
  %%
  %%{8888, ejabberd_service, [
  %%                        {access, all},
  %%                        {shaper_rule, fast},
  %%                        {ip, {127, 0, 0, 1}},
  %%                        {hosts, ["icq.example.org", "sms.example.org"],
  %%                         [{password, "secret"}]
  %%                        }
  %%                       ]},

  {5280, ejabberd_http, [
                         http_poll,
                         web_admin
                        ]}

 ]}.

%%%   ==============
%%%   AUTHENTICATION

%{auth_method, internal}.


%{host_config, "jabber.ad", [
%       {auth_method, ldap},
%       {ldap_servers, ["192.168.201.3"]}, % List of LDAP servers
%%       {ldap_port, 389},
%       {ldap_uidattr, "sAMAccountName"}, % LDAP attribute that holds user ID
%       {ldap_base, "ou=Users,dc=domain,dc=local"} % Base of LDAP directory
%%       {ldap_rootdn, "cn=ejabberd,dc=domain,dc=local"},
%%      {ldap_password, "Nepo34ir@"}
%]}.

{host_config, "jabber.domain.local", [
       {auth_method, ldap},
       {ldap_servers, ["192.168.201.3"]}, % List of LDAP servers
       {ldap_port, 389},
       {ldap_uidattr, "sAMAccountName"}, % LDAP attribute that holds user ID
       {ldap_group, "CN=Jabber Users,CN=Users,dc=domain,dc=local"},
       {ldap_base, "dc=domain,dc=local"}, % Base of LDAP directory
       {ldap_rootdn, "CN=ejabberd,CN=Users, dc=domain,dc=local"},
       {ldap_password, "11111111"}
]}.

%{host_config, "jabber.domain.local", [
%	{auth_method, ad},
%	{ad_servers, ["192.168.201.3"]},
%	{ad_uidattr, "sAMAccountName"},
%	{ad_group, "CN=Jabber Users,CN=Users,dc=domain,dc=local"},
%	{ad_base, "dc=domain,dc=local"},
%	{ad_rootdn, "CN=ejabberd,CN=Users, dc=domain,dc=local"},
%	{ad_password, "11111111"}
%]}.




%%%   ===============
%%%   TRAFFIC SHAPERS

{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}.

%%%   ====================
%%%   ACCESS CONTROL LISTS

{acl, admin, {user, "admin", "localhost"}}.
{acl, admin, {user, "jadmin", "jabber.domain"}}.
%{acl, admin, {user, "adadmin", "jabber.ad"}}.
{acl, admin, {user, "ejabberd", "jabber.domain.local"}}.
{acl, local, {user_regexp, ""}}.

%%%   ============
%%%   ACCESS RULES

{access, max_user_sessions, [{10, all}]}.
{access, local, [{allow, local}]}.
{access, c2s, [{deny, blocked},
               {allow, all}]}.
{access, c2s_shaper, [{none, admin},
                      {normal, all}]}.
{access, s2s_shaper, [{fast, all}]}.
{access, announce, [{allow, admin}]}.
%!!!!!!
{access, configure, [{allow, admin}]}.
%!!!!!!
{access, muc_admin, [{allow, admin}]}.
{access, muc, [{allow, all}]}.
{access, pubsub_createnode, [{allow, all}]}.
{access, register, [{allow, all}]}.


%%%   ================
%%%   DEFAULT LANGUAGE

{language, "en"}.

%%
%%{host_config, "localhost",
%% [{language, "ru"}]
%%}.


{modules,
 [
  {mod_adhoc,    []},
  {mod_announce, [{access, announce}]}, % recommends mod_adhoc
  {mod_caps,     []},
  {mod_configure,[]}, % requires mod_adhoc
  {mod_disco,    []},
  %%{mod_echo,   [{host, "echo.localhost"}]},
  {mod_irc,      []},
  {mod_last,     []},
  {mod_muc,      [
                  %%{host, "conference.@HOST@"},
                  {access, muc},
                  {access_create, muc},
                  {access_persistent, muc},
                  {access_admin, muc_admin}
                 ]},
  %%{mod_muc_log,[]},
  {mod_offline,  []},
  {mod_privacy,  []},
  {mod_private,  []},
  %%{mod_proxy65,[]},
  {mod_pubsub,   [ % requires mod_caps
                  {access_createnode, pubsub_createnode},
                  {plugins, ["default", "pep"]}
                 ]},
  {mod_register, [
                  %%
                  %% After successful registration, the user receives
                  %% a message with this subject and body.
                  %%
                  {welcome_message, {"Welcome!",
                                     "Hi\nWelcome to this Jabber server."}},

                  %%
                  %% When a user registers, send a notification to
                  %% these Jabber accounts.
                  %%
                  %%{registration_watchers, ["admin1@example.org"]},

                  {access, register}
                 ]},
  {mod_roster,   []},
  %%{mod_service_log,[]},
  {mod_shared_roster,[]},
  {mod_stats,    []},
  {mod_time,     []},
  {mod_vcard,    []},
  {mod_version,  []}
 ]}. 
В логах сообщение про ошибку авторизации... Уже сколько дней подряд с этим сношаемя, а результат оставляет желать лучшего..
Может, кто-то подскажет в чем проблема?
Последний раз редактировалось redhot 2009-03-30 16:26:56, всего редактировалось 1 раз.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

princeps
майор
Сообщения: 2684
Зарегистрирован: 2007-09-25 10:20:59
Откуда: Сочи, Москва
Контактная информация:

Re: ejabberd (FreeBSD) + Active Directory (Win)

Непрочитанное сообщение princeps » 2009-03-28 10:33:12

Сообщение из логов про ошибку авторизации приведи
Deus quos vult perdere dementat prius
http://www.itforum-sochi.ru

Enzo
проходил мимо
Сообщения: 5
Зарегистрирован: 2009-03-28 19:17:03

Re: ejabberd (FreeBSD) + Active Directory (Win)

Непрочитанное сообщение Enzo » 2009-03-28 19:48:29

Я вместе с РедХотом ;)
Вобщем стартую Ёжа, присоеденяюсь программой JAJC 0.0.8.124.

В настройках клиента:
mylogin, mypass – логин и пароль с Эктив Директори на Вин Сервере;
jabber.domain.local – сервер,
поставил «Передавать пароль без шифрования»,
указал IP сервера и порт 5222.

При подключении клиент пишет: Not authorized

А вот и сами моменты в логе:

Код: Выделить всё

=INFO REPORT==== 28-Mar-2009::18:34:34 ===
I(<0.259.0>:ejabberd_listener:116) : (#Port<0.3558>) Accepted connection {{192,168,201,1},1089} -> {{192,168,201,255},5222}

=INFO REPORT==== 28-Mar-2009::18:34:34 ===
D(<0.501.0>:ejabberd_receiver:306) : Received XML on stream = "<stream:stream to=\"jabber.domain.local\" xmlns=\"jabber:client\" xmlns:stream=\"http://etherx.jabber.org/streams\">"

=INFO REPORT==== 28-Mar-2009::18:34:34 ===
D(<0.502.0>:ejabberd_c2s:1346) : Send XML on stream = "<?xml version='1.0'?><stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' id='1497466279' from='jabber.domain.local' xml:lang='en'>"

=INFO REPORT==== 28-Mar-2009::18:34:34 ===
D(<0.501.0>:ejabberd_receiver:306) : Received XML on stream = "<iq type=\"set\" id=\"JAJSAuth\"><query xmlns=\"jabber:iq:auth\"><username>mylogin</username><password>mypass</password><resource>JAJC</resource></query></iq>"

=INFO REPORT==== 28-Mar-2009::18:34:34 ===
D(<0.501.0>:shaper:61) : State: {maxrate,1000,0,1238258074925795}, Size=153
M=76.5, I=2.383


=INFO REPORT==== 28-Mar-2009::18:34:34 ===
D(<0.263.0>:eldap:587) : {searchRequest,
                             {'SearchRequest',"dc=domain,dc=local",
                                 wholeSubtree,neverDerefAliases,0,0,false,
                                 {equalityMatch,
                                     {'AttributeValueAssertion',"uid","mylogin"}},
                                 []}}


=INFO REPORT==== 28-Mar-2009::18:34:34 ===
D(<0.263.0>:eldap:648) : {searchResRef,
                             ["ldap://ForestDnsZones.domain.local/DC=ForestDnsZones,DC=domain,DC=local"]}

=INFO REPORT==== 28-Mar-2009::18:34:34 ===
D(<0.263.0>:eldap:648) : {searchResRef,
                             ["ldap://DomainDnsZones.domain.local/DC=DomainDnsZones,DC=domain,DC=local"]}

=INFO REPORT==== 28-Mar-2009::18:34:34 ===
D(<0.263.0>:eldap:648) : {searchResRef,
                             ["ldap://domain.local/CN=Configuration,DC=domain,DC=local"]}

=INFO REPORT==== 28-Mar-2009::18:34:34 ===
D(<0.263.0>:eldap:648) : {searchResDone,
                             {'LDAPResult',success,[],[],asn1_NOVALUE}}

=INFO REPORT==== 28-Mar-2009::18:34:34 ===
I(<0.502.0>:ejabberd_c2s:489) : ({socket_state,gen_tcp,#Port<0.3558>,<0.501.0>}) Failed legacy authentication for mylogin@jabber.domain.local/JAJC

=INFO REPORT==== 28-Mar-2009::18:34:34 ===
D(<0.502.0>:ejabberd_c2s:1346) : Send XML on stream = "<iq type='error' id='JAJSAuth'><query xmlns='jabber:iq:auth'><username>mylogin</username><password>mypass</password><resource>JAJC</resource></query><error code='401' type='auth'><not-authorized xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/></error></iq>"
Последний раз редактировалось Enzo 2009-03-30 15:26:54, всего редактировалось 1 раз.

princeps
майор
Сообщения: 2684
Зарегистрирован: 2007-09-25 10:20:59
Откуда: Сочи, Москва
Контактная информация:

Re: ejabberd (FreeBSD) + Active Directory (Win)

Непрочитанное сообщение princeps » 2009-03-28 20:01:11

У пользователя ejabberd есть права на просмотр каталога?
Deus quos vult perdere dementat prius
http://www.itforum-sochi.ru

Enzo
проходил мимо
Сообщения: 5
Зарегистрирован: 2009-03-28 19:17:03

Re: ejabberd (FreeBSD) + Active Directory (Win)

Непрочитанное сообщение Enzo » 2009-03-28 21:59:37

Ну я в Active Directory можно сказать новичёк, создал пользователя ejabberd, создал группу Jabber Users. В группе находится ejabberd и ещё пару пользователей.
Для пользователя поставил "Учетная запись доверена для делегирования".
Для группы права Администратора и Администратора домена.
А на счет "права на просмотр каталога" не уверен, не пойму где это поставить.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35466
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: ejabberd (FreeBSD) + Active Directory (Win)

Непрочитанное сообщение Alex Keda » 2009-03-29 2:25:46

Enzo писал(а):Я вместе с РедХотом ;)
чуть не двинул тему в раздел линукса =)))
Убей их всех! Бог потом рассортирует...

princeps
майор
Сообщения: 2684
Зарегистрирован: 2007-09-25 10:20:59
Откуда: Сочи, Москва
Контактная информация:

Re: ejabberd (FreeBSD) + Active Directory (Win)

Непрочитанное сообщение princeps » 2009-03-30 9:17:15

Да, я тоже сначала попутал :) По теме: может быть ему какую-нибудь защищенную аутентификацию надо? Время на сервере с джаббером и контроллером домена посмотрите, если сильно отличается, то с АД могут быть проблемы. Киньте ссылку по чем настраиваете.
Deus quos vult perdere dementat prius
http://www.itforum-sochi.ru

princeps
майор
Сообщения: 2684
Зарегистрирован: 2007-09-25 10:20:59
Откуда: Сочи, Москва
Контактная информация:

Re: ejabberd (FreeBSD) + Active Directory (Win)

Непрочитанное сообщение princeps » 2009-03-30 9:19:35

не знаю как в ejabberd, в openfire можно на сервере посмотреть список пользователей. Если ваш еж поддерживает такую фичу, гляньте, вытягивает ли он вообще юзеров из АД.
Deus quos vult perdere dementat prius
http://www.itforum-sochi.ru

Enzo
проходил мимо
Сообщения: 5
Зарегистрирован: 2009-03-28 19:17:03

Re: ejabberd (FreeBSD) + Active Directory (Win)

Непрочитанное сообщение Enzo » 2009-03-30 13:07:36

Спасибо, ребята, и за линукс тоже ;)
Вобщем проблема была в том, что {auth_method, ldap}. и далее по тексту надо было описывать не в виртуальном хосте, а так.
Соединяется с ЛДАПом, теперь проблемма с vcard.

Код: Выделить всё

{mod_vcard_ldap,
        [{host, "users.@HOST@"},
        {ldap_vcard_map,
                [{"NICKNAME", "%u", []},
                {"GIVEN", "%s", ["givenName"]},
                {"MIDDLE", "%s", ["initials"]},
                {"FAMILY", "%s", ["sn"]},
                {"FN", "%s", ["displayName"]},
                {"EMAIL", "%s", ["mail"]},
                {"ORGNAME", "%s", ["company"]},
                {"ORGUNIT", "%s", ["department"]},
                {"CTRY", "%s", ["c"]},
                {"LOCALITY", "%s", ["l"]},
                {"STREET", "%s", ["streetAddress"]},
                {"REGION", "%s", ["st"]},
                {"PCODE", "%s", ["postalCode"]},
                {"TITLE", "%s", ["title"]},
                {"URL", "%s", ["wWWHomePage"]},
                {"DESC", "%s", ["description"]},
                {"TEL", "%s", ["telephoneNumber"]}]},
      {ldap_search_fields,
                [{"User", "%u"},
                {"Name", "givenName"},
                {"Family Name", "sn"},
                {"Email", "mail"},
                {"Phone", "telephoneNumber"}
        ]},
      {ldap_search_reported,
                [{"Full Name", "FN"},
                {"Nickname", "NICKNAME"},
                {"Email", "EMAIL"}]}
        ]}
]}.
Почему-то не хочет, выдает ошибку
=INFO REPORT==== 30-Mar-2009::12:05:50 ===
application: ejabberd
exited: {bad_return,{{ejabberd_app,start,[normal,[]]},
{'EXIT',"/usr/local/etc/ejabberd/ejabberd.cfg approximately in the line 151: syntax error before: ']'"}}}
type: temporary

151-я строка - это:
]}.

Enzo
проходил мимо
Сообщения: 5
Зарегистрирован: 2009-03-28 19:17:03

Re: ejabberd (FreeBSD) + Active Directory (Win)

Непрочитанное сообщение Enzo » 2009-03-30 13:25:20

Даже так: убрал предпоследнюю строку прошлого кода, запускается, только визитные карточки пустые...
=INFO REPORT==== 30-Mar-2009::12:21:20 ===
D(<0.512.0>:ejabberd_sm:372) : session manager
from {jid,"enzo","jabber.domain.local","JAJC","mylogin",
"jabber.domain.local","JAJC"}
to {jid,"mylogin","jabber.domain.local",[],"mylogin","jabber.domain.local",[]}
packet {xmlelement,"iq",
[{"type","get"},{"to",[...]},{[...],...}],
[{xmlelement,[...],...}]}

princeps
майор
Сообщения: 2684
Зарегистрирован: 2007-09-25 10:20:59
Откуда: Сочи, Москва
Контактная информация:

Re: ejabberd (FreeBSD) + Active Directory (Win)

Непрочитанное сообщение princeps » 2009-03-30 13:37:25

Статью нет желания написать?
Deus quos vult perdere dementat prius
http://www.itforum-sochi.ru

Enzo
проходил мимо
Сообщения: 5
Зарегистрирован: 2009-03-28 19:17:03

Re: ejabberd (FreeBSD) + Active Directory (Win)

Непрочитанное сообщение Enzo » 2009-03-30 15:23:38

Уже и визитные карточки есть, просто надо mod_vcard_ldap описывать в разделе modules:

Код: Выделить всё

{modules,
 [
  {mod_adhoc,    []},
  {mod_announce, [{access, announce}]}, % recommends mod_adhoc
  {mod_caps,     []},
  {mod_configure,[]}, % requires mod_adhoc
  {mod_disco,    []},
  %%{mod_echo,   [{host, "echo.localhost"}]},
  {mod_irc,      []},
  {mod_last,     []},
  {mod_muc,      [
                  %%{host, "conference.@HOST@"},
                  {access, muc},
                  {access_create, muc},
                  {access_persistent, muc},
                  {access_admin, muc_admin}
                 ]},
  %%{mod_muc_log,[]},
  {mod_offline,  []},
  {mod_privacy,  []},
  {mod_private,  []},
  %%{mod_proxy65,[]},
  {mod_pubsub,   [ % requires mod_caps
                  {access_createnode, pubsub_createnode},
                  {plugins, ["default", "pep"]}
                 ]},
  {mod_register, [
                  %%
                  %% After successful registration, the user receives
                  %% a message with this subject and body.
                  %%
                  {welcome_message, {"Welcome!",
                                     "Hi\nWelcome to this Jabber server."}},

                  %%
                  %% When a user registers, send a notification to
                  %% these Jabber accounts.
                  %%
                  %%{registration_watchers, ["admin1@example.org"]},

                  {access, register}
                 ]},
  {mod_roster,   []},
  %%{mod_service_log,[]},
  {mod_shared_roster,[]},
  {mod_stats,    []},
  {mod_time,     []},

{mod_vcard_ldap,
       [{host, "users.@192.168.xxx.xxx@"},
       {ldap_vcard_map,
                [{"NICKNAME", "%u", []},
                {"GIVEN", "%s", ["givenName"]},
                {"MIDDLE", "%s", ["initials"]},
                {"FAMILY", "%s", ["sn"]},
                {"FN", "%s", ["displayName"]},
                {"EMAIL", "%s", ["mail"]},
                {"ORGNAME", "%s", ["company"]},
                {"ORGUNIT", "%s", ["department"]},
                {"CTRY", "%s", ["c"]},
                {"LOCALITY", "%s", ["l"]},
                {"STREET", "%s", ["streetAddress"]},
                {"REGION", "%s", ["st"]},
                {"PCODE", "%s", ["postalCode"]},
                {"TITLE", "%s", ["title"]},
                {"URL", "%s", ["wWWHomePage"]},
                {"DESC", "%s", ["description"]},
                {"TEL", "%s", ["telephoneNumber"]}]},
      {ldap_search_fields,
                [{"User", "%u"},
                {"Name", "givenName"},
                {"Family Name", "sn"},
                {"Email", "mail"},
                {"Phone", "telephoneNumber"}
        ]},
      {ldap_search_reported,
                [{"Full Name", "FN"},
                {"Nickname", "NICKNAME"},
                {"Email", "EMAIL"}]}
]},

  {mod_version,  []}
 ]}.
[{host, "users.@192.168.xxx.xxx@"}, - Там нужно указать ИП сервера Active Directory

redhot
рядовой
Сообщения: 46
Зарегистрирован: 2009-03-27 10:05:54

Re: ejabberd (FreeBSD) + Active Directory (Win)

Непрочитанное сообщение redhot » 2009-04-28 9:30:07

Вроде работает все. Теперь можно весь трудоемкий процес вместить в статью :) Куда слать, если что? :roll:

Victus
проходил мимо
Сообщения: 3
Зарегистрирован: 2010-06-24 3:48:26

Re: ejabberd (FreeBSD) + Active Directory (Win)

Непрочитанное сообщение Victus » 2010-06-24 4:40:54

Здравствуйте, товарищи. Случилась тут незадачка
FreeBSD 7.1 - RELEASE
ejabberd 2.1.3
erlang-lite-r13b04_2,1
Авторизация юзера - логин-пароль, пытаюсь подтягивать vcard из AD (вынь-сервер 2008 sp2)
судя по логу, бинд манагера проходит.

Код: Выделить всё

=INFO REPORT==== 2010-06-24 09:09:50 ===
I(<0.366.0>:eldap:902) : LDAP connection on Domen:389

=INFO REPORT==== 2010-06-24 09:09:50 ===
I(<0.40.0>:ejabberd_app:69) : ejabberd 2.1.3 is started in the node ejabberd@localhost

=INFO REPORT==== 2010-06-24 09:09:50 ===
D(<0.366.0>:eldap:945) : Bind Request Message:{'LDAPMessage',1,
                                               {bindRequest,
                                                {'BindRequest',3,
                                                 "cn=Jabadmin,ou=Ejabberd,dc=Domen,dc=ru",
                                                 {simple,"Rooteg$2003"}}},
                                               asn1_NOVALUE}


=INFO REPORT==== 2010-06-24 09:09:50 ===
D(<0.366.0>:eldap:793) : {'LDAPMessage',1,
                             {bindResponse,
                                 {'BindResponse',success,[],[],asn1_NOVALUE,
                                     asn1_NOVALUE}},
                             asn1_NOVALUE}
Далее запрос из psi

Код: Выделить всё

=INFO REPORT==== 2010-06-24 09:13:58 ===
D(<0.366.0>:eldap:634) : {searchRequest,
                             {'SearchRequest',
                                 "ou=Ejabberd,dc=Domen,dc=ru",
                                 wholeSubtree,neverDerefAliases,0,0,false,
                                 {equalityMatch,
                                     {'AttributeValueAssertion',"uid","alex"}},
                                 ["givenName","l","streetAddress","uid"]}}


=INFO REPORT==== 2010-06-24 09:13:58 ===
D(<0.366.0>:eldap:695) : {searchResDone,
                             {'LDAPResult',success,[],[],asn1_NOVALUE}}
Если я правильно понимаю, тоже проходит.
Делегировал права группе с юзерами ежика, отключил шифрование и пароль передается простым текстом.
Нифига не понимаю, не подтягивается вкард. То же самое делал дома на вынь2003, все робило.
Неужто дело в венде, или я где ошибся.
Конфиг:

Код: Выделить всё

{hosts, ["jabber"]}.
....
{ldap_servers, ["Domen"]}.
{ldap_encrypt, none}.
{ldap_port, 389}.
{ldap_rootdn, "cn=Jabadmin,ou=Ejabberd,dc=Domen,dc=ru"}.
{ldap_password, "Rooteg$2003"}.
{ldap_base, "ou=Ejabberd,dc=Domen,dc=ru"}.
....
{mod_vcard_ldap, 
   [
    {ldap_vcard_map,
     [{"NICKNAME", "%u", []},
      {"GIVEN", "%s", ["givenName"]},
      {"LOCALITY", "%s", ["l"]},
      {"STREET", "%s", ["streetAddress"]}
     ]
    },
 
    {ldap_search_fields,
     [{"User", "%u"},
      {"Name","givenName"},
      {"City", "l"},
      {"Nickname", "%u"}
     ]
    },
    
    {ldap_search_reported,
     [{"Nickname", "NICKNAME"},
      {"City", "LOCALITY"}
     ]
    }
   ]
  },
попробовал добавить в мод вкарда, хотя и не совсем понял смысл слова users.:

Код: Выделить всё

[{host, "users.@192.168.xxx.xxx@"}
Та же фигня. Не знаю куда копать, коллеги, помогите. :st:

Victus
проходил мимо
Сообщения: 3
Зарегистрирован: 2010-06-24 3:48:26

Re: ejabberd (FreeBSD) + Active Directory (Win)

Непрочитанное сообщение Victus » 2010-06-25 4:08:46

Решил)) блин, сравнил с конфигом дома, ошибка была в строке

Код: Выделить всё

{ldap_filter, "(member_Of=*)"}.
было

Код: Выделить всё

{ldap_filter, "(member_Of**)"}.
Воистину, внимательность - наше все.

Victus
проходил мимо
Сообщения: 3
Зарегистрирован: 2010-06-24 3:48:26

Re: ejabberd (FreeBSD) + Active Directory (Win)

Непрочитанное сообщение Victus » 2010-06-25 6:03:52

Теперь возник вопрос, как подтягивать аватары из АД.
Никто не сталкивался? буду признателен

Аватара пользователя
RusBiT
лейтенант
Сообщения: 635
Зарегистрирован: 2007-08-03 11:43:53
Откуда: Красноярск
Контактная информация:

Re: ejabberd (FreeBSD) + Active Directory (Win)

Непрочитанное сообщение RusBiT » 2011-06-28 5:57:23

Подскажите на что ругается.

Код: Выделить всё

  {mod_shared_roster_ldap,
   [
    {ldap_base, "DC=domain,DC=ru"},
    {ldap_groupattr,"company"},
    {ldap_groupdesc,"company"},
    %%{ldap_rfilter, "(&(memberOf=CN=JabberUsers,CN=Users,DC=domain,DC=ru) (|(userAccountControl=66050)(userAccountControl=66048)))"},
    {ldap_memberattr,"sAMAccountName"},
    {ldap_userdesc,"description"}
   ]
  },

Код: Выделить всё

=ERROR REPORT==== 2011-06-28 10:28:14 ===
E(<0.36.0>:gen_mod:73) : {undef,
                             [{mod_shared_roster_ldap,start,
                                  ["jabber.domain.ru",
                                   [{ldap_base,"DC=strc,DC=ru"},
                                    {ldap_groupattr,"company"},
                                    {ldap_groupdesc,"company"},
                                    {ldap_memberattr,"sAMAccountName"},
                                    {ldap_userdesc,"description"}]]},
                              {gen_mod,start_module,3},
                              {lists,foreach,2},
                              {ejabberd_app,start,2},
                              {application_master,start_it_old,4}]}
Чем больше я познаю FreeBSD, тем больше я считаю себя ламером :)

Аватара пользователя
RusBiT
лейтенант
Сообщения: 635
Зарегистрирован: 2007-08-03 11:43:53
Откуда: Красноярск
Контактная информация:

Re: ejabberd (FreeBSD) + Active Directory (Win)

Непрочитанное сообщение RusBiT » 2011-06-29 9:52:58

Попробывал поставить все на debian, собрал модуль, но х.з. работает он или нет. В логах пустота.
В конфиге пытаюсь вывести абсолютно всех пользователей, но выходит :( Может не верно описал?

Код: Выделить всё

{mod_shared_roster_ldap,[
                    {ldap_base, "dc=domain,dc=ru"},
                    {ldap_rfilter, "(cn=Domain Users)"},
                    {ldap_filter,"(ObjectClass=*)"},
                    {ldap_groupattr,"cn"},
                    {ldap_groupdesc,"description"},
                    {ldap_memberattr,"memberUid"},
                    {ldap_memberattr_format,"%u"},
                    {ldap_userdesc,"displayName"}
                 ]},
vcard работает :)
Чем больше я познаю FreeBSD, тем больше я считаю себя ламером :)

Аватара пользователя
RusBiT
лейтенант
Сообщения: 635
Зарегистрирован: 2007-08-03 11:43:53
Откуда: Красноярск
Контактная информация:

Re: ejabberd (FreeBSD) + Active Directory (Win)

Непрочитанное сообщение RusBiT » 2011-07-07 9:17:10

Так и не смог победить данный модуль :)
Нашел скрипт на python, прикрутил русский и вроде пока все ок.

Код: Выделить всё

#!/usr/bin/env python

import os
import base64

domain = 'jabber.domain.ru'

group = 'WORK'

##вывод учеток из группы JabberUsers
p=os.popen('ldapsearch -x -h domain.ru -D jabber@domain.ru -w password -b "dc=domain,dc=ru" "(memberOf=CN=JabberUsers,CN=Users,DC=domain,DC=ru)"  sAMAccountName sn givenName | grep -E "^givenName|^sn|^sAMAccountName" | cut -d" " -f2','r')

users = []
accs = []


while 1:
    fam = p.readline().strip()
    name = p.readline().strip()
    acc = p.readline().strip()

    fam = base64.decodestring(fam)
    name = base64.decodestring(name)

    nick = "%s %s" % (fam,name)

    if acc is None or nick is None or acc == "" or nick == "": break
    u={}
    u['acc'] = acc
    u['nick'] = nick
    users.append(u)
    accs.append(acc)

for u in users:
    print "Working with roser of %s@%s" % (u['acc'],domain)
    for ua in users:
        if ua['acc'] != u['acc']:
         os.system('/usr/sbin/ejabberdctl add-rosteritem %s %s %s %s "%s" "%s" both' % (u['acc'],domain,ua['acc'],domain,ua['nick'],group))
         print 'add-roster %s %s %s %s "%s" %s' % (u['acc'],domain,ua['acc'],domain,ua['nick'],group)


oldaccs=open('/etc/ejabberd/users.dat').readlines();

for i in xrange(0,len(oldaccs)): oldaccs[i]=oldaccs[i].strip()

for a in oldaccs:
    try: accs.index(a)
    except:
        print "Account %s no longer exist. Removing from all users" % a
        for a2 in accs:
            os.system('/usr/sbin/ejabberdctl rem-rosteritem %s %s %s %s' % (a2,domain,a,domain))

f = open('/etc/ejabberd/users.dat','w')
for u in users: f.write("%s\n" % u['acc'])
f.close()
Чем больше я познаю FreeBSD, тем больше я считаю себя ламером :)