Active Directory Cookbook by

Discuție

Multe atribute din Active Directory sunt compuse din indicatori de bit. Un bitflag este adesea folosit pentru a codifica proprietăți despre un obiect într-un singur atribut. De exemplu, atributul groupType de pe obiectelegroup este un indicator de biți care este utilizat pentru a determina domeniul de aplicare și tipul grupului.

Atributul userAccountControl de pe obiecteleuser și computer este utilizat pentru a descrie o serie întreagă de proprietăți, inclusiv statusul contului (i.e., enabled or disabled), account lockout, passwordquared, smartcard authentication required, etc.

Atributele searchFlags ș i systemFlags de pe obiectele attributeSchema definesc, printre altele, dacă un atribut este construit, indexat ș i inclus ca parte a Ambiguous Name Resolution (ANR).

Pentru a efectua căutări în funcție de aceste tipuri de atribute, trebuie să folosiți filtre de căutare bitwisesearch. Există două tipuri de filtre de căutare bitwise pe care le puteți utiliza, unul care reprezintă un OR logic și unul care reprezintă unAND logic. Acest lucru este implementat în cadrul unui filtru de căutare ca o regulă de potrivire. O regulă de potrivire este pur și simplu o modalitate de a informa serverul LDAP (în acest caz, un controler de domeniu) să trateze diferit o parte a filtrului. Iată un exemplu de cum arată o regulă de potrivire:

(userAccountControl:1.2.840.113556.1.4.803:=514)

Formatul este (attributename:MatchingRuleOID:=value).După cum am menționat, există două reguli de potrivire pe biți, care sunt definite de OID-uri. Regula de potrivire logică AND OID este1.2.840.113556.1.4.803 și regula de potrivire logică OR OID este1.2.840.113556.1.4.804. Aceste OID-uri instruiesc serverul să efectueze o prelucrare specială a filtrului. Un filtru logic OR va returna un succes dacă oricare dintre biții specificați de value este stocat în attributename. Alternativ, un filtru logic AND va returna succes dacă toți biții specificați devalue, corespund valorii dinattributename. Poate că un exemplu va ajuta la clarificarea acestui aspect.

Pentru a crea un cont de utilizator normal, trebuie să setațiuserAccountControl la 514. Numărul 514 a fostcalculat prin adăugarea indicatorului contului de utilizator normal de 512 împreună cu indicatorul contului dezactivat de 2 (512 + 2 = 514). Dacă folosiți următoarea regulă de potrivire logică OR față de valoarea 514, așa cum se arată aici:

(useraccountcontrol:1.2.840.113556.1.4.804:=514)

se vor obține toate conturile de utilizator normal (indicator 512) SAU conturile dezactivate (indicator 2). Aceasta ar include conturile de utilizator activate (din flag 512), conturile de calculator dezactivate (din flag 2) și conturile de utilizator dezactivate (din flag 2). În cazul luiuserAccountControl, stegulețul 2 se poate aplica atât conturilor de utilizator, cât și celor de calculator și, prin urmare, de ce ambele ar fi incluse în intrările returnate.

Un mod de a vedea beneficiile regulilor de potrivire pe biți este că acestea vă permit să combinați o serie de comparații într-un singur filtru. De fapt, vă poate ajuta să vă gândiți că filtrul OR anterior pe care tocmai l-am arătatpoate fi scris, de asemenea, folosind două expresii:

(|(useraccountcontrol:1.2.840.113556.1.4.804:=2) (useraccountcontrol:1.2.840.113556.1.4.804:=512))

La fel ca înainte, acesta va potrivi userAccountControlatributele care conțin fie steagurile 2, fie 512.

Pentru AND logic, se aplică principii similare. În loc ca oricare dintre biții din steguleț să fie o posibilă potrivire, TOȚI biții din steguleț trebuie să se potrivească pentru ca acesta să returneze un succes. Dacă am schimba exemplul nostruuserAccountControl pentru a folosi AND logic, acesta ar arăta astfel:

(useraccountcontrol:1.2.840.113556.1.4.803:=514)

În acest caz, ar fi returnate doar conturile de utilizator normale care sunt și dezactivate. Același filtru ar putea fi rescris folosind operatorul& în loc de |, după cum urmează:

(&(useraccountcontrol:1.2.840.113556.1.4.803:=2) (useraccountcontrol:1.2.840.113556.1.4.803:=512))

O subtilitate importantă de reținut este aceea că, atunci când comparați doar o singură valoare a unui indicator de bit, regula de potrivire OR logic și AND logic ar returna același rezultat. Așadar, dacă am dori să găsim orice cont de utilizator normal, am putea căuta pe un singur indicator de bit de 512 folosind oricare dintre următoarele:

(useraccountcontrol:1.2.840.113556.1.4.803:=512)(useraccountcontrol:1.2.840.113556.1.4.804:=512)

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.