22. Mai 2015 | 4 min lesezeit

WildFly mit Active Directory verheiraten

Verzeichnisdienste wie Active Directory (AD) und LDAP dienen der Benutzerverwaltung in Unternehmensnetzwerken. Der Vorteil einer zentralen Speicherung besteht vor allem darin, dass Benutzer und Gruppe an einer zentralen Stelle nur einmal geändert werden müssen. Soll der Zugriff auf eine Java Enterprise Anwendung über einen zentralen Verzeichnisdienst gesteuert werden, besteht die Möglichkeit diesen direkt in der Anwendung oder über den Applikationsserver anzusprechen. Letztere Variante bietet den Vorteil, dass die Anwendung die bestehende Sicherheitsfunktionalität des Applikationsserver nutzen kann – die Integration entsprechender Querschnittsfunktionalität in die Anwendung entfällt.

Neben der zentralen Verwaltung und Bereitstellung von Benutzerdaten fungiert ein Verzeichnisdienste wie Active Directory (AD) und LDAP oftmals als Authentifizierungs- und Autorisierungsserver für Zugriffskontrollen auf Betriebssystemebene (z.B. Windows-Login), für Server-Dienste (z.B. JIRA) und selbstentwickelte Anwendungen.

Damit der Zugriff auf eine Java Enterprise Anwendung über einen zentralen Verzeichnisdienst gesteuert werden kann, muss die Anbindung im ApplicationServer über eine SecurityDomain konfiguriert werden.

Die Anlage der Security Domain erfolgt über die WildFly Administrationskonsole. Im Bereich „Configuration“ findet sich unter dem Menüpunkt Security die Seite zur Verwaltung der Security Domains. Über den „Add“-Button wird der Dialog zur Anlage einer neuen Security Domain gestartet. Dieser erwartet einen eindeutigen Namen (in unserem Fall: ADAuth) und den gewünschten Cache Type (default). Nach der Bestätigung mit Hilfe des „Save“-Buttons steht die Security Domain zur Verfügung und kann für den Zugriff auf die Active Directory Instanz konfiguriert werden.

Über den Link „View“ wird die Konfiguration geöffnet, wo auf dem Tab „Authentication“ das Login Module festgelegt wird. WildFly stellt diverse LoginModule zur Verfügung (vgl. Security subsystem configuration) – bei Bedarf ist die Erweiterung durch eigene Module möglich.

Für die Kommunikation mit einer Active Directory Instanz stehen die Module Ldap und LdapExtended zur Auswahl. Der Unterschied zwischen beiden besteht im Handling der Rollen.

Das Ldap Modul durchsucht nur die „einfache“ Hierarchie, dabei werden Nested Groups nicht erkannt und können somit auch nicht als Rollen zugewiesen werden.

Das LdapExtended Modul hingegen nutzt die Möglichkeit die Hierarchie rekursiv zu durchsuchen und kann somit Nested Groups als Rollen dem Benutzer zuweisen. Da wir nicht auf die Möglichkeit verzichten wollen, erleichtert dies unsere Wahl.

Die Konfiguration des Login Moduls erfolgt über die Module Options, die als Key-Value-Paare angelegt werden. Zur Anbindung der Active Directory Instanz müssen folgende Werte gesetzt werden:

Schlüssel Wert
java.naming.provider.url ldap://<Server IP>:<Port>/
bindDN CN=<Benutzername>,OU=…,DC=…,DC=de
bindCredential Passwort des read-only Benutzers
baseCtxDN OU=…,DC=…,DC=de
rolesCtxDN OU=…,DC=…,DC=de
roleFilter (member={1})
roleAttributeID cn
baseFilter (sAMAccountName={0})

Damit ist die Einrichtung der Security Domain abgeschlossen. Diese kann nun einer Anwendung zugewiesen werden und ausgiebig getestet werden.
Die Zuweisung kann beispielhaft über die jboss-web.xml erfolgen:

Für die ersten Tests empfiehlt es sich das Log-Level des Security Moduls auf TRACE zu erhöhen, um die teils unklaren Fehlermeldungen bei der Anmeldung an die Active Directory Instanz besser analysieren zu können.
Hierzu wird der Menüpunkt „Logging“ im Subystem Core ausgewählt und anschließend der Tab „Log Categories“ selektiert.
Über den „Add“-Button wird die Kategorie org.jboss.security mit dem Log-Level TRACE hinzugefügt.

Nach erfolgreichen Tests bietet es sich an die Kategorie wieder zu entfernen oder das Log-Level zu reduzieren, um die Menge der protokollierten Informationen auf das nötigste zu reduzieren.


Keine Kommentare

Kontakt

OPEN KNOWLEDGE GmbH

Standort Oldenburg:
Poststraße 1, 26122 Oldenburg

Standort Essen:
II. Hagen 7, 45127 Essen