Переименование существующей записи в каталоге приводит к ошибке «Нарушение имен» - PullRequest
0 голосов
/ 28 июня 2019

Я использую Novell в приложении asp.net core 2.2 для взаимодействия с AD. Следующие функции работают как положено.

  • Получение всех пользователей, Получение пользователей из определенного подразделения
  • Создать пользователя
  • Обновление пользователя
  • Сброс пароля и т. Д.

Но когда я пытаюсь переместить запись в новый контейнер, она выдает следующее исключение

  • Нарушение именования
  • ((Novell.Directory.Ldap.LdapException) e) .LdapErrorMessage: "00000057: LdapErr: DSID-0C090E72, комментарий: ошибка в операции преобразования атрибута, данные 0, v4563"

Вот кодовый блок, который я использую.

var dn = $"CN={user.FirstName} {user.LastName},{this._ldapSettings.ContainerName}"; 
    //dn => CN=arshath shameer,CN=Users,DC=wxyzdev,DC=xyzdev,DC=ca
var newRDn = $"CN={user.FirstName} {user.LastName},OU=DeletedUsers,DC=wxyzdev,DC=xyzdev,DC=ca";
    // newRDn =>  CN=arshath shameer,OU=DeletedUsers,DC=wxyzdev,DC=xyzdev,DC=ca

                using (var ldapConnection = this.GetConnection())
                {
                    //ldapConnection.Delete(dn);
                    ldapConnection.Rename(dn, newRDn, dn, true);
                }

Я перехожу по этой ссылке.

1 Ответ

1 голос
/ 28 июня 2019

Необходимо исправить 2 проблемы:

  • RDN означает относительный DN: часть в DN, которая фактически делает запись отличимой от других в том же контейнереНапример: CN=arshath shameer в CN=arshath shameer,CN=Users,DC=wxyzdev,DC=xyzdev,DC=ca.В вашем случае, поскольку вы не хотите переименовывать, а перемещать запись, она не изменяется:

    var newRDn = $"CN={user.FirstName} {user.LastName}";
    
  • При перемещении записи - вопреки переименованию - RDNостается тем же, но родительский DNS меняется:

    var parentDN = "OU=DeletedUsers,DC=wxyzdev,DC=xyzdev,DC=ca";
    

Теперь давайте переместим запись:

ldapConnection.Rename(dn, newRDN, parentDN, true);

Возможно, вам также потребуется проверить, является ли {this._ldapSettings.ContainerName}заменено на CN=Users,DC=wxyzdev,DC=xyzdev,DC=ca для обеспечения правильной установки переменной dn.

...