Openldap: возможно ли использовать «userPassword» вместо «2.5.4.35» для pwdAttribute? - PullRequest
9 голосов
/ 07 апреля 2011

Я использую 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

Ответы [ 4 ]

6 голосов
/ 20 марта 2012

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 после загрузки наложения.

6 голосов
/ 07 апреля 2011

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

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

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

1 голос
/ 22 августа 2013

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

В способе (cn = config) (также называемом «slapd.d» на некоторых веб-сайтах) есть много шагов, чтобы заставить работать оверлеи.В CentOS 6.4 LDAP по умолчанию, с которым я имел дело, была включена схема 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, и я использовал objectClass класса" device "в дополнение к" pwdPolicy ",как было предложено в другом месте.

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

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

0 голосов
/ 28 декабря 2012

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

...