LDAP:查找用户是否为组成员

时间:2018-04-16 21:52:08

标签: ruby ldap

我正在使用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 时,我可以列出用户所属的所有组。有没有办法只检查用户是否属于某个组?

2 个答案:

答案 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