Ein Kerberos-Authentifizierungsmodul für AEM

Wozu ein Kerberos Authentifizierungsmodul?

Unsere Kunden fordern immer häufiger, dass sich ihre Mitarbeiter per Single Sign-On an die AEM-Plattform anmelden können. Das betrifft vor allen Dingen die Anmeldung an die Autorenumgebung, aber auch das Login für ein Intranet, welches mit AEM umgesetzt wurde. Die Daten aller Mitarbeiter liegen dabei auf einem LDAP-Server, häufig einem Active Directory (AD), vor. Die Mitarbeiter sollen sich nur einmal im Firmennetz einloggen müssen. Rufen Sie in ihrem Browser die AEM-Umgebung auf, so sollen sie automatisch mit ihrem LDAP-Useraccount angemeldet werden. Damit diese automatische Anmeldung mit hoher Sicherheit erfolgen kann, wird in vielen Firmennetzwerken der Authentifizierungsdienst Kerberos genutzt.

Um dem Kundenwunsch nach einem Single Sign-On über Kerberos nachzukommen, haben wir bisher eine Kerberos-Authentifizierung über ein entsprechendes Apache Webserver-Modul umgesetzt. Dieser Umweg war erforderlich, da AEM keine eigene Möglichkeit zur Kerberos-Authentifizierung mitbringt.

Das Modul wurde auf dem Apache Webserver installiert, der auch den AEM Dispatcher Cache betreibt. Das Kerberos-Modul vollzieht die Authentifizierung und reicht den User an die AEM-Instanz weiter (üblicherweise in Form eines HTTP-Requestheaders). Der AEM-Server führt danach, sofern er für das Single Sign-On konfiguriert wurde, automatisch die AEM-Anmeldung durch.

Dabei ergeben sich aber auch Nachteile:

  • Das Apache-Modul muss häufig eigens für das Betriebssystem des Kundenservers kompiliert werden.
  • Einer AEM-Autoreninstanz muss für die Authentifizierung ein Apache Webserver vorgeschaltet werden, auch wenn evtl. kein Dispatcher Cache gewünscht ist.

Aus diesem Grunde haben wir ein Kerberos-Authentifizierungsmodul für AEM entwickelt. In Verbindung mit den Mechanismen, die AEM bereits mitbringt (Single Sign-On und LDAP-Datensynchronisation) bietet dieses Modul folgende Features:

  • Eine sichere Authentifizierung mit Hilfe von Kerberos
  • Ein automatisches Single Sign-On am AEM Server
  • Eine Synchronisation der AEM-Userdaten mit dem Active Directory

Was ist Kerberos?

Kerberos ist ein verteilter Authentifizierungsdienst für offene und unsichere Computernetze. Er wurde Ende der siebziger Jahre im Massachusetts Institute of Technology (MIT) entwickelt. Der Name Kerberos kommt aus der griechischen Mythologie: Der dreiköpfige Höllenhund Kerberos bewachte den Eingang zum Hades, der Unterwelt.

Damit soll auf die drei Komponenten angespielt werden, die bei der Kerberos-Authentifizierung beteiligt sind:

  • Der Client. Dieser möchte einen Dienst nutzen und muss sich hierfür authentifizieren.
  • Der Server, auf dem der Dienst betrieben wird, den der Client nutzen will (ein Fileservice, ein Mailserver, eine Web-Applikation wie z.B. AEM, etc.).
  • Das Kerberos Key Distribution Center (KDC).

Das Key Distribution Center (KDC) ist Bestandteil eines Windows-Servers, der als Domain-Controller für eine Windows-Domäne eingerichtet wurde. Das KDC greift auf das Active Directory zu, um Userdaten zu prüfen und zu verifizieren. Das KDC ist die zentrale Komponente bei der Kerberos-Authentifizierung. Alle Nutzer, die sich für einen Dienst authentifizieren möchten, müssen hierfür vom KDC sogenannte Tickets anfordern:

  • Ticket Granting Tickets (TGT), die den Nutzer dazu berechtigen, Service-Tickets zu erhalten.
  • Ticket Granting Service (TGS), auch Service-Tickets genannt, die der Nutzer benötigt, um sich am Service anzumelden.

