我正在尝试从基于Ruby的应用程序中从我们的组织Active Directory中查询特定OU中的服从列表。
从提供的基本示例开始,我一直在试用net/ldap gem (docs here)。以下是我编辑后的版本:
require 'rubygems'
require 'net/ldap'
ldap = Net::LDAP.new :host => <server_ip_address>,
:port => 389,
:auth => {
:method => :simple,
:username => <username>,
:password => <password>
}
filter = Net::LDAP::Filter.eq("OU", "ServerGroups")
treebase = "OU=ServerGroups,OU=Unix,OU=RBAC,OU=Role Groups,OU=Resource Administration,DC=corp,DC=our-company,DC=com"
ldap.search(:base => treebase, :filter => filter) do |entry|
puts("inpsect entry: #{entry}")
puts("DN: #{entry.dn}")
entry.each do |attribute, values|
puts(" #{attribute}:")
values.each do |value|
puts(" --->#{value}")
end
end
end
puts("#{ldap.get_operation_result}")我没有做正确的事情,因为我没有获得在ServerGroups OU中找到的对象列表。
我得到了:
DN: OU=ServerGroups,OU=Unix,OU=RBAC,OU=Role Groups,OU=Resource Administration,DC=corp,DC=our-company,DC=com
dn:
--->OU=ServerGroups,OU=Unix,OU=RBAC,OU=Role Groups,OU=Resource Administration,DC=corp,DC=our-company,DC=com
objectclass:
--->top
--->organizationalUnit
ou:
--->ServerGroups
distinguishedname:
--->OU=ServerGroups,OU=Unix,OU=RBAC,OU=Role Groups,OU=Resource Administration,DC=corp,DC=our-company,DC=com
instancetype:
--->4
whencreated:
--->20210119235409.0Z
whenchanged:
--->20210120000040.0Z
usncreated:
--->81770269
usnchanged:
--->81770269
name:
--->ServerGroups
objectguid:
objectcategory:
--->CN=Organizational-Unit,CN=Schema,CN=Configuration,DC=corp,DC=our-company,DC=com
dscorepropagationdata:
--->16010101000000.0Z有没有人能发现我的错误或者建议一个更好的Ruby相关的解决方案?
谢谢!
发布于 2021-02-10 17:10:06
我认为这是因为您正在设置只与ServerGroups对象本身匹配的Net::LDAP::Filter.eq("OU", "ServerGroups")过滤器。
要获取所有对象,请尝试在不指定过滤器的情况下进行搜索。如果未指定筛选器,则将Net::LDAP uses Net::LDAP::Filter.eq("objectClass", "*")作为匹配所有对象的默认筛选器。
https://stackoverflow.com/questions/66127170
复制相似问题