【问题标题】:getting "Invalid DN syntax" Error while creating a new LDAP user with ruby ldap使用 ruby​​ ldap 创建新 LDAP 用户时出现“无效的 DN 语法”错误
【发布时间】:2012-05-24 08:57:41
【问题描述】:

当我尝试使用 ruby​​ 1.9.2 和 ruby​​-ldap gem (http://ruby-ldap.sourceforge.net/) 创建一个新的 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”时会发生这种情况

谢谢

【问题讨论】:

    标签: ruby ldap


    【解决方案1】:

    验证是否可以使用已知的良好方法添加条目:ldapmodify。创建一个包含LDIF 的文件并使用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)
    

    使用ldapmodify添加:

    ldapmodify -h hostname -p port -c -a -f <the-file-containing-ldif> \
       -D distinguished-name -w password
    

    distinguished-name 应该是 LDAP 客户端中使用的授权 ID。如果此命令成功,LDAP 客户端可以确定服务器已正确设置,并且授权 ID 具有足够的访问权限,可以在目录信息树中的该位置添加该条目。

    另见

    【讨论】:

    • 谢谢,这是一个很大的帮助 :) 现在我能够弄清楚,问题属于这两行:LDAP.mod(LDAP::LDAP_MOD_ADD | LDAP::LDAP_MOD_BVALUES, 'unicodePwd', [password_hash]), LDAP.mod(LDAP::LDAP_MOD_ADD, 'userAccountControl', ["66048"]), 如果我的代码中只有这两行之一,那么出现错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-20
    • 2014-12-08
    • 1970-01-01
    • 2019-12-11
    • 2017-01-22
    • 1970-01-01
    相关资源
    最近更新 更多