Active Directory Cookbook by

Discussie

Veel attributen in Active Directory zijn opgebouwd uit bitflags. Een bitflag wordt vaak gebruikt om eigenschappen over een object in een enkel attribuut te coderen. Zo is het groupType-attribuut opgroup-objecten een bitflag die wordt gebruikt om de omvang en het type van de groep te bepalen.

Het userAccountControl-attribuut opuser– en computer-objecten wordt gebruikt om een hele reeks eigenschappen te beschrijven, waaronder de accountstatus (d.w.z,

De searchFlags– en systemFlags-attributen op attributeSchema-objecten bepalen onder andere of een attribuut wordt geconstrueerd, geïndexeerd en opgenomen als onderdeel van Ambiguous Name Resolution (ANR).

Om tegen dit soort attributen te zoeken, moet u bitwisesearch-filters gebruiken. Er zijn twee soorten bitwise-zoekfilters die u kunt gebruiken: een die een logische OF weergeeft en een die een logische EN weergeeft. Dit wordt in een zoekfilter geïmplementeerd als een “matching rule”. Een overeenstemmingsregel is eenvoudigweg een manier om de LDAP-server (in dit geval een domeincontroller) te informeren om een deel van het filter anders te behandelen. Hier is een voorbeeld van hoe een matching regel eruit ziet:

(userAccountControl:1.2.840.113556.1.4.803:=514)

Het formaat is(attributename:MatchingRuleOID:=value).Zoals ik al zei, zijn er twee bitwise matching regels, die worden gedefinieerd door OID’s. De logische AND matching regel OID is1.2.840.113556.1.4.803 en de logische OR matching regel OID is1.2.840.113556.1.4.804. Deze OID’s instrueren de server om een speciale verwerking op het filter uit te voeren. Een logisch OR filter zal een succes opleveren als een bit gespecificeerd door value, is opgeslagen in attributename. Een logisch AND filter zal ook succes hebben als alle bits die door value zijn gespecificeerd, overeenkomen met de waarde van attributename. Misschien helpt een voorbeeld om dit te verduidelijken.

Om een normale gebruikersaccount aan te maken, moet uuserAccountControl op 514 zetten. Het getal 514 is berekend door de normale gebruikersaccountvlag van 512 op te tellen bij de gehandicapte accountvlag van 2 (512 + 2 = 514). Als u de volgende logische OF-regel gebruikt om de 514-waarde te vergelijken, zoals hier getoond:

(useraccountcontrol:1.2.840.113556.1.4.804:=514)

dan worden alle normale gebruikersaccounts (vlag 512) OF gehandicapte accounts (vlag 2) geretourneerd. Dit zou inhouden: ingeschakelde gebruikersaccounts (van vlag 512), uitgeschakelde computeraccounts (van vlag 2), en uitgeschakelde gebruikersaccounts (van vlag 2). In het geval vanuserAccountControl kan vlag 2 van toepassing zijn op zowel gebruikers- als computeraccounts en daarom zouden beide worden opgenomen in de resultaten.

Een manier om de voordelen van bitwise matching regels te zien is dat ze je in staat stellen om een heleboel vergelijkingen te combineren in een enkel filter. In feite kan het helpen om te bedenken dat het vorige OR-filter dat ik zojuist heb laten zien, ook kan worden geschreven met behulp van twee expressies:

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

Net als voorheen zal dit overeenkomen met userAccountControlattributen die ofwel de 2 ofwel de 512 vlaggen bevatten.

Voor logische AND gelden soortgelijke principes. In plaats van dat elk van de bits in de vlag een mogelijke overeenkomst is, moeten ALLE bits in de vlag overeenkomen om succes te hebben. Als we onsuserAccountControl voorbeeld veranderen om logische AND te gebruiken, zou het er als volgt uitzien:

(useraccountcontrol:1.2.840.113556.1.4.803:=514)

In dit geval zouden alleen normale gebruikersaccounts die ook uitgeschakeld zijn, worden teruggestuurd. Hetzelfde filter zou kunnen worden herschreven met de operator& in plaats van | zoals in het volgende:

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

Een belangrijke subtiliteit om op te merken is dat wanneer je slechts een enkele bit-flag waarde vergelijkt, de logische OF en logische AND matching regel hetzelfde resultaat zouden opleveren. Dus als we normale gebruikersaccounts willen vinden, kunnen we zoeken op de enkele bit-vlag van 512 met een van de volgende opties:

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

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.