Автор Тема: Авторизация с помощью entryUUID  (Прочитано 84555 раз)

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: Авторизация с помощью entryUUID
« Ответ #15 : 20 Июнь 2016, 09:38:15 »
Здравствуйте! Простите, что ответил не сразу -- я в отпуске, и совсем не до компьютеров =) .

Добрый день. И снова я. Ушёл от счетных попыток настроить SASL аутентификацию на винде, перешел на линукс redhat.
Проблема следующего рода, основывая на ссылках, которые Вы предоставили мне ранее, пытаюсь поставить тот же пакет sasl2-bin, такого пакета не находит.

У redhat своя система именования пакетов, совершенно не связанная с именованием пакетов Debian. Как я понял из поиска в google, Вам надо поставить пакет cyrus-sasl-lib.

При попытке поиска и авторизации через терминал получаю следующую фразу:
ldap_sasl_interactive_bind_s: Invalid credentials (49)
additional info: SASL(-13): user not found: no secret in database
При попытке авторизации через ldapadmin получаю следующий ответ:
неправильные учетные данные: SASL(-13): authentification failure: realm changed: authentication aborted
Подскажите, что не так делаю?

Это общие ошибки аутентификации, могут означать что угодно, от неправильно настроенной системы аутентификации до неверно введённого пароля. Трудно что-то сказать, не зная, что Вы уже сделали. Покажите (можно в личку) Ваши настройки libsasl и slapd, тогда можно будет сказать что-то конкретное.

[user1@localhost ~]$ ldapsearch -x
# extended LDIF
#
# LDAPv3
# base <> (default) with scope subtree
# filter: (objectclass=*)
# requesting: ALL
Вот что выдает этот запрос
Соответственно, как я понимаю, не задана база. В какую сторону копать?

Нужно указать базовую запись поиска, то есть запись, начиная с  которой клиент будет искать записи "вниз" по дереву каталога. Базовая запись задаётся в аргументе -b, диапазон поиска -- в аргументе -s. Лучше сразу почитайте man-страницу ldapsearch.

Егор

elms

  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: Авторизация с помощью entryUUID
« Ответ #16 : 20 Июнь 2016, 09:49:00 »
Спасибо за расширенный ответ!
1. Касаемо пакетов, да, с этим разобрался, недостающие пакеты установил.
2. Настройки slapd отправлю в течении 10 минут в личные сообщения, где лежат настройки sasl без понятия.
3. С синтаксисом поиска уже разобрался, допустим при запросе ldapsearch -x -b "dc=nazvaniebd" выдает полностью все каталоги, но это простая аутентификация, насколько я понимаю.
« Последнее редактирование: 20 Июнь 2016, 09:51:46 от elms »

elms

  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: Авторизация с помощью entryUUID
« Ответ #17 : 20 Июнь 2016, 09:56:40 »
А вот теперь самое интересное для меня, как для двухдневного пользователя линукса)
В качестве конфигурационного файла используеться slapd.conf.obsolete, который лежит в usr/share/openldap-servers?

elms

  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: Авторизация с помощью entryUUID
« Ответ #18 : 20 Июнь 2016, 10:33:38 »
1. olcDatabase={2}bdb.ldif:
# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 b9e99f3f
dn: olcDatabase={2}bdb
objectClass: olcDatabaseConfig
objectClass: olcBdbConfig
olcDatabase: {2}bdb
olcSuffix: dc=testtest
olcAddContentAcl: FALSE
olcLastMod: TRUE
olcMaxDerefDepth: 15
olcReadOnly: FALSE
olcRootDN: cn=admin,dc=testtest
olcRootPW: Passw0rd
olcSyncUseSubentry: FALSE
olcMonitoring: TRUE
olcDbDirectory: /var/lib/ldap
olcDbCacheSize: 1000
olcDbCheckpoint: 1024 15
olcDbNoSync: FALSE
olcDbDirtyRead: FALSE
olcDbIDLcacheSize: 0
olcDbIndex: objectClass pres,eq
olcDbIndex: cn pres,eq,sub
olcDbIndex: uid pres,eq,sub
olcDbIndex: uidNumber pres,eq
olcDbIndex: gidNumber pres,eq
olcDbIndex: mail pres,eq,sub
olcDbIndex: ou pres,eq,sub
olcDbIndex: sn pres,eq,sub
olcDbIndex: givenName pres,eq,sub
olcDbIndex: loginShell pres,eq
olcDbIndex: memberUid pres,eq,sub
olcDbIndex: nisMapName pres,eq,sub
olcDbIndex: nisMapEntry pres,eq,sub
olcDbLinearIndex: FALSE
olcDbMode: 0600
olcDbSearchStack: 16
olcDbShmKey: 0
olcDbCacheFree: 1
olcDbDNcacheSize: 0
olcTLSVerifyClient: never
olcTLSCipherSuite: TLSv1+RSA:!EXPORT:!NULL
olcTLSCertificateFile: /etc/openldap/certs/slapdcert.pem
olcTLSCertificateKeyFile: /etc/openldap/certs/slapdkey.pem
structuralObjectClass: olcBdbConfig
entryUUID: 1dde198c-c66c-1035-80c8-9d7284b50bed
creatorsName: cn=config
createTimestamp: 20160614110850Z
entryCSN: 20160614110850.049381Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20160614110850Z
2.olcDatabase={0}config.ldif:
# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 b27b51d6
dn: olcDatabase={0}config
objectClass: olcDatabaseConfig
olcDatabase: {0}config
olcAccess: {0}to *  by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=externa
 l,cn=auth" manage  by * write
olcAccess: {1}to dn.exact="" by * write
olcAccess: {2}to dn.base="dc=testtest" by * write
olcAddContentAcl: TRUE
olcLastMod: TRUE
olcMaxDerefDepth: 15
olcReadOnly: FALSE
olcRootDN: cn=config
olcRootPW: Passw0rd
olcSyncUseSubentry: FALSE
olcMonitoring: FALSE
structuralObjectClass: olcDatabaseConfig
entryUUID: 1dde13d8-c66c-1035-80c6-9d7284b50bed
creatorsName: cn=config
createTimestamp: 20160614110850Z
entryCSN: 20160614110850.049381Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20160614110850Z
« Последнее редактирование: 20 Июнь 2016, 10:38:42 от elms »

elms

  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: Авторизация с помощью entryUUID
« Ответ #19 : 20 Июнь 2016, 11:14:25 »
Выше Вы писали, что у вас всё получилось и авторизация с использованием uid прошла на ура.
Не могли бы Вы поделиться файлом настроек, дабы я сравнил имеющиеся у вас настройки конфигурации и свои?

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: Авторизация с помощью entryUUID
« Ответ #20 : 21 Июнь 2016, 10:22:26 »
Выше Вы писали, что у вас всё получилось и авторизация с использованием uid прошла на ура.
Не могли бы Вы поделиться файлом настроек, дабы я сравнил имеющиеся у вас настройки конфигурации и свои?

Насчёт "ура" я не говорил, пришлось повозиться =) . Я в отпуске и того компьютера с собой нет, попробую воспроизвести стенд на ноутбуке и отпишусь как получится.

Егор

elms

  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: Авторизация с помощью entryUUID
« Ответ #21 : 21 Июнь 2016, 10:29:48 »
Выше Вы писали, что у вас всё получилось и авторизация с использованием uid прошла на ура.
Не могли бы Вы поделиться файлом настроек, дабы я сравнил имеющиеся у вас настройки конфигурации и свои?

Насчёт "ура" я не говорил, пришлось повозиться =) . Я в отпуске и того компьютера с собой нет, попробую воспроизвести стенд на ноутбуке и отпишусь как получится.

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

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: Авторизация с помощью entryUUID
« Ответ #22 : 24 Июнь 2016, 11:16:54 »
Здравствуйте! Простите за задержку -- времени вообще нет, удалось немного посидеть за компьютером в аэропорту между рейсами =) . Но результат есть.

Вот мой минималистический конфигурационный файл slapd.conf:

include       /etc/ldap/schema/core.schema

moduleload    back_mdb.la

sasl-auxprops slapd

authz-regexp  "uid=([^,]+),cn=digest-md5,cn=auth" "uid=$1,ou=People,dc=mycompany,dc=ru"

database    mdb
directory   /data/openldap-experiments/2016-06-23_sasl
suffix      dc=mycompany,dc=ru
rootDN      cn=manager,dc=mycompany,dc=ru
rootPW      test

А вот каталог (файл init.ldif):

# Корневая запись
dn: dc=mycompany,dc=ru
objectClass: organization
objectClass: dcObject
dc: mycompany
o: My Company

# Ветка "Люди"
dn: ou=People,dc=mycompany,dc=ru
objectClass: organizationalUnit
ou: People

# Некто Иван
dn: uid=ivan,ou=People,dc=mycompany,dc=ru
objectClass: inetOrgPerson
uid: ivan
cn: Ivan Petrov
sn: Petrov
userPassword: ivanPassword

Запускаю slapd в интерактивном режиме:

slapd -f ./slapd.conf -h ldap://127.0.0.1:9000 -d 256
Из другого терминала добавляю каталог:

ldapadd -D 'cn=manager,dc=mycompany,dc=ru' -w test -H ldap://127.0.0.1:9000 -f ./init.ldif
Теперь можно подключиться к каталогу от имени пользователя ivan:

ldapsearch -LLL -H ldap://127.0.0.1:9000 -b 'dc=mycompany,dc=ru' -U ivan -w ivanPassword dn
SASL/DIGEST-MD5 authentication started
SASL username: ivan
SASL SSF: 128
SASL data security layer installed.
dn: dc=mycompany,dc=ru

dn: ou=People,dc=mycompany,dc=ru

dn: uid=ivan,ou=People,dc=mycompany,dc=ru

Вот и всё. Ключевым тут является отображение пользователей из аутентификационного псевдокаталога cn=digest-md5,cn=auth в рабочий каталог (см. директиву authz-regexp в конфигурационном файле), без этого отображения аутентификация работать не будет. Да, и пароли в атрибуте userPassword должны быть в открытом виде (обязательно защитите их с помощью ACL).

Остановить slapd в первом терминале можно нажав Ctrl+C.

Когда будете настраивать на настоящем каталоге,там будет динамическая конфигурация, так что, соответственно, нужно будет задать атрибуты olcSaslAuxprops и olcAuthzRegexp записи cn=config.

Егор

elms

  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: Авторизация с помощью entryUUID
« Ответ #23 : 24 Июнь 2016, 11:21:54 »
Здравствуйте! Простите за задержку -- времени вообще нет, удалось немного посидеть за компьютером в аэропорту между рейсами =) . Но результат есть.

Вот мой минималистический конфигурационный файл slapd.conf:

include       /etc/ldap/schema/core.schema

moduleload    back_mdb.la

sasl-auxprops slapd

authz-regexp  "uid=([^,]+),cn=digest-md5,cn=auth" "uid=$1,ou=People,dc=mycompany,dc=ru"

database    mdb
directory   /data/openldap-experiments/2016-06-23_sasl
suffix      dc=mycompany,dc=ru
rootDN      cn=manager,dc=mycompany,dc=ru
rootPW      test

А вот каталог (файл init.ldif):

# Корневая запись
dn: dc=mycompany,dc=ru
objectClass: organization
objectClass: dcObject
dc: mycompany
o: My Company

# Ветка "Люди"
dn: ou=People,dc=mycompany,dc=ru
objectClass: organizationalUnit
ou: People

# Некто Иван
dn: uid=ivan,ou=People,dc=mycompany,dc=ru
objectClass: inetOrgPerson
uid: ivan
cn: Ivan Petrov
sn: Petrov
userPassword: ivanPassword

Запускаю slapd в интерактивном режиме:

slapd -f ./slapd.conf -h ldap://127.0.0.1:9000 -d 256
Из другого терминала добавляю каталог:

ldapadd -D 'cn=manager,dc=mycompany,dc=ru' -w test -H ldap://127.0.0.1:9000 -f ./init.ldif
Теперь можно подключиться к каталогу от имени пользователя ivan:

ldapsearch -LLL -H ldap://127.0.0.1:9000 -b 'dc=mycompany,dc=ru' -U ivan -w ivanPassword dn
SASL/DIGEST-MD5 authentication started
SASL username: ivan
SASL SSF: 128
SASL data security layer installed.
dn: dc=mycompany,dc=ru

dn: ou=People,dc=mycompany,dc=ru

dn: uid=ivan,ou=People,dc=mycompany,dc=ru

Вот и всё. Ключевым тут является отображение пользователей из аутентификационного псевдокаталога cn=digest-md5,cn=auth в рабочий каталог (см. директиву authz-regexp в конфигурационном файле), без этого отображения аутентификация работать не будет. Да, и пароли в атрибуте userPassword должны быть в открытом виде (обязательно защитите их с помощью ACL).

Остановить slapd в первом терминале можно нажав Ctrl+C.

Когда будете настраивать на настоящем каталоге,там будет динамическая конфигурация, так что, соответственно, нужно будет задать атрибуты olcSaslAuxprops и olcAuthzRegexp записи cn=config.

Егор
Огромнейшее спасибо за проделанную работу, да еще и в отпуске между перелетами! Сегодня же обязательно попробую настроить таким же путем и сообщу!) Хорошего отпуска!

elms

  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: Авторизация с помощью entryUUID
« Ответ #24 : 27 Июнь 2016, 12:22:30 »
Огромное спасибо) Всё получилось, аутентификация через терминал проходит.
Но ошибка с LdapAdmin осталась та же самая, ругается. Для проверки сделал всё по шаблону, вбил ваши данные, но ldapadmin ругается, якобы неверно.

elms

  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: Авторизация с помощью entryUUID
« Ответ #25 : 27 Июнь 2016, 14:20:15 »
А, ну и не отходя далеко.
Использую два правила:
olcAuthzRegexp: {1}"uid=([^,]+),cn=digest-md5,cn=auth" "uid=$1,ou=Users,dc=test"
olcAuthzRegexp: {2}"uid=([^,]+),cn=digest-md5,cn=auth" "ldap:///dc=us and comp,dc=test??one?(uid=$1)"
Первое правило работает.
Суть второго в том, что хочу авторизацию проходить через uid. Сам же пользователь представлен как cn=Markus.
Собственно второе правило выполняться не хочет.

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: Авторизация с помощью entryUUID
« Ответ #26 : 28 Июнь 2016, 09:00:04 »
Здравствуйте!
Но ошибка с LdapAdmin осталась та же самая, ругается. Для проверки сделал всё по шаблону, вбил ваши данные, но ldapadmin ругается, якобы неверно.

В LdapAdmin нужно при настройке подключения выбрать пункт GSS-API вместо простой аутентификации.

Первое правило работает.
Суть второго в том, что хочу авторизацию проходить через uid. Сам же пользователь представлен как cn=Markus.
Собственно второе правило выполняться не хочет.

Во втором правиле указан поисковый URL где базовая запись dc=us and comp,dc=test и поисковый диапазон one,то есть, чтобы это работало DN пользователя должно быть cn=Markus,dc=us and comp,dc=test, кроме того, у этого пользователя должен быть атрибут uid, соответствующий вводимому Вами имени. Если это не так, то запись найдена не будет. В общем, Вам нужно сформировать URL с корректными параметрами поиска.

Для моего маленького каталога получился такой URL: ldap:///ou=People,dc=mycompany,dc=ru??one?(uid=$1)
или такой: ldap:///dc=mycompany,dc=ru??sub?(uid=$1)

Егор

elms

  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: Авторизация с помощью entryUUID
« Ответ #27 : 28 Июнь 2016, 11:01:46 »
Здравствуйте!
Но ошибка с LdapAdmin осталась та же самая, ругается. Для проверки сделал всё по шаблону, вбил ваши данные, но ldapadmin ругается, якобы неверно.

В LdapAdmin нужно при настройке подключения выбрать пункт GSS-API вместо простой аутентификации.

Первое правило работает.
Суть второго в том, что хочу авторизацию проходить через uid. Сам же пользователь представлен как cn=Markus.
Собственно второе правило выполняться не хочет.

Во втором правиле указан поисковый URL где базовая запись dc=us and comp,dc=test и поисковый диапазон one,то есть, чтобы это работало DN пользователя должно быть cn=Markus,dc=us and comp,dc=test, кроме того, у этого пользователя должен быть атрибут uid, соответствующий вводимому Вами имени. Если это не так, то запись найдена не будет. В общем, Вам нужно сформировать URL с корректными параметрами поиска.

Для моего маленького каталога получился такой URL: ldap:///ou=People,dc=mycompany,dc=ru??one?(uid=$1)
или такой: ldap:///dc=mycompany,dc=ru??sub?(uid=$1)

Егор
Пункт выбран, делалось всё по примеру, указанному Вами выше)

Касаемо второго правила, да, указанно именно так. uid у Маркуса указан, но он считает, что подходящего пользователя нету в БД. Возможно директиву не надо было пронумеровывать?
ldap_sasl_interactive_bind_s: Invalid credentials (49)
additional info: SASL(-13): user not found: no secret in database
« Последнее редактирование: 28 Июнь 2016, 12:32:18 от elms »

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: Авторизация с помощью entryUUID
« Ответ #28 : 28 Июнь 2016, 13:25:32 »
К сожалению, с LdapAdmin сейчас проверить возможности нет.

А что касается Markus, покажите LDIF его записи (вместе с DN), я помогу с URL.

Егор

elms

  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: Авторизация с помощью entryUUID
« Ответ #29 : 28 Июнь 2016, 13:52:19 »
Допустим самый стандартный ldif
dn: cn=Markus,dc=users and computers,dc=test
objectClass: inetOrgPerson
cn: Markus
sn: Markusik
uid: pd01
Выше указывал правила, правильно ли, что я их пронумеровываю:
olcAuthzRegexp: {1}"uid=([^,]+),cn=digest-md5,cn=auth" "uid=$1,ou=Users,dc=test"
olcAuthzRegexp: {2}"uid=([^,]+),cn=digest-md5,cn=auth" "ldap:///dc=users and computers,dc=test??one?(uid=$1)"
Если я правильно понимаю, то первое правило в данном случае не срабатывает и он переходит на второе или как?
Использую, например:
ldapsearch -LLL -b 'dc=tenders,dc=test' -U pd01
И получаю в ответ ошибку, указывал выше.
Спасибо!)