在net-ldap中搜索Ruby的“已启用”用户
我正在使用
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 这给了我所有sAMAccountName以neil开头并且不是计算机帐户的用户. 如何添加仅搜索已启用帐户的过滤器? 解决方法
您可以使用ruleOID LDAP_MATCHING_RULE_BIT_AND规则来检查UserAccountControl.
我使用此过滤器来查找已启用的用户: (&(objectCategory=organizationalPerson)(objectClass=User)(!(userAccountControl:1.2.840.113556.1.4.803:=2))) 如果帐户被禁用,userAccountControl:1.2.840.113556.1.4.803将设置位2. The value of ruleOID can be one of the following: ?1.2.840.113556.1.4.803 – 这是LDAP_MATCHING_RULE_BIT_AND规则.仅当属性中的所有位与值匹配时,匹配规则才为真.此规则类似于按位AND运算符. ?1.2.840.113556.1.4.804 – 这是LDAP_MATCHING_RULE_BIT_OR规则.如果属性中的任何位与值匹配,则匹配规则为true.此规则类似于按位OR运算符. 例如,您希望在Active Directory中查询已禁用的用户类对象.保存此信息的属性是userAccountControl属性.该属性由不同标志的组合组成.用于设置要禁用的对象的标志是UF_ACCOUNTDISABLE,其值为0x02(十进制2).使用UF_ACCOUNTDISABLED位设置指定userAccountControl的按位比较过滤器将类似于:(的UserAccountControl:1.2.840.113556.1.4.803:= 2) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |