我正在使用ruby def query(username)
result = nil
ldap = Net::LDAP.new(@ldap_settings) #ldap_settings has the authentication stuff
filter = "(&(objectClass=user)(sAMAccountName=#{username})(memberof=CN=group-name,OU=Linux Groups,OU=Linux))"
if ldap.bind
ldap.search(:base => @base, :filter => filter) do |object|
puts object.memberof
end
else
raise 'Authentication Error!'
end
result
end
gem查询我的AD服务器,以获取用户是否是某个组的成员,并且在我的生活中无法弄清楚我的错误。这是我的代码(我引用了这个答案来提出过滤器 - TABLE_EXISTS_ACTION):
puts Classname.new.query(username)
当我将此函数称为filter = "(&(objectClass=user)(sAMAccountName=#{username}))"
时,它不返回任何内容。
当我使用过滤器my_table = read.csv("./my_table.csv")
# > my_table
# ID TYPE TEXT
# 1 1 a blue water
# 2 2 a,b,c fresh water
# 3 3 a;b,f cold stream
# 4 4 f, b and c lovely sunset
# 5 5 b;c up there
时,我可以列出用户所属的所有组。有没有办法只检查用户是否属于某个组?
答案 0 :(得分:1)
您的查询是正确的,我的建议是使用count()方法返回您想要的信息。
If count() > 0 then
#is part of group
else
#is not part of group
End if
问候
答案 1 :(得分:0)
这就是我最终做的事情:
def query(username)
result = nil
ldap = Net::LDAP.new(@ldap_settings) #ldap_settings has the authentication stuff
filter = "(&(objectClass=user)(sAMAccountName=#{username}))"
if ldap.bind
ldap.search(:base => @base, :filter => filter) do |object|
puts object.memberof.include?("CN=group-im-looking-for,OU=myou,OU=ou,DC=dc,DC=dc,DC=dc")
end
else
raise 'Authentication Error!'
end
result
end
如果用户属于其他组True
,则会返回False
。