LDAP

Ein Lightweight Directory Access Protocol (LDAP) ist eine hierarchische Struktur von Benutzern, Gruppen und Organisationseinheiten, welche wiederum Container für Benutzer und Gruppen sind. Jedes Objekt hat einen eindeutigen Pfad im Verzeichnis, der auch als Distinguished Name (DN) bezeichnet wird.

Distinguished Name (DN)

Ein DN ist ein eindeutiger Pfad eines Objekts des LDAP Verzeichnisses. Es besteht aus einer kommaseparierten Sequenz aus relativen DNs, beginnend mit dem relativen DN der untersten Ebene (Objekt) bis hin zum Ursprung des Verzeichnisses (Domäne). Jeder relative Pfad wiederum wird durch ein Wertepaar mit Attribut=Wert definiert. Folgende Attribute sind dabei üblich:

String Bezeichnung
DC domainComponent
CN commonName
OU organizationalUnitName
O organizationName
STREET streetAddress
L localityName
ST stateOrProvinceName
C countryName
UID userid

Es gibt einige Sonderzeichen, die mit einem vorhergehenden Backslash (\) geschrieben oder mit Hex-Werten ersetzt werden müssen:

Sonderzeichen Beschreibung Ersatz
, comma 0x2C
+ plus sign 0x2B
" double quote 0x22
\ backslash 0x5C
< left angle bracket 0x3C
> right angle bracket 0x3E
; semicolon 0x3B
LF line feed 0x0A
CR carriage return 0x0D
= equals sign 0x3D
/ forwards slash 0x2F

Beispiele

Der Benutzer "Max Mustermann" innerhalb des Containers "Users" in der Domaine "example.local".

cn=Max Mustermann,ou=Users,dc=example,dc=local

Anbindung

Eine Anwendung ist in der Lage auf ein LDAP zuzugreifen, sodass die im LDAP existierenden Benutzer in die Anwendung importiert werden oder Authentifizierungen durchgeführt werden können. Hierfür müssen die entsprechenden LDAP Konfigurationen eingebunden werden.

Aliase

TopLogic liefert die LDAP-Anbindung als Konfigurationspaar ldapConf.xml und ldapConf.config.xml in webapp/WEB-INF/conf aus. ldapConf.xml definiert die Aliase %LDAP_...%, ldapConf.config.xml konfiguriert damit das SecurityDevice LdapSecurity. Eine Anwendung aktiviert die LDAP-Anbindung, indem sie ldapConf.xml in eine metaConf.txt einträgt, z.B. in der eines Deploy-Aspekts. Dadurch wird automatisch auch ldapConf.config.xml eingebunden.

Werte pro Installation

Jeder Alias liest seinen Wert aus der in der Tabelle genannten Java-Systemeigenschaft oder Umgebungsvariable (Syntax ${env:name:default}). So werden die Werte pro Installation gesetzt, ohne eine Konfigurationsdatei zu ändern, z.B. beim Start der JVM mit -Dldap_url=ldaps://ldap.example.com:636 oder als Umgebungsvariable ldap_url. Eine Systemeigenschaft hat Vorrang vor einer gleichnamigen Umgebungsvariable. Ist keines von beiden gesetzt, gilt der angegebene Default.

Systemeigenschaft/Umgebungsvariable Alias Bedeutung Default
ldap_url %LDAP_URL% URL des LDAP-Servers (Provider-URL). ldap://ldap.your.domain:389
ldap_principal %LDAP_PRINCIPAL% Benutzer, mit dem sich die Anwendung am LDAP anmeldet (Master-Principal). you@your.domain
ldap_credential %LDAP_CREDENTIAL% Passwort des Master-Principals, im Klartext oder mit dem Schlüssel der Anwendung verschlüsselt. your-password
ldap_base_dn %LDAP_BASE_DN% DN, unterhalb dessen Benutzer und Gruppen gesucht werden. DC=YourDC
ldap_filter %LDAP_FILTER% Filter für die Gruppenmitglieder. Ist keine Gruppe angegeben, bestimmt allein dieser Filter die Benutzereinträge. (objectClass=Person)
ldap_group_1 %LDAP_GROUP_1% DN der ersten Gruppe, deren Mitglieder Zugang erhalten. CN=YourCN,DC=YourDC
ldap_group_2 %LDAP_GROUP_2% DN einer zweiten Gruppe (optional). leer
ldap_group_3 %LDAP_GROUP_3% DN einer dritten Gruppe (optional). leer
ldap_allow_pwd_change %LDAP_ALLOW_PWD_CHANGE% Ob Benutzer ihr Passwort ändern dürfen. false
ldap_nested_groups %LDAP_NESTED_GROUPS% Ob verschachtelte Gruppen aufgelöst werden. false
ldap_mapping_all %LDAP_MAPPING_ALL% Attribut-Mapping für alle LDAP-Objekte. /WEB-INF/database/ldap/all-mapping.properties
ldap_mapping_person %LDAP_MAPPING_PERSON% Attribut-Mapping für Benutzer. /WEB-INF/database/ldap/person-mapping.properties
ldap_mapping_group %LDAP_MAPPING_GROUP% Attribut-Mapping für Gruppen. /WEB-INF/database/ldap/group-mapping.properties
ldap_mfa_requirement %LDAP_MFA_REQUIREMENT% Ob eine Zwei-Faktor-Authentifizierung optional oder required ist. optional

Das Passwort in ldap_credential darf im Klartext oder verschlüsselt angegeben werden. Alternativ zu Systemeigenschaften und Umgebungsvariablen kann eine Anwendung die Aliase auch in einer eigenen Konfigurationsdatei überschreiben, die in der metaConf.txt nach ldapConf.xml geladen wird.

Konfiguration

In ldapConf.config.xml wird die LDAP Anbindung konfiguriert, wobei auf die Aliase aus ldapConf.xml zurückgegriffen wird. Werden weitere Einstellungen benötigt, kann eine Anwendung diese Konfiguration in einer eigenen *.config.xml ergänzen. Wie das funktioniert ist in TLSecurityDeviceManager beschrieben.