Недавно я работал над тем, чтобы slapd syncrepl работал с бэкэндом LDAP (репликация на основе push). В то время как у меня были фантастические результаты с syncrepl, использующим pull-based, push-based меня убивает.
Когда я запускаю slapd, у меня возникают проблемы со следующим выводом: syncrepl_message_to_entry: rid = 700 проверка модов (pwdAttribute: значение # 0 недопустимо для синтаксиса)
Это касается моей политики паролей по умолчанию. Я видел и другие сообщения об этой похожей проблеме, но большинство из них так и не дало ответа, поэтому я надеюсь, что я упускаю из виду что-то довольно простое.
Я запускаю этот экземпляр slapd (2.4.35) с базой данных olc и следующими соответствующими параметрами:
objectClass: olcDatabaseConfig
objectClass: oldLDAPConfig
olcDatabase: {1}ldap
olcDbACLBind: bindmethod=simple binddn="cn=Directory Manager" credentials="xxxxxxx"
olcDbOnErr: continue
oldDbUri: ldap://mysatelliteldapserver
oldSyncrepl: rid=700 provider=ldaps://masterldapserver.mydomain.com:636 bindmethod=simple binddn="cn=Directory Manager" credentials="xxxxxxxx" filter="(objectclass=*)" searchbase="dc=my,dc=base" scope=sub schemachecking=off type=refreshOnly interval=00:00:05:00
Который должен вытащить из «masterldapserver» и нажать на «mysatelliteldapserver». Это работает до тех пор, пока не попадет в мою политику паролей, а затем получит:
syncrepl_message_to_entry: rid=700 mods check (pwdAttribute: value #0 invalid per syntax)
Что абсолютно подделка. Я даже дошел до того, что предварительно настроил политики паролей на целевом вспомогательном сервере, а затем перезапустил репликацию.
Источник ясно показывает:
pwdAttribute: userPassword
Но возвращается со значением # 0 (которое в других случаях я связывал с "нулевой" долей).
Итак, вопрос в том, сталкивался ли кто-нибудь еще с этим и есть ли у кого-нибудь предложения по какому-либо исправлению или обходному пути?
заранее спасибо
«значение # 0» - это не само значение. Это означает 0-е значение.
Попробуйте изменить его на OID 'userPassword', или, может быть, у вас нет правильных схем, загруженных в ведомое устройство, чтобы он знал, что userPassword
является.
Я поддерживаю ответ @EJP: либо у потребителя отсутствует опция компиляции (например, поддержка {CRYPT}
пароли, которые должны быть включены в качестве параметра компиляции) или модуля (например, поддержка {SHA256}
или {PDKDF2-SHA*}
пароль, который требует как компиляции модуля, так и вставки модуля в cn=config
).
Это связано с отсутствием у потребителя поддержки схемы хеширования, используемой поставщиком.