Diese Skizze zeigt den Ablauf einer Kerberos-Authentifizierung:

kerbauth-ablauf

 

Voraussetzung für die Authentifizierung ist, dass der Nutzer bereits ein Ticket Granting Ticket (TGT) erhalten hat. Dies geschieht üblicherweise bei der Anmeldung an das Firmennetzwerk.

  1. Der User ruft zum ersten Mal die AEM-Instanz in seinem Browser auf.
  2. Falls er noch kein Service-Ticket besitzt, antwortet der AEM-Server mit einen Response (Status 401 = Unauthorized). Im Response-Header „WWW-Authenticate“ ist angegeben, wie die Authentifizierung durchgeführt werden soll. („Negotiate“)
  3. Durch diesen Response wird der Browser veranlasst, beim KDC ein Service-Ticket anzufordern.
  4. Das KDC prüft anhand des Ticket Requests, ob der User für den Dienst ein Service-Ticket erhalten darf. In diesem Request wird das Ticket Granting Ticket des Users übermittelt. Bei erfolgreicher Prüfung wird das Service-Ticket ausgeliefert.
  5. Der Clientbrowser wiederholt den Aufruf der AEM-Instanz. Dabei wird das Service-Ticket im Request-Header mitgeschickt. Das AEM-Kerberos-Authentifizierungsmodul führt nach Prüfung des Tickets die automatische Anmeldung des Users aus.
  6. Die gewünschte Seite wird an den Browser ausgeliefert.

Wie wurde das AEM-Kerberos-Authentifizierungsmodul umgesetzt?

AEM bietet die Möglichkeit, die bereits vorhandenen Authentifizierungsmechanismen zu erweitern. Hierzu muss ein Authenticationhandler (Interface org.apache.sling.auth.core.spi.AuthenticationHandler) implementiert werden. Ein Authenticationhandler ist ein Service, der über die OSGI-Konsole des AEM-Servers konfiguriert werden kann.

Der von uns entwickelte AEM-Kerberos-Authenticationhandler leistet folgendes:

  • Das übermittelte Kerberos-Serviceticket wird entschlüsselt und ausgewertet.
  • Bei nicht vorhandenem Ticket wird ein 401-Response zurückgegeben.
  • Der Nutzer wird automatisch eingeloggt und kann sofort mit der Arbeit beginnen.
  • Ist der User nicht zur Nutzung des AEM-Servers berechtigt, wird er bei entsprechender Konfiguration auf eine Fehlerseite weitergeleitet.
  • Ist der Nutzer noch nicht in der AEM-Userverwaltung vorhanden, so werden ggf. die Userdaten aus dem Active Directory importiert.

Durch Konfiguration und einige vorbereitende administrative Maßnahmen kann erreicht werden, dass auch die Gruppenzugehörigkeit des Users aus dem Active Directory importiert wird. So wird ein neuer User gleich mit seinen korrekten Berechtigungen (z.B. Redakteur, Chefredakteur etc.) auf der AEM-Instanz angelegt.

Wie wird der AEM-Kerberos-Authenticationhandler auf dem Server installiert?

Der Authenticationhandler kann als OSGI-Bundle über die OSGI-Konsole aber auch als CRX-Package installiert werden.

Nach der Installation wird die Konfiguration über die OSGI-Konsole vorgenommen:

osgi-config-new

Für welche AEM-Versionen kann der AEM-Kerberos-Authentifizierungshandler genutzt werden?

Der Authenticationhandler existiert zur Zeit in zwei Ausprägungen:

  • Der Kerberos-Authenticationhandler für AEM 5.6.
  • Der Kerberos-OAK-Authenticationhandler für AEM 6.

Zusammenfassung

Der von uns entwickelte AEM-Kerberos-Authenticationhandler ermöglicht eine einfache Anbindung des AEM-Systems an die zentrale Nutzerverwaltung (Active Directory) und die Security Infrastruktur (Kerberos) unserer Kunden. Er bildet damit einen Baustein für die Integration des AEM-CMS in die Systemlandschaft der Kunden-IT. Diese Integration wird, wie wir in unseren Projekte immer wieder feststellen, zunehmend wichtiger.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>