我可以成功绑定到AD LDAP,并修改和创建对象.
但是,如果我想更新或设置类型'布尔'的属性,那么我收到此错误:
00000057:LdapErr:DSID-0C090C3E,注释:属性转换操作出错,数据0,v1db1
这是一段负责的Perl代码:
$rv = $ldap->add($dn, attr=> [
cn => [$u],
objectClass => [ 'top','person', 'organizationalPerson', 'contact' ],
displayName => "$u Mailing List",
mail => $email,
name => $u,
mailNickname => $local,
proxyAddresses => [
"SMTP:$email",
"smtp:$local\@$SERVERDOM",
],
givenName => $u,
targetAddress => "SMTP:$email",
internetEncoding => 1310720,
msExchAddressBookFlags => 1,
msExchModerationFlags => 6,
msExchProvisioningFlags => 0,
msExchHideFromAddressList => 'TRUE',
msExchBypassAudit => 'FALSE',
msExchMailboxAuditEnable => 'FALSE',
Run Code Online (Sandbox Code Playgroud)
]);
问题是最后三个属性; 如果他们被评论出来,那么它是有效的.我尝试使用0和1而不是'TRUE'和'FALSE',但我得到了相同的问题.似乎Net::LDAP代码调用Convert::ASN1的类型string或int不正确; 它应该使用'boolean',但我看不出如何做到这一点.
有没有更好的方法来搜索专门使用Net-ldap gem的用户和计算机?
这是我目前要做的只是为了获得用户.
results = search :base => @base, :filter => Net::LDAP::Filter.eq("cn", "*")
@results = Array.new
results.each do |result|
@results.push result if result[:objectclass].include? "person" unless result[:objectclass].include? "computer"
Run Code Online (Sandbox Code Playgroud)
似乎会有更好的方法.我在文档中看不到任何明显的东西.
我正在使用net-ldap gem来搜索活动目录.
我可以使用过滤器搜索用户:
filter = Net::LDAP::Filter.eq("sAMAccountName", "neil*")
filter2 = ~Net::LDAP::Filter.eq("objectclass", "computer")
joined_filter = Net::LDAP::Filter.join(filter, filter2)
ldap.search(:base => treebase, :filter => joined_filter) do |entry|
puts entry.sAMAccountName
end
Run Code Online (Sandbox Code Playgroud)
这给了我所有sAMAccountName以neil开头并且不是计算机帐户的用户.
如何添加仅搜索已启用帐户的过滤器?
我正在尝试使用net-ldap库为ruby查询ldap服务器以获取任何组的详细信息
require 'rubygems'
require 'net/ldap'
username = "user1"
password = "pass1"
host = 'server.address'
ldap = Net::LDAP.new :host => host, :port => 389
ldap.auth username, password
filter = Net::LDAP::Filter.eq("cn", "*group*")
ldap.search(:base => treebase, :filter => filter, :return_result => true) do |entry|
puts "DN: #{entry.dn}"
entry.each do |attr, values|
puts ".......#{attr}:"
values.each do |value|
puts " #{value}"
end
end
end
Run Code Online (Sandbox Code Playgroud)
我得到有关该组的详细信息,但不是该组的所有者.
什么是错的任何想法?以及如何做到这一点