3 Möglichkeiten, um Anzeigenamen einem Attribut zuzuordnen

Hi zusammen, Fabian vor der Kiste. Möchte man Delegierungen innerhalb einer AD-Umgebungen nutzen, benötigt man in den meisten Fällen nur unsere vorgefertigten Wizards. Diese geben in den meisten Anwendungsszenarien schon die erforderlichen Dialoge und vorgefertigten „Rollen“, die etwa notwendig sind, um der Personalabteilung die Bearbeitung von diversen Benutzerattributen zu gewähren. Andernfalls nutzt man besipielsweise ADSIEdit, DSACLS.EXE oder die erweiterten Optionen der Active Directory Benutzer und Computer MMC im Delegierungswizard. Der Einfachheit halber gehen wir hier nur auf die MMC Variante ein.

Grundsätzliche Informationen zur Delegierung gibt es beispielsweise hier: 

Kommt man nun in die Verlegenheit, einzelne Attribute zu delegieren, stellt sich jedoch schnell die Frage, wie denn die anzupassenden Attribute überhaupt heißen. Denn die Anzeige der „City“ oder „Stadt“ in der Active Directory Benutzer & Computer MMC ist ja nicht gleich dem Attributnamen im AD. Dieser ist immer derselbe und damit sprachunabhängig. Von daher benötigt man Möglichkeiten, die Attribute zu identifizieren. Exemplarisch sollen in diesem Blog Eintrag drei Möglichkeiten genannt werden, obwohl es sicher noch mehr Varianten gibt. Viele Wege führen nach Rom. :-)

1. Die pragmatische Variante

Die Pragmatiker unter uns machen es sich einfach - sie setzen einfach auf einem Testbenutzer einen Beispielwert auf das gewünschte Feld und exportieren danach das Benutzerobjekt mittels LDIFDE oder schauen es sich direkt mit ADSIEdit.msc oder etwa LDP.EXE an. Soll es einem Mitarbeiter oder einen Dienstaccount z.B. ermöglicht werden, die „City“ / „Stadt“ zu bearbeiten, würde der Pragmatiker wie folgt vorgehen:

a) Setzen eines Testwertes in das gewünschte Feld


b) Export des Benutzerobjekts, z.B. mittels LDIFDE:

C:\> ldifde –d „CN=user1,OU=Users,OU=Corp,DC=contoso,DC=com“ –f C:\user1.ldf

Öffnet man die LDF-Datei nun mit einem Texteditor wie Notepad.exe, findet man den Testwert “TESTCITY“ recht problemlos (Export gekürzt):

dn: CN=user1,OU=Users,OU=Corp,DC=contoso,DC=com
changetype: add
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
cn: user1
l: TESTCITY
givenName: user1
distinguishedName: CN=user1,OU=Users,OU=Corp,DC=contoso,DC=com
sAMAccountName: user1

 Der Attributname für die „City“ / „Stadt“ ist also „l“ (kleines „L“ wie „Ludwig“) , was für „locality“ steht.
2. Die „ich nutze die neuen Medien“ Variante

Sind wir mal ehrlich: In den meisten Fällen greift der geübte AD-Admin zur Suchmaschine seiner Wahl, meist mit guten Ergebnissen. So auch in diesem Fall, denn die Suche mit Suchbegriffen wie „active directory attribute city“ führt einen recht schnell zu der folgenden MSDN Seite, die eine ganze Menge Attribute katalogisiert vorhält, so auch das gewünschte:
https://msdn.microsoft.com/en-us/library/cc220045.aspx

2.345 Attribute l
This attribute represents the name of a locality, such as a town or city.

cn: Locality-Name
ldapDisplayName: l
attributeId: 2.5.4.7
attributeSyntax: 2.5.5.12
omSyntax: 64
isSingleValued: TRUE
schemaIdGuid: bf9679a2-0de6-11d0-a285-00aa003049e2
systemOnly: FALSE
searchFlags: fCOPY | fATTINDEX
rangeLower: 1
rangeUpper: 128
attributeSecurityGuid: 77b5b886-944a-11d1-aebd-0000f80367c1
mapiID: 14887
isMemberOfPartialAttributeSet: TRUE
systemFlags: FLAG_SCHEMA_BASE_OBJECT |
FLAG_ATTR_REQ_PARTIAL_SET_MEMBER
schemaFlagsEx: FLAG_ATTR_IS_CRITICAL

Version-Specific Behavior: Implemented on Windows 2000 Server, Windows Server 2003, Windows Server 2003 R2, Windows Server 2008, and Windows Server 7.

The schemaFlagsEx attribute was added to this attribute definition in Windows Server 2008.

3. Die „ich weiß, wovon ich spreche“ Variante

Zu guter Letzt soll noch eine Variante genannt werden, mit der man bei einem „zufälligen“ und lauten Gespräch auf dem Gang in der Personalabteilung Punkte sammeln kann und seinem Ruf als GEEK gerecht wird. So wissen die Kollegen wenigstens, wofür Ihr bezahlt werdet. Bitte die unten dick markierten Wörter besonders laut und wiederholt aussprechen. ;-)

Die Zuordnungen der Anzeigenamen zu Attributen sind wie oben schon angesprochen sprachunabhängig. Die Zuordnung erfolgt über die sogenannten Display Specifier, die in der jeweiligen Installationssprache die Anzeige auch in der Active Directory Benutzer & Computer MMC bestimmt. Möchte man nun herausfinden, welches Attribut zu dem Display Name / Anzeigenamen "City" / "Stadt" gehört, schaut man sich diese Display Specifier der user-Klasse an (da es sich um ein Benutzerobjekt handelt). Hierzu kann ebenfalls wieder ein LDIFDE Export, ADSIEdit, LDP oder ähnliches zählen, hier wurde exemplarisch LDIFDE genutzt:

a) Export der Display Specifier unterhalb des Configuration Naming Contexts

C:\> ldifde –d “CN=user-Display,CN=409,CN=DisplaySpecifiers,CN=Configuration,DC=contoso,DC=com“ –f C:\user-display.ldf

In diesem Fall wurden die englischen Zuordnungen gewählt (409), Deutsch ware etwa “407” als Ländercode, siehe dazu https://msdn.microsoft.com/en-us/library/aa393651(VS.85).aspx.

b) In der exportierten Datei findet man nun die Attribute und deren Anzeigenamen, getrennt durch ein Komma (Ausgabe gekürzt):

dn: CN=user-Display,CN=409,CN=DisplaySpecifiers,CN=Configuration,DC=contoso,DC=com
changetype: add
objectClass: top
objectClass: displaySpecifier
cn: user-Display
distinguishedName:
CN=user-Display,CN=409,CN=DisplaySpecifiers,CN=Configuration,DC=contoso,DC=com
name: user-Display
adminPropertyPages: 12,{5969F63F-CACF-40bf-8891-CA580EB589E9}
shellPropertyPages: 1,{f5d121ed-c8ac-11d0-bcdb-00c04fd8d5b6}
classDisplayName: User
attributeDisplayNames: st,State/Province
attributeDisplayNames: sn,Last Name
attributeDisplayNames: samAccountName,Logon Name (pre-Windows 2000)
attributeDisplayNames: l,City
attributeDisplayNames: homeDirectory,Home Folder
attributeDisplayNames: givenName,First Name
attributeDisplayNames: generationQualifier,Generational Suffix

 

Mit dieser Zuordnung findet man nun auch leicht das Attribut zur Delegierung.

Zu guter Letzt noch ein Hinweis zur Delegierung selbst: Standardmäßig werden in der AD Benutzer & Computer MMC im Sicherheitsdialog nicht alle Attribute angezeigt. ADSIEdit oder LDP hingegen zeigen alle Attribute mit an.

Möchte man bestimmte Attribute auch in der AD Benutzer & Computer MMC anzeigen, kann man dies über die Datei
%SYSTEMROOT%\system32\dssec.dat“ einstellen. So ist der „Anzeigewert“ für das Attribut „l“ (also „City“) gleich "7", d.h. es wird weder die Eigenschaft „Lesen“ noch „Schreiben“ angezeigt. Möchte man beides einblenden, muß der Wert auf „0“ (NULL) gesetzt werden, alternativ nur Lesen oder nur Schreiben, siehe 296490 How to modify the filtered properties of an object https://support.microsoft.com/default.aspx?scid=kb;EN-US;296490 . In der MMC wird dann übrigens der Anzeigename im Sicherheitsdialog angezeigt, nicht der Attributname. Im angesprochenen Fall sucht man im Dialog also nach "City".

Viele Grüße
Fabian