Recherche pour “Activé” les utilisateurs de net-ldap pour Ruby
Je suis en utilisant le net-ldap joyau de recherche active directory.
Je peux rechercher des utilisateurs par l'utilisation du filtre:
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
Cela me donne tous les utilisateurs dont le sAMAccountName commence avec neil et n'est pas un compte d'ordinateur.
Comment puis-je ajouter un filtre qui recherche uniquement les comptes activés?
OriginalL'auteur Neil Hoff | 2013-01-03
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le ruleOID LDAP_MATCHING_RULE_BIT_AND règle à vérifier UserAccountControl.
- Je utiliser ce filtre pour trouver les utilisateurs activés:
userAccountControl:1.2.840.113556.1.4.803 aura 2 Bits à définir si le compte est désactivé.
La valeur de ruleOID peut être l'un des suivants:
•1.2.840.113556.1.4.803 - C'est le LDAP_MATCHING_RULE_BIT_AND règle. La règle de correspondance est vrai que si tous les bits de la propriété correspond à la valeur. Cette règle est comme de l'or au niveau du bit ET de l'opérateur.
•1.2.840.113556.1.4.804 - C'est le LDAP_MATCHING_RULE_BIT_OR règle. La règle de correspondance est vrai si tous les bits de la propriété correspond à la valeur. Cette règle est comme l'opérateur de bits or.
Un exemple est lorsque vous souhaitez interroger Active Directory pour l'utilisateur de la classe des objets qui sont handicapés. L'attribut qui contient cette information est l'attribut userAccountControl. Cet attribut est composé d'une combinaison de différents drapeaux. Le drapeau pour la définition de l'objet que vous souhaitez désactiver est UF_ACCOUNTDISABLE, qui a une valeur de 0x02 (2 décimales). La comparaison bit à bit filtre qui spécifie userAccountControl avec le UF_ACCOUNTDISABLED ensemble de bits devrait ressembler à ceci:
(UserAccountControl:1.2.840.113556.1.4.803:=2)
OriginalL'auteur Daro
Il y a une meilleure façon de résoudre votre problème.
$
, par exemple[email protected]
.sAMAccountType
. Il vous dira quel type de compte. Utilisation de la publicité-builtin binaire drapeau de la syntaxe.OriginalL'auteur Michael-O
Daro réponse sur l'aide !(userAccountControl:1.2.840.113556.1.4.803:=2) est tout à fait correcte, mais je ne pouvais pas le faire fonctionner avec ruby net/ldap en utilisant le Net::LDAP::Filtre.méthode join.
Je n'ai cependant réussi à la mettre en œuvre avec Net::LDAP::Filtre.construire, par exemple
filtre = Net::LDAP::Filter.construct("(&(objectClass=User)(memberOf=CN=mygroup,OU=Groups,DC=myplace)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))")
OriginalL'auteur annaken