重命名目录中的现有条目会显示错误消息“命名违规”

时间:2019-06-28 06:19:48

标签: c# asp.net-core active-directory ldap novell

我正在asp.net core 2.2应用程序中使用Novell与AD进行交互。以下功能按预期工作。

  • 获取所有用户,从特定的OU获取用户
  • 创建用户
  • 更新用户
  • 重置密码等

但是当我尝试将条目移动到新容器中时,会出现以下异常

  • 违反命名
  • (((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);
                }

我正在跟踪this链接。

1 个答案:

答案 0 :(得分:1)

有2个问题要解决:

  • RDN表示 relative DN:DN中实际上构成 在同一容器中可与其他条目区分开的条目,例如: CN=arshath shameer中的CN=arshath shameer,CN=Users,DC=wxyzdev,DC=xyzdev,DC=ca。就您而言,由于您不想重命名而是移动条目,因此它不会更改:

    var newRDn = $"CN={user.FirstName} {user.LastName}";
    
  • 移动条目时-与重命名相反-RDN保持不变, 但是parentDN发生了变化:

    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变量。