Comment build une requête LDAP pour AD qui renvoie tous les users d'un groupe de security particulier dont les counts ne sont pas désactivés?

Comment build une requête LDAP pour AD qui renvoie tous les users d'un groupe de security particulier dont les counts ne sont pas désactivés?

j'ai essayé

(& (objectClass = personne) (! (userAccountControl = ACCOUNTDISABLE )))

mais cela ne semble pas fonctionner.

Je tente de configurer Google Apps Directory Sync et je voudrais synchroniser tous les users qui font partie du groupe de security «Utilisateurs Google Apps» dont les counts ne sont pas désactivés (ou, en option, suspendre des counts en GA s'ils sont désactivés en AD ).

Parfois, un set de valeurs oui / non est stocké dans une seule valeur en définissant différents bits. Vous pouvez utiliser un masque de bits pour vérifier s'ils sont configurés.

Par exemple, 546 en décimal est la valeur binary 10 0010 0010 – en décimale, la sum de 512, 32 et 2. (Tous ces nombres sont des puissances de 2, ce qui signifie qu'ils n'ont qu'un «1» dans leur représentation binary) : Cela signifie que ces trois valeurs oui / non sont définies.

Selon les paragraphes userAccountControl, cela signifie que les valeurs suivantes sont définies:

NORMAL_ACCOUNT (512) PASSWD_NOTREQD (32) ACCOUNTDISABLE (2) 

Cependant, par exemple, si vous aviez un user qui n'avait pas PASSWD_NOTREQD réglé (de sorte que leur valeur userAccountControl était 512), ou celui qui avait également DONT_EXPIRE_PASSWORD (65536) défini (ce qui signifie que leur valeur était 66082), vous ne findez pas ces users dans votre requête.

Ce que vous devez faire, c'est utiliser un bitwise ET afin d'interroger la valeur de ce bit uniquement:

 10 0010 0010 00 0000 0010 ------------ 00 0000 0010 

Si la valeur pour ce bit est 1, alors ce bit est défini. Ce n'est pas grave ce que les autres bits sont configurés, donc vous requestz effectivement si userAccountControl & 2 == 2 .

La syntaxe LDAP pour vérifier un bit en utilisant AND est 1.2.840.113556.1.4.803, vous pouvez donc voir si le bit ACCOUNTDISABLE est configuré avec (userAccountControl: 1.2.840.113556.1.4.803: = 2). Ajouter (! (Foo)) autour de lui vous donne tous les users qui ne sont pas désactivés.

On dirait que cela fonctionnera, mais il ne ramènera pas les membres du groupe nesteds:

 (& (memberOf=CN=GApsUsers,DN=....) (!(userAccountControl=546)) ) 

Cela marche!

 (&(memberOf=CN=Google Apps Users,DC=bbc,DC=pri)(!(userAccountControl:1.2.840.113556.1.4.803:=2))) 

proche mais

(& (objectClass = personne) (! (userAccountControl = ACCOUNTDISABLE)))

devrait être

(& (objectClass = personne) (! userAccountControl = ACCOUNTDISABLE))

S'il vous plaît noter que je ne peux pas vraiment tester cela d'où je suis!