Альтернатива ldap_rename для серверов каталога Sun

#php #ldap #sunone

#php #ldap #sunone

Вопрос:

PHP предоставляет отличную функцию для копирования или перемещения записей каталога в LDAP. К сожалению, эта ldap_rename функция , похоже, не работает в каталоге Sun. Существуют ли какие-либо альтернативы для изменения подразделения учетной записи без необходимости создавать новую учетную запись?

Моя конечная цель — иметь простой метод переключения между двумя подразделениями, например: CN=username,OU=Admin,DC=uaa,DC=alaska,DC=edu для
CN=username,OU=Student,DC=uaa,DC=alaska,DC=edu

Ответ №1:

Вы можете сделать это с помощью LDIF. С точки зрения каталога, задание, которое вы хотите выполнить, называется модификацией DN, для этого есть два глагола LDAP: moddn и modrdn.

Это может быть сделано в LDIF таким способом в OpenLDAP:

 dn: CN=username,OU=Admin,DC=uaa,DC=alaska,DC=edu
changetype: modrdn
newrdn: CN=username
deleteoldrdn: 0
newsuperior: OU=Student,DC=uaa,DC=alaska,DC=edu
  

Я использую этот способ для Active Directory :

 dn: CN=username,OU=Admin,DC=uaa,DC=alaska,DC=edu
Changetype: moddn
Newrdn: CN=username
Deleteoldrdn: 1
Newsuperior: OU=Student,DC=uaa,DC=alaska,DC=edu
  

Будьте осторожны, копирование / удаление существенно отличается от moddn и modrdn в первом решении вы создаете новые объекты (новый guid или uuid в базе данных LDAP) и это может повлиять на репликацию. Во втором решении вы перемещаете объекты.

Возможно, вы сможете найти там глаголы на PHP.

Комментарии:

1. Если сервер каталогов не поддерживает modrdn с директивой newsuperior, как он будет работать с файлом ldif?

2. попробуйте moddn. Какой у вас сервер каталогов?