获得;无效的DN语法";使用ruby LDAP创建新LDAP用户时出错

获得;无效的DN语法";使用ruby LDAP创建新LDAP用户时出错,ruby,ldap,Ruby,Ldap,当我尝试使用ruby 1.9.2和ruby LDAP gem()创建一个新的LDAP用户时,总是会出现以下错误: “无效的DN语法” 我不明白为什么会这样。 与我的服务器的连接工作正常。可以毫无问题地读取现有用户的属性 cn = "#{first_name}#{last_name}" entry = [ LDAP.mod(LDAP::LDAP_MOD_ADD,'objectclass',['top','person', 'user']), LDAP.mod(LDAP::LD

当我尝试使用ruby 1.9.2和ruby LDAP gem()创建一个新的LDAP用户时,总是会出现以下错误: “无效的DN语法”

我不明白为什么会这样。 与我的服务器的连接工作正常。可以毫无问题地读取现有用户的属性

cn = "#{first_name}#{last_name}"

  entry = [
    LDAP.mod(LDAP::LDAP_MOD_ADD,'objectclass',['top','person', 'user']),
    LDAP.mod(LDAP::LDAP_MOD_ADD, 'name',  [cn]),
    LDAP.mod(LDAP::LDAP_MOD_ADD, 'accountExpires',  ["0"]),
    LDAP.mod(LDAP::LDAP_MOD_ADD, 'displayName',  [cn]),
    LDAP.mod(LDAP::LDAP_MOD_ADD, 'name',  [cn]),
    LDAP.mod(LDAP::LDAP_MOD_ADD, 'givenName',  [first_name]),
    LDAP.mod(LDAP::LDAP_MOD_ADD, 'sn',  [last_name]),
    LDAP.mod(LDAP::LDAP_MOD_ADD, 'userPrincipalName',  ["#{first_name}.#{last_name}@my.domain"]),
    LDAP.mod(LDAP::LDAP_MOD_ADD, 'pwdLastSet', ["0"]),
    LDAP.mod(LDAP::LDAP_MOD_ADD, 'sAMAccountName',  ["#{first_name}.#{last_name}"]),
    LDAP.mod(LDAP::LDAP_MOD_ADD | LDAP::LDAP_MOD_BVALUES, 'unicodePwd',  [password_hash]),
    LDAP.mod(LDAP::LDAP_MOD_ADD, 'userAccountControl',  ["66048"]),
  ]

  begin
    ldap_connection.add("cn=#{cn}, ou=MyUsers, dc=my, dc=domain", entry)
  rescue
    puts ldap_connection.err2string(ldap_connection.err)
  end
例如,这种情况发生在名为“John”和姓为“Doe”的情况下


谢谢

验证是否可以使用已知良好的方法添加条目:
ldapmodify
。使用
ldapmodify
创建包含并添加的文件。本地设计院(LDIF)应如下所示:

dn: cn=<the cn>,ou=myusers,dc=my,dc=domain
objectClass: top
objectClass: person
objectClass: user
accountExpires: 0
cn: <the cn>
name: <the cn>
... (the rest of the attributes)
可分辨名称
应该是LDAP客户端中使用的授权ID。如果此命令成功,LDAP客户端可以确保服务器已正确设置,并且授权ID具有足够的访问权限,可以在目录信息树中的该位置添加该条目

另见

谢谢,这是一个很大的帮助:)现在我能够弄清楚,问题属于这两行:
LDAP.mod(LDAP::LDAP\u mod\u ADD | LDAP::LDAP\u mod BVALUES,'unicodewd',[password\u hash]),LDAP.mod LDAP(LDAP::LDAP\u mod ADD,'userAccountControl,[“66048”],
如果这两行代码中只有一行,出现错误
ldapmodify -h hostname -p port -c -a -f <the-file-containing-ldif> \
   -D distinguished-name -w password