Nei*_*off 3 ruby active-directory netldap
我正在使用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开头并且不是计算机帐户的用户.
如何添加仅搜索已启用帐户的过滤器?
Dar*_*aro 13
您可以使用ruleOID LDAP_MATCHING_RULE_BIT_AND规则来检查UserAccountControl.
我使用此过滤器来查找已启用的用户:
(&(objectCategory=organizationalPerson)(objectClass=User)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
Run Code Online (Sandbox Code Playgroud)
如果帐户被禁用,userAccountControl:1.2.840.113556.1.4.803将设置位2.
•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).指定userAccountControl并且设置了UF_ACCOUNTDISABLED位的按位比较过滤器将类似于:(UserAccountControl:1.2.840.113556.1.4.803:= 2)