3

我正在尝试通过执行以下操作使用 ldap 创建一个新用户:

require 'net/ldap'

ldap = Net::LDAP.new
ldap.host = 'ldap'
ldap.auth('uid=myuser,ou=users,dc=my,dc=domain,dc=com', 'mypass')

ldap.bind # this executes successfully, up to this point, all is well

dn = 'uid=newuser,ou=users,dc=my,dc=domain,dc=com'
attributes = { cn: 'newuser', sn: 'surname', objectclass: ['top', 'agent'] }

ldap.add(dn: dn, attributes: attributes)

ldap.get_operation_result
#=> #<OpenStruct code=21, message="unknown result (21)">

我是 ldap 的新手,我在网上找不到一个地方,它提供了如何使用 net-ldap 创建新用户的清晰示例。

4

1 回答 1

3

我也有这些问题,过去 2 天,但最终想出了一个解决方案来让我的用户。这是我的工作代码:

ldap = Net::LDAP.new
        ldap.host = SERVER
        ldap.port = PORT
        ldap.authenticate login, pass        

dn = "cn=Pick Name, dc=example, dc=com"
                attr = {
                  :cn => "Pick Name",
                  :objectclass => "User",
                  :sn => 'Name',
                  :telephoneNumber => "12345678",
                  :mail => "gsmith@example.com"
                }
    ldap.add(:dn => dn, :attributes => attr)

我认为给我带来问题的是 ObjectClass .. 在对象类中,您使用 AD 中设置的 Type 编写。所以如果你想要一个组织单位,它看起来像这样: :objectclass => "organizationalUnit" 另外我认为 DN 和 attr 中的 CN 需要相同。

希望这可以帮助

于 2014-01-23T10:49:05.840 回答