Openldap: Возможно ли использовать userPassword вместо 2.5.4.35 для pwdAttribute?

Я использую Openldap 2.4.11 в Fedora Core 13.

Я пытаюсь создать политику паролей:

dn: cn=default,ou=policies,dc=estream,dc=com,dc=my
objectClass: person
objectClass: pwdPolicy
objectClass: top
cn: default
pwdAttribute: 2.5.4.35
sn: test

Если я укажу pwdAttriute для «userPassword», я получаю сообщение об ошибке

LDAP: error code 21 - pwdAttribute: value #0 invalid per syntax

Вместо этого я заставляю использовать OID для pwdAttribute:

pwdAttribute: 2.5.4.35

Можно ли использовать «userPassword» вместо «2.5.4.35» для pwdAttribute?

Я пытаюсь настроить openldap для загрузки модуля ppolicy.la в cn=config, но это тоже не работает после нескольких перезапусков службы slapd:

dn: cn=module{0},cn=config
objectClass: olcConfig
objectClass: olcModuleList
objectClass: top
cn: module{0}
olcModuleLoad: {0}/usr/lib64/openldap/ppolicy.la

person Chau Chee Yang    schedule 07.04.2011    source источник


Ответы (4)


Вместо этого я заставляю использовать OID для pwdAttribute:

Вы можете указать либо OID, либо имя атрибута при условии, что загружены и соответствующая схема, и оверлей ppolicy.

Почему у вас есть objectClass=person? Политика паролей — это не человек. Обычно в качестве структурного класса для политик паролей используется objectClass=device.

person user207421    schedule 07.04.2011
comment
Спасибо. Я не знаю об объектном классе = устройстве. Я просто поставил для него структурный класс. - person Chau Chee Yang; 07.04.2011
comment
У меня мало ОУ. В каждой OU есть несколько человек. Могу ли я назначить другую политику паролей для подразделений? Если да, то как я могу это сделать? - person Chau Chee Yang; 07.04.2011
comment
Нет, вы должны установить его для каждого человека. - person user207421; 08.04.2011

По моему опыту, ответ EJP неверен.

Я получил такое же сообщение об ошибке при запуске openldap 2.4.29. Наложение политики паролей позволяет использовать pwdAttribute: userPassword, но только если наложение включено. В противном случае значение будет отклонено с сообщением выше (pwdAttribute: value #0 invalid per syntax).

Если в вашей установке OpenLDAP используются динамические модули, обязательно включите

moduleload      ppolicy.la

в вашем файле slapd.conf (или соответствующем эквиваленте в вашей базе данных cn=config).

Затем загрузите оверлей для соответствующей базы данных:

database        bdb
suffix          "o=example.com"
rootdn          "cn=Directory Manager,o=example.com"
rootpw          password
directory       /opt/openldap-2.4.29/var/openldap-data/example.com
overlay         ppolicy

Перед загрузкой оверлея я мог предоставить OID только для pwdAttribute. После перестроения с --enable-ppolicy и добавления записи overlay я смог использовать ldapmodify для замены pwdAttribute: 2.5.4.35 на pwdAttribute: userPassword.

Мне пришлось обновить значение pwdAttribute после загрузки оверлея.

person GargantuChet    schedule 20.03.2012
comment
вы правы насчет pwdAttribute: userPassword. Я только что попробовал это прямо сейчас - person damko; 19.01.2013
comment
Ну, конечно, это работает, только если оно включено. Это вряд ли делает мой ответ неверным. - person user207421; 25.03.2021
comment
В исходном ответе говорилось, что необходимо указать OID, что было неверно. Пару лет спустя было внесено редактирование, чтобы ваш ответ говорил то же самое, на что я уже указал, а именно то, что наложение позволяет указать либо OID, либо имя. - person GargantuChet; 29.03.2021
comment
Другими словами, я изменил свой ответ, чтобы он был правильным, а вы не изменили свой, чтобы он был правильным. - person user207421; 30.03.2021
comment
Отметка времени и история редактирования делают это достаточно ясным. В моем случае нет ничего неправильного, если учесть контекст; в худшем случае он устарел. Я не поддерживаю активно старые ответы на случай, если кто-то другой исправил свои неправильные ответы. - person GargantuChet; 31.03.2021

Я просто столкнулся с этой проблемой и решил ее иначе, чем выше. Я настраиваю новый LDAP на CentOS 6.4 (для возможного развертывания на RHEL 6.4), и по умолчанию используется схема конфигурации «(cn=config)», поэтому все приведенные выше (без сомнения отличные) инструкции по изменению slapd.conf не применяются. не применяется.

В способе "(cn=config)" (также называемом "slapd.d" на некоторых веб-сайтах) есть много шагов, чтобы заставить оверлеи работать. LDAP CentOS 6.4 по умолчанию, с которым я имел дело, включал схему ppolicy, но она не была активирована.

Чтобы его запустить, было много шагов:

Во-первых, модуль «ppolicy» является динамическим, вы должны убедиться, что он включен в список модулей времени выполнения. В установке CentOS по умолчанию их не было, поэтому мне сначала пришлось включить модули, а затем добавить в список ppolicy. Этот LDIF делает это:

dn: cn=Module{0},cn=config
objectClass: olcModuleList
cn: Module{0}
olcModuleLoad: ppolicy

Если позже вы захотите добавить дополнительные модули, просто добавьте дополнительные записи olcModuleLoad к этому dn.

Во-вторых, вы должны включить наложение для баз данных, к которым вы хотите его применить. Создайте еще один DN, таким образом:

dn: olcOverlay=ppolicy,olcDatabase={2}bdb,cn=config
objectClass: olcPPolicyConfig
olcOverlay: ppolicy

Эти первые два шага выполняются в домене «cn=config», то есть вне базы данных, пользователем root на машине. Последующие шаги находятся в области «dc=example,dc=com», поэтому их можно выполнить с помощью rootDN.

Третий шаг — создать контейнер для политик паролей. Это может быть необязательно, я не уверен - я создал dn, например:

dn: ou=pwpolicies,dc=example,dc=com
objectClass: organizationalUnit
objectClass: top
ou: pwpolicies

В-четвертых, создайте свою реальную политику — у людей, которые столкнулись с этой ошибкой, уже есть это, это dn с «pwdAttribute», который получает синтаксическую ошибку. При правильном выполнении вышеуказанного оверлея и модуля вы можете использовать pwdAttribute: userPassword" без получения синтаксической ошибки. Моя политика, конечно, находилась внутри контейнера ou, и я использовал объектный класс "device" в дополнение к "pwdPolicy", как было предложено в другом месте.

Наконец, вы, конечно, можете использовать политику.

Весь этот процесс стал для меня еще более запутанным, потому что большая часть документации посвящена настройке slapd.conf. Я собрал большую часть этого из книги Zytrax «LDAP для ученых-ракетчиков», которая очень хорошо описывает модуль и наложение, но имеет неправильный или устаревший пример (отсутствует класс структурных объектов) в разделе политики паролей.

person Andrew Reid    schedule 21.08.2013
comment
Спасибо, отличный ответ. Я также должен был сделать это: ldapadd -QY EXTERNAL -f /etc/ldap/schema/ppolicy.ldif для загрузки схемы. - person Torkel Bjørnson-Langen; 17.04.2017

Я преобразовал свою версию 2.3 в версию 2.4 на новом сервере и получил ту же ошибку на Red Hat 6.3. Вместо этого я использовал pwdAttribute: 2.5.4.35, и он загрузился без проблем.

person user1934677    schedule 28.12.2012