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.