LINUX.ORG.RU
решено ФорумAdmin

Не работает доменная авторизация в Openmeetings 4.0.6

 ,


0

1

Добрый день. Возможно, кто-то уже сталкивался с подобным и смог побороть проблему. Имеется: ОС - Ubuntu 18.04 LTS, Контроллер домена - Windows Server 2012. Необходимо настроить авторизацию с использование AD. В web-интерфейсе OM в разделе Ldap указал путь до файла om_ldap.cfg. В самом файле настройки привел к следующему виду

ldap_conn_host=dc1.corp.local
ldap_conn_port=389
ldap_conn_secure=false
ldap_admin_dn=CN=test,OU=Admins,DC=corp,DC=local
ldap_passwd=password
ldap_search_base=DC=corp,DC=local
ldap_search_query=(sAMAccountName=%s)
ldap_search_scope=SUBTREE
ldap_auth_type=SIMPLEBIND
ldap_userdn_format=sAMAccountName=%s,OU=Admins,DC=corp,DC=local
ldap_provisionning=AUTOCREATE
ldap_deref_mode=always
ldap_use_admin_to_get_attrs=trcorp
ldap_sync_password_to_om=no
ldap_group_mode=QUERY
ldap_group_qcorpry=(&(memberUid=%s)(objectClass=organizationalPerson))
ldap_user_attr_login=sAMAccountName
ldap_user_attr_lastname=sn
ldap_user_attr_firstname=givenName
ldap_user_attr_mail=mail
ldap_user_attr_street=streetAddress
ldap_user_attr_additionalname=description
ldap_user_attr_fax=facsimileTelephoneNumber
ldap_user_attr_zip=postalCode
ldap_user_attr_country=co
ldap_user_attr_town=l
ldap_user_attr_phone=telephoneNumber
ldap_group_attr=memberon
ldap_use_lower_case=false

ldap_import_qcorpry=(objectClass=inetOrgPerson)

Далее захожу на страницу, вместо Local DB выбираю свой домен. Ввожу учетные данные, причем разных пользователей, но получаю ошибку: Имя пользователя или пароль не верны.

В логах вижу следующее сообщение:

DEBUG 01-18 11:50:43.235 o.a.o.c.l.LdapLoginManager:176 [0.0-5080-exec-9] - LdapLoginmanager.doLdapLogin
ERROR 01-18 11:50:43.269 o.a.o.c.l.LdapLoginManager:262 [0.0-5080-exec-9] - Not authenticated.
org.apache.directory.api.ldap.model.exception.LdapAuthenticationException: 80090308: LdapErr: DSID-0C09042F, comment: AcceptSecurityContext error, data 52e, v2580^@

На форуме находил аналогичные проблемы, касающиеся старых версий, в частности там помогали такие настройки:

#specify the LDAP Server type
ldap_server_type=OpenLDAP

#LDAP URL
ldap_conn_url=ldap://x.x.x.x:389

#Login distinguished name (DN) for Authentification on LDAP Server - keep emtpy if not requiered
ldap_admin_dn=CN:admin,DC:local,DC:net

#Loginpass for Authentification on LDAP Server - keep emtpy if not requiered
ldap_passwd=passwd

#base to search for userdata(of user, that wants to login
ldap_search_base=DC:local,DC:net

# Fieldnames (can differ between Ldap servers)
field_user_principal=userPrincipalName

# Ldap auth type(SIMPLE,NONE)
ldap_auth_type=SIMPLE

Но в новой версии изменились параметры. Пытаясь менять их, я все равно сталкиваюсь с одной и той же проблемой...

Тут довольно просто. запускай tshark на сервере и смотри, какие запросы формируются к ldap и что отвечает сервер.

что то типа

tshark -nni interface port 389

AVL2 ★★★★★ ()
Последнее исправление: AVL2 (всего исправлений: 1)
Ответ на: комментарий от AVL2

В сканере вижу похожее:

    1 0.000000000 client → dc TCP 74 57064 → 389 [SYN] Seq=0 Win=29200 Len=0 MSS=1460 SACK_PERM=1 TSval=4029080682 TSecr=0 WS=128
    2 0.000377503 dc → client TCP 74 389 → 57064 [SYN, ACK] Seq=0 Ack=1 Win=8192 Len=0 MSS=1460 WS=256 SACK_PERM=1 TSval=70056650 TSecr=4029080682
    3 0.000397903 client → dc TCP 66 57064 → 389 [ACK] Seq=1 Ack=1 Win=29312 Len=0 TSval=4029080682 TSecr=70056650
    4 0.021879563 client → dc LDAP 135 bindRequest(1) "sAMAccountName=test,OU=Admins,DC=corp,DC=local" simple
    5 0.022788870 dc → client LDAP 176 bindResponse(1) invalidCredentials (80090308: LdapErr: DSID-0C09042F, comment: AcceptSecurityContext error, data 52e, v2580)
    6 0.022815570 client → dc TCP 66 57064 → 389 [ACK] Seq=70 Ack=111 Win=29312 Len=0 TSval=4029080705 TSecr=70056652
    7 0.024679984 client → dc TCP 66 57064 → 389 [FIN, ACK] Seq=70 Ack=111 Win=29312 Len=0 TSval=4029080707 TSecr=70056652
    8 0.025477190 dc → client TCP 66 389 → 57064 [ACK] Seq=111 Ack=71 Win=131584 Len=0 TSval=70056653 TSecr=4029080707
    9 0.025497790 dc → client TCP 60 389 → 57064 [RST, ACK] Seq=111 Ack=71 Win=0 Len=0

unkgsom ()
Ответ на: комментарий от unkgsom

Если проверить корректность атрибутов, то все ок. ldapsearch -x -H ldap://dc1.corp.local:389 -D «CN=test,OU=Admins, DC=corp,DC=local» -w password куча инфы конец

# search result
search: 2
result: 4 Size limit exceeded

unkgsom ()
Ответ на: комментарий от unkgsom

проблема, по видимому, в строке ldap_userdn_format=sAMAccountName=%s,OU=Admins,DC=corp,DC=local если написать ldap_userdn_format=CN=test,OU=Admins,DC=corp,DC=local То авторизация работает, но нужно фильтровать по пользователям и группам, т.е, условия поиска неверные

unkgsom ()
Ответ на: комментарий от unkgsom

ну сам же все видишь

у тебя sAMAccountName=test,OU=Admins,DC=corp,DC=local а надо CN=test,OU=Admins,DC=corp,DC=local

и условия поиска здесь не при чем.

AVL2 ★★★★★ ()
Ответ на: комментарий от unkgsom

если нужен поиск, то нужно использовать два этапа. Первый этап поиск под одним пользователем нужного пользователя, а второй уже биндинг найденного пользователя. у тебя тип авторизации не подходит.

AVL2 ★★★★★ ()
Ответ на: комментарий от unkgsom

Я бы это вообще убрал.

ldap_userdn_format=sAMAccountName=%s,OU=Admins,DC=corp,DC=local

в схеме с поиском оно явно не нужно.

AVL2 ★★★★★ ()

Попробуй, для начала, без фильтра по группам, потом добавляй фильтр.

ldap_conn_host=dc1.corp.local
ldap_conn_port=389
ldap_conn_secure=false
ldap_admin_dn=CN=test,OU=Admins,DC=corp,DC=local
ldap_passwd=password
ldap_search_base=DC=corp,DC=local
ldap_search_query=(sAMAccountName=%s)
ldap_search_scope=SUBTREE
------------------------------------------------------
ldap_auth_type=SEARCHANDBIND
------------------------------------------------------
ldap_userdn_format=sAMAccountName=%s,OU=Admins,DC=corp,DC=local
ldap_provisionning=AUTOCREATE
ldap_deref_mode=always
ldap_use_admin_to_get_attrs=true
ldap_sync_password_to_om=no
------------------------------------------------------
ldap_group_mode=NONE
ldap_group_query=(&(memberof=cn=om_users,ou=groups,dc=corp,dc=local)(objectClass=user))
------------------------------------------------------
ldap_user_attr_login=sAMAccountName
ldap_user_attr_lastname=sn
ldap_user_attr_firstname=givenName
ldap_user_attr_mail=mail
ldap_user_attr_street=streetAddress
ldap_user_attr_additionalname=description
ldap_user_attr_fax=facsimileTelephoneNumber
ldap_user_attr_zip=postalCode
ldap_user_attr_country=co
ldap_user_attr_town=l
ldap_user_attr_phone=telephoneNumber
------------------------------------------------------
ldap_group_attr=memberof
------------------------------------------------------
ldap_use_lower_case=false

ldap_import_query=(&(memberof=cn=om_users,ou=groups,dc=corp,dc=local)(objectClass=user))

ЗЫЖ У тебя название компании ue чтоли? Или зачем ты везде заменил ue на corp?

Ivan_qrt ★★★★★ ()
Ответ на: комментарий от Ivan_qrt

Да, кое-где просто не хотелось ее высвечивать, но поздно. Попробовал данный, все заработало, хотелось бы разобраться, что к чему: Происходит коннект к КД

ldap_conn_host=dc1.corp.local
ldap_conn_port=389
ldap_conn_secure=false

здесь задается пользователь, который пройдет аутентификацию за сервере и сможет получить требуемые атрибуты.

ldap_admin_dn=CN=test,OU=Admins,DC=corp,DC=local
ldap_passwd=password

задается база для поиска пользовательских данных (пользователя, который хочет войти)

ldap_search_base=DC=corp,DC=local

по какому полю будем искать пользователя

ldap_search_query=(sAMAccountName=%s)

область поиска

ldap_search_scope=SUBTREE

тип аутентифакации Ldap

ldap_auth_type=SEARCHANDBIND

формат отличительного имени пользователя, который использоваться для привязки (что-то типа вытаскиваем нужное имя пользователя и говорим, что он хочет пройти аутентификацию)

ldap_userdn_format=sAMAccountName=%s,OU=Admins,DC=corp,DC=local

тип предоставления Ldap

ldap_provisionning=AUTOCREATE

режим разыменования псевдонимов LDAP (всегда)

ldap_deref_mode=always

используем пользователя для получения пользовательских атрибутов.

ldap_use_admin_to_get_attrs=true

отключаем синхронизацию Ldap-пароля с БД ОМ

ldap_sync_password_to_om=no

задаем режим группы ldap, при котором групповые ассоциации будут игнорироваться(используя пользователя в КД?)

ldap_group_mode=NONE
ldap_group_query=(&(memberof=cn=test,ou=Admins,dc=corp,dc=local)(objectClass=user))

атрибуты, которые будут считыватся у пользователя c КД

ldap_user_attr_login=sAMAccountName
ldap_user_attr_lastname=sn
ldap_user_attr_firstname=givenName
ldap_user_attr_mail=mail
ldap_user_attr_street=streetAddress
ldap_user_attr_additionalname=description
ldap_user_attr_fax=facsimileTelephoneNumber
ldap_user_attr_zip=postalCode
ldap_user_attr_country=co
ldap_user_attr_town=l
ldap_user_attr_phone=telephoneNumber

не совсем понятен параметр...

ldap_group_attr=memberof

игнорирование регистра букв

ldap_use_lower_case=false

получаем всех пользователей в LDAP (используя пользователя в КД?)

ldap_import_query=(&(memberof=cn=test,ou=Admins,dc=corp,dc=local)(objectClass=user))

Если я сморозил какую-то , прошу поправить меня....

unkgsom ()
Ответ на: комментарий от unkgsom

Почти всё правильно. Несколько уточнений:

  • по какому полю будем искать пользователя ldap_search_query=(sAMAccountName=%s). Это не поле. Это ldap-фильтр. В него можно напихать довольно много всякого. Например сразу в него можно впихнуть фильтр по memberof, при желании. Типа такого: ldap_search_query=(&(sAMAccountName=%s)(memberof=cn=test,ou=Admins,dc=corp,dc=local)). Тогда он пустит только тех, кто сидит в группе cn=test.
  • формат отличительного имени пользователя, который использоваться для привязки (что-то типа вытаскиваем нужное имя пользователя и говорим, что он хочет пройти аутентификацию) ldap_userdn_format=sAMAccountName=%s,OU=Admins,DC=corp,DC=local.

    Это немного наркомании в ldap-аутентификации от OM. Если метод аутентификации simplebind, то он подставит login в эту строку и попробует залогиниться под получившимся dn и предоставленным паролем. Если не получится, то всё, дальше искать не будет. Кто вообще подобное придумал и зачем, я не знаю. Странный юзкейс, когда все пользователи в одном контейнере. В общем при searchandbind это поле можно игнорировать, оно не используется.

  • не совсем понятен параметр...ldap_group_attr=memberof Группами в OM я не пользовался. Особо не в курсе про это. Но параметр задаёт атрибут, в котором указаны группы, в которые входит данный пользователь. Для ad это memberof.
Ivan_qrt ★★★★★ ()
Ответ на: комментарий от Ivan_qrt

Это немного наркомании в ldap-аутентификации от OM. Если метод аутентификации simplebind, то он подставит login в эту строку и попробует залогиниться под получившимся dn и предоставленным паролем.

Да нет в этом никакой наркомании. В том случае, если нет желания выделять отдельного пользователя под вытаскивание пользователя поиском, есть возможность составить строку исходя из логина и аутентифировать сразу егойным паролем. Это решает проблемы секурности, поскольку нельзя украсть учетку и пароль служебного пользователя и может решить какие то проблемы производительности, поскольку сразу идет бинд без поиска. Понятно, что это частный случай со своими ограничениями, но почему нет?

не совсем понятен параметр...ldap_group_attr=memberof

Точно такой же шаблонный параметр, как и все остальные. Подстановка указанного имени атрибута в запрос, чтобы получить список групп пользователя. ldap это же всего навсего база данных. При желании членов группы можно держать в другом атрибуте, вот и дают возможность его кастомизировать в запросах к ldap. Вас же не удивляет такой же параметр для логина других атрибутов.

AVL2 ★★★★★ ()
Ответ на: комментарий от AVL2

но почему нет?

Я так-то не против. Но хотелось бы, чтобы это было чётко отражено в документации и называлось не simplebind, а чуть более сложно и предлагалось в последнюю очередь. Я давно не смотрел, но судя по ОП и тому, что было раньше, этот метод предлагается одним из первых. А должен последним, как сильно специализированный.

Ivan_qrt ★★★★★ ()
Ответ на: комментарий от Ivan_qrt

Документировать, конечно, надо. А в остальном это еще и самый простой вариант. И называется соответственно, простобинд... :)

AVL2 ★★★★★ ()
Ответ на: комментарий от AVL2

Люди, помогите, везь мозг взорвал

в общем как то получилось настроить один раз по этой инструкции сделать ... потом пошаманили, переставили систему и все - второй раз ни как..:( схема как у коллеги - ADDS на Win2012 и Openmeetings 407 в логах выдает :

Referral LDAP entry found, ignore it
Referral LDAP entry found, ignore it
Referral LDAP entry found, ignore it
NONE users found in LDAP

насколько я понимаю подключение к AD проходит

ну и сам конфиг для OM

ldap_conn_host=dc1.domain.local
ldap_conn_port=389
ldap_conn_secure=false

ldap_admin_dn=CN=testuser,OU=test,DC=domain,DC=local
ldap_passwd=123456

ldap_search_base=DC=domain,DC=local

ldap_search_query=(sAMAccountName=%s)

ldap_search_scope=SUBTREE

ldap_auth_type=SEARCHANDBIND
#ldap_auth_type=SIMPLEBIND
ldap_userdn_format=sAMAccountName=%s,DC=domain,DC=local

ldap_provisionning=AUTOCREATE

ldap_deref_mode=always

ldap_use_admin_to_get_attrs=true

ldap_sync_password_to_om=no

ldap_group_mode=NONE

#ldap_group_query=(&(memberUid=%s)(objectClass=posixGroup))
ldap_group_query=(&(memberof=cn=testuser,ou=test,dc=domain,dc=local)(objectClass=user))

# Ldap user attributes mapping
# Set the following internal OM user attributes to their corresponding Ldap-attribute
ldap_user_attr_login=sAMAccountName
ldap_user_attr_lastname=sn
ldap_user_attr_firstname=givenName
ldap_user_attr_mail=mail
ldap_user_attr_street=streetAddress
ldap_user_attr_additionalname=description
ldap_user_attr_fax=facsimileTelephoneNumber
ldap_user_attr_zip=postalCode
ldap_user_attr_country=co
ldap_user_attr_town=l
ldap_user_attr_phone=telephoneNumber
# optional attribute for user picture
#ldap_user_attr_picture=
ldap_group_attr=memberOf

ldap_use_lower_case=false

#ldap_import_query=(objectClass=inetOrgPerson)
ldap_group_query=(&(memberof=cn=testuser,ou=test,dc=domain,dc=local)(objectClass=user))   

заранее спасибо.

frost_spb ()
Ответ на: Люди, помогите, везь мозг взорвал от frost_spb

ну так смотри через tshark, какие запросы идут. Их можно через ldap_search повторить.

ну и сразу понятно, что вот это лишнее:

ldap_userdn_format=sAMAccountName=%s,DC=domain,DC=local

AVL2 ★★★★★ ()
9 апреля 2020 г.
Ответ на: Люди, помогите, везь мозг взорвал от frost_spb

Люди, помогите мне тоже

Я пытаюсь настроить OpenMeetings 5.0.0-M3 в Ubuntu 18.04 для работы в Active Directory 2016 Native Mode. У меня есть следующий файл конфигурации: SVC - user from Active Directory SVC - OU from Active Directory; SVCUsers - Security Group from Active Directory; SCV-user находистя в OU SVC и SCV-user is a member of group SVCUsers

здесь задается Domain controler comunication settings

ldap_conn_host=172.16.100.12

ldap_conn_port=389

ldap_conn_secure=false

здесь задается пользователь, который пройдет аутентификацию за сервере и сможет получить требуемые атрибуты.

ldap_admin_dn=CN=SVC,OU=SVC,DC=koz,DC=npp,DC=bg

ldap_passwd=P@ssw0rD

задается база для поиска пользовательских данных (пользователя, который хочет войти)

ldap_search_base=DC=koz,DC=npp,DC=bg

по какому полю будем искать пользователя

ldap_search_query=(sAMAccountName=%s)

область поиска

ldap_search_scope=SUBTREE

тип аутентифакации Ldap

ldap_auth_type=SEARCHANDBIND

формат отличительного имени пользователя, который использоваться для привязки (что-то типа вытаскиваем нужное имя пользователя и говорим, что он хочет пройти аутентификацию)

ldap_userdn_format=sAMAccountName=%s,OU=SVC,DC=koz,DC=npp,DC=bg

тип предоставления Ldap

ldap_provisionning=AUTOCREATE

режим разыменования псевдонимов LDAP (всегда)

ldap_deref_mode=always

используем пользователя для получения пользовательских атрибутов.

ldap_use_admin_to_get_attrs=true

отключаем синхронизацию Ldap-пароля с БД ОМ

ldap_sync_password_to_om=no

задаем режим группы ldap, при котором групповые ассоциации будут игнорироваться(используя пользователя в КД?)

ldap_group_mode=NONE ldap_group_query=(&(memberof=cn=SVCUsers,OU=SVC,DC=koz,DC=npp,DC=bg)(objectClass=user))

атрибуты, которые будут считыватся у пользователя c КД

ldap_user_attr_login=sAMAccountName

ldap_user_attr_lastname=sn

ldap_user_attr_firstname=givenName

ldap_user_attr_mail=mail

#ldap_user_attr_street=streetAddress

#ldap_user_attr_additionalname=description

#ldap_user_attr_fax=facsimileTelephoneNumber

#ldap_user_attr_zip=postalCode

#ldap_user_attr_country=co

#ldap_user_attr_town=l

#ldap_user_attr_phone=telephoneNumber

не совсем понятен параметр…

ldap_group_attr=memberof

игнорирование регистра букв

ldap_use_lower_case=false

получаем всех пользователей в LDAP (используя пользователя в КД?)

ldap_group_query=(&(memberof=cn=SVCUsers,OU=SVC,DC=koz,DC=npp,DC=bg)(objectClass=user))

Если у меня есть ошибка, пожалуйста, попровите меня

Еще один вопрос. Надо будет установлено еще дополнительные приложения для Ubuntu OS

Извините меня для мой русский язык!?!

ebratovanov ()
Ответ на: Люди, помогите мне тоже от ebratovanov

Возможно кому пригодится мой рабочий конфигурации

ldap_conn_host=172.16.200.2

ldap_conn_port=389

ldap_conn_secure=false

ldap_admin_dn=CN=ldap_search,OU=Service_users,DC=test,DC=ru

ldap_passwd=SuperTestQAZ1

ldap_search_base=DC=test,DC=ru

ldap_search_query=(sAMAccountName=%s)

ldap_search_scope=SUBTREE

ldap_auth_type=SEARCHANDBIND

ldap_provisionning=AUTOCREATE

ldap_deref_mode=always

ldap_use_admin_to_get_attrs=true

ldap_sync_password_to_om=true

ldap_group_mode=NONE

ldap_group_query=((&(objectCategory=Person)(sAMAccountName=*)(!(UserAccountControl:1.2.840.113556.1.4.803:=2)))

ldap_user_attr_login=sAMAccountName

ldap_user_attr_lastname=sn

ldap_user_attr_firstname=givenName

ldap_user_attr_mail=mail

ldap_user_attr_street=streetAddress

ldap_user_attr_additionalname=description

ldap_user_attr_fax=facsimileTelephoneNumber

ldap_user_attr_zip=postalCode

ldap_user_attr_country=co

ldap_user_attr_town=l

ldap_user_attr_phone=telephoneNumber

ldap_group_attr=memberOf

ldap_use_lower_case=false

ldap_import_query=(&(memberof==CN=ldap_search,OU=Service_users,DC=test,DC=ru)(objectClass=user))

maerty ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.