Inhaltsverzeichnis

Der Artikel zur Konfiguration vom LDAP-Verzeichnis/Active Directory sollte vorher jedem bekannt sein.
Wir werden hier verschiedene LDAP Filter und eine komplette ldap.ini Konfiguration durchgehen.
Ziel ist es alle Benutzer und Gruppen aus dem AD/LDAP mit i-doit zu synchronisieren, sowie deren Mitgliedschaften.

Ich setzte Grundkenntnisse im Bezug auf AD/LDAP voraus.
In diesen Beispielen wird für Personen die objectClass = user verwendet.
Für Gruppen wird die objectClass = group verwendet.
Wenn man nicht alle Benutzer oder Gruppen der Domnäne synchronisieren will muss unter “Nach Benutzern suchen in (OU)*” der DN/CN einer OU bzw. eines Containers eingetragen werden.













Import von Benutzern

Hier werden nur Benutzer synchronisiert, das bedeutet auch, dass keine Gruppen erstellt werden.Damit nur Benutzer synchronisiert werden muss der Filter so aussehen:

Import von Benutzern

 (objectClass=user)

 

Import mit bestimmten Attributen

Wir möchten hier auf ein Attribut filtern und nur diesen Benutzer synchronisieren.
Nur der Benutzer der im Attribut “sAMAccountName” den Wert “MichaelO” hat soll synchronisiert werden.

Import von Benutzern

 (&(objectClass=user)(sAMAccountName=MichaelO))

 

Import von Benutzern und Gruppen

Hier werden Benutzer und Gruppen erstellt außerdem werden die Benutzer den jeweiligen Gruppen zugewiesen.
Damit Benutzer und Gruppen synchronisiert werden muss der Filter so aussehen:

Import von Benutzern und Gruppen

 (|(objectClass=user)(objectClass=group))

 

Import von Benutzern die Mitglied der Gruppe idoit-read sind

Damit nur Benutzer die Mitglied der Gruppe idoit-read sind synchronisiert werden muss der Filter so aussehen:

Import von Benutzer die Mitglied der Gruppe idoit sind

 (&(objectClass=user)(memberOf=CN=idoit-read,CN=Users,DC=synetics,DC=test))

 

Import von Benutzern die Mitglied der Gruppe idoit-read und idoit-write sind

Damit nur Benutzer die Mitglied der Gruppe idoit-read sind synchronisiert werden muss der Filter so aussehen:

Import von Benutzer die Mitglied der Gruppe idoit-read and idoit-write sind

 (&(objectClass=user)(&(memberOf=CN=idoit-read,CN=Users,DC=synetics,DC=test)(memberOf=CN=idoit-write,CN=Users,DC=synetics,DC=test)))

 

Import von Benutzern und Gruppen die unterhalb einer Nested Group sind

Ich habe eine Gruppe idoit in der die i-doit Gruppen idoit-read und idoit-write Mitglied sind. Diese beiden Gruppen sollen synchronisiert werden. Mit diesem Filter kann ich direkt die Gruppen und die Benutzer anlegen lassen.

Import von Benutzer die Mitglied der Gruppe idoit sind

 (memberOf:1.2.840.113556.1.4.1941:=CN=idoit,CN=Users,DC=synetics,DC=test)

 

So filtere ich Benutzer mit mehr als einer objectClass

Wenn sich die Benutzer beispielsweise dadurch unterscheiden, dass sie zwei objectClass-Attribute haben (z.B. Person und Benutzer), würde ich so den Filter aufbauen:

Personen und User

 (&(objectClass=person)(objectClass=user))

 

Welche weiteren Attribute über die ldap.ini importiert werden können

  • Der Beitrag ldap.ini Konfiguration sollte bekannt sein.
  • Es kann eine .ini Datei für den Import erstellt werden, mit dieser können weitere Attribute importiert werden.
  • Die Kategorieerweiterung sollte bereits Konfiguriert sein.
  • Wir verwenden den .ini Abschnitt “additional

Die Konfiguration der Kategorieerweiterung

ldap.ini Konfiguration

Hier noch mal als Tabelle

Feldname Attribut Mapping mit
Feldname 1 objectGUID Key: custom_1
Feldname 2 objectSid Key: custom_2
Feldname 3 initials Key: custom_3
Feldname 4 telephonenumber Key: custom_4
Feldname 5 title Key: custom_5
Feldname 6 pager Key: custom_6
Feldname 7 manager Key: custom_7
Feldname 8 info Key: custom_8

Importiere Zuweisungen zu Räumen aus dem AD/LDAP

In der ldap.ini können feste Zuweisungen von Benutzern zu Räumen eingetragen werden.
Die Benutzer werden dann dem zugewiesenem Raum als Kontakt zugewiesen.
(Die Räume müssen vorher in i-doit existieren!)

 rooms["Raum A"]=["MichaelO","migel"]

 

So importiere ich Attribute aus dem LDAP

Ich möchte weitere LDAP Attribute zu Benutzern importieren und habe schon die Kategorieerweiterung Konfiguriert.
Nun muss ich noch die Konfigurationsdatei des LDAP-Sync konfigurieren (ldap.ini).

Wenn man vorher schon mal einen LDAP-Sync für Benutzer durchgeführt hat, findet man im ldap Log einen Eintrag wie diesen

 Available attributes for this user:
objectclass,
cn,
sn,
c,
l,
st,
title,
description,
postalcode,
postofficebox,
physicaldeliveryofficename,
telephonenumber,
facsimiletelephonenumber,
givenname,
initials,
distinguishedname,
instancetype,
whencreated,
whenchanged,
displayname,
usncreated,
info,
memberof,
usnchanged,
co,
department,
company,
streetaddress,
directreports,
wwwhomepage,
name,
objectguid,
useraccountcontrol,
badpwdcount,
codepage,
countrycode,
badpasswordtime,
lastlogoff,
lastlogon,
pwdlastset,
primarygroupid,
userparameters,
objectsid,
admincount,
accountexpires,
logoncount,
samaccountname,
samaccounttype,
userprincipalname,
lockouttime,
ipphone,
objectcategory,
dscorepropagationdata,
lastlogontimestamp,
mail,
homephone,
mobile,
pager,
dn

 

Hieraus kann ich mir die Attribute suchen die ich zusätzlich Synchronisieren möchte.
Welche Attribute zu welchem Feld gehören kann man über Google finden oder z.B. hier SelfADSI externer Link.

Ich nehme mir als Beispiel folgende Attribute heraus und füge Sie in die ldap.ini ein:

 ;Standardfelder die bereits in den Stammdaten von Personen vorhanden sind
attributes[department]=department
attributes[phone_company]=telephonenumber
attributes[phone_home]=homephone
attributes[phone_mobile]=mobile
attributes[fax]=facsimileTelephoneNumber
attributes[description]=info
attributes[personnel_number]=initials
attributes[organization]=company
attributes[location]=physicalDeliveryOfficeName
attributes[street]=streetAddress
attributes[city]=l
attributes[zip_code]=postalCode
attributes[function]=title
attributes[service_designation]=title
attributes[pager]=pager
;Kategorieerweiterung nur für Personen
attributes[custom_1]=objectSid
attributes[custom_2]=sn
attributes[custom_3]=homePhone
attributes[custom_4]=mobile
attributes[custom_5]=info
attributes[custom_6]=manager
attributes[custom_7]=company
attributes[custom_8]=objectGUID

 

Wie man hier sieht habe ich z.B. das Stammdaten Attribut department mit dem LDAP Attribute department gemapped.
Zusätzlich habe ich die Kategorieerweiterung verwendet. Der Aufbau für z.B.
attributes[custom_1]=objectSid
wäre wie folgt:

attributes sagt dem handler er soll das i-doit Attribut [custom_1] mit dem LDAP Attribut objectSid synchronisieren.

Nachdem die Benutzer synchronisiert wurden finde ich folgende Stammdaten vor:

Stammdaten nach dem Sync


Weitere Optionen

autoReactivateUsers

Um einen sauberen Start zu haben, setzt diese Einstellung automatisch alle Benutzer vor der Synchronisierung auf den Status normal.

Dies ist hilfreich, falls Benutzer versehentlich vorher archiviert oder gelöscht wurden.
Beachten Sie, dass dies nur mit NDS & OpenLDAP funktioniert, da es in Active Directory immer aktiviert ist!

Wir sollten uns bewusst sein, dass es mit NDS oder OpenLDAP derzeit nicht möglich ist, gelöschte Benutzer zu identifizieren, um sie später zu archivieren. Benutzer sind dann immer aktiviert!

 autoReactivateUsers=false

 

ignoreUsersWithAttributes

Deaktiviere die Synchronisierung für Benutzer mit Attributen, die gegen ignoreFunction geprüft wurden.

Diese Funktion hilft, eine Synchronisation unerwünschter Verzeichnisobjekte zu verhindern.
Der Benutzer wird nicht synchronisiert, wenn ignoreFunction für ALLE ausgewählten Attribute fehlschlägt.

Standardmäßig steht hier ignoreUsersWithAttributes=[] somit wird nichts ignoriert.

Wir möchten nur Benutzer importieren bei denen die Attribute samaccountname, sn, givenname und mail nicht leer sind.
Somit müsste die Konfiguration für ignoreUsersWithAttributes so aussehen:

 ignoreUsersWithAttributes[] = "samaccountname"
ignoreUsersWithAttributes[] = "sn"
ignoreUsersWithAttributes[] = "givenname"
ignoreUsersWithAttributes[] = "mail"

 

ignoreFunction

Ist die Prüffunktion zum Ignorieren von Benutzern (siehe ‘ignoreUsersWithAttributes’)

Dies kann ein beliebiger Funktionsname sein, der über call_user_func oder die definierten Funktionen aufrufbar ist.

 definierte functions:
empty
!empty
isset
!isset
Beispiel: empty würde als empty($value) ausgeführt werden

 

Wir prüfen auf leere Attribute mit

 ignoreFunction=empty

 

Synchronisiere leere Attribute

Diese Option entscheidet, ob geleerte Attribute aus dem AD mit i-doit synchronisiert werden sollen oder nicht.

 syncEmptyAttributes=true

 

Die komplette ldap.ini

Nun fügen wir alle Teile zusammen und erstellen unsere ldap.ini
Der erste Teil der ldap.ini wird von Verwendung von Konfigurationsdateien für Console Commands bezogen.

 [commandArguments]
[commandOptions]
user=admin
password=pass
tenantId=1
[additional]
;Import rooms from ldap
import_rooms=true
;Automatically assign this company to every ldap user
defaultCompany='i-doit'
;What to do with deleted users - archive, delete, purge
deletedUsersBehaviour=archive
;What to do with disabled users - archive, delete, disable_login
disabledUsersBehaviour=disable_login
;Attach users to Rooms statically
rooms["Raum A"]=["MichaelO","migel"]
;LDAP Attributes are individual. This default configuration is prepared for Active Directory:
attributes[department]=department
attributes[phone_company]=telephonenumber
attributes[phone_home]=homephone
attributes[phone_mobile]=mobile
attributes[fax]=facsimileTelephoneNumber
attributes[description]=info
attributes[personnel_number]=initials
attributes[organization]=company
attributes[location]=physicalDeliveryOfficeName
attributes[street]=streetAddress
attributes[city]=l
attributes[zip_code]=postalCode
attributes[function]=title
attributes[service_designation]=title
attributes[pager]=pager
;Category extension for persons
attributes[custom_1]=objectSid
attributes[custom_2]=sn
attributes[custom_3]=homePhone
attributes[custom_4]=mobile
attributes[custom_5]=info
attributes[custom_6]=manager
attributes[custom_7]=company
attributes[custom_8]=objectGUID
;Automatically sets all users to status normal NDS and OpenLDAP
autoReactivateUsers=false
;Disable sync for users with Attributes checked against 'ignoreFunction'
ignoreUsersWithAttributes=[]
;The check function used for ignoring users (see 'ignoreUsersWithAttributes') empty - !empty - isset - !isset
ignoreFunction=empty
syncEmptyAttributes=true