Single Sign-On für ConSol CM mittels Kerberos (in einer Windows-Domäne)

Kurze Einführung in Kerberos

Kerberos ist ein Netzwerkprotokoll, das zur Authentifizierung eines Benutzers oder eines Systems verwendet wird, um zu überprüfen, ob der Benutzer bzw. das System die Identität hat, die es vorgibt zu haben. Der Authentifizierungsmechanismus basiert auf sogenannten Tickets. Wenn ein Benutzer oder System von einem Kerberos-System authentifiziert wurde, können andere Systeme, z. B. der ConSol CM-Server, dieser Authentifizierung vertrauen und dem Benutzer bzw. System Zugriff auf die eigenen Ressourcen gewähren. Einer der Vorteile der Verwendung von Kerberos ist, dass keine Passwörter (verschlüsselt oder im Klartext) über das Netzwerk gesendet werden. Es werden nur Informationen, die mit dem Passwort verschlüsselt wurden, gesendet. Sobald er authentifiziert ist, hat ein Client Zugriff auf alle Ressourcen innerhalb der Kerberos-Domäne (Realm), ohne sich erneut anmelden zu müssen (Single Single Sign-On, SSO).

Die aktuelle Version von Kerberos ist V5, sie wurde zuerst 1993 entwickelt. Wenn Sie sich genauer in das Thema einarbeiten möchten, können Sie RFC 1510 (initialer RFC) oder RFC 4120 (V5) lesen.

Folgende Komponenten sind in einer Kerberos-Infrastruktur wichtig:

Das Key Distribution Center, das zwei aktive Komponenten enthält:

Kurze Einführung in ConSol CM mit Kerberos in einer Windows-Domäne

Die Single Sign-On-Funktion ermöglicht es, die Benutzer automatisch in ConSol CM zu authentifizieren, z. B. mit ihren Windows-Anmeldeinformationen.

Diese Authentifizierungsmethode ...

Die Single-Sign-On-Funktion basiert auf dem Protokoll Kerberos V5, das in Windows Active Directory integriert ist.

Der ConSol CM-Server fungiert als Nicht-Windows-Kerberos-Dienst und kann auf einem beliebigen Betriebssystem / Application Server installiert werden.

Der ConSol CM-Server ist Teil einer Windows-Domäne, in der das Key Distribution Center der Domänen-Controller ist, und in der Active Directory ausgeführt wird, um die Informationen zur Benutzerauthentifizierung zu speichern.

Die folgende Abbildung zeigt eine (vereinfachte) Übersicht über die Schritte, die erforderlich sind, um eine gültige Client/Server-Session für einen ConSol CM-Client und den entsprechenden ConSol CM-Server bereitzustellen. Die Erklärungen in diesen Abschnitten führen Sie durch den gesamten Konfigurationsprozess, der notwendig ist, um ConSol CM mit Kerberos-Authentifizierung zu betreiben.

Abbildung 442: Kerberos-Authentifizierung in einer Windows-Domäne für den Zugang von ConSol CM

Schritte des Authentifizierungsprozesses

Schritt 1: Senden des Kontonamens, Anfordern eines Ticket Granting Tickets (TGT) und Sitzungsschlüssels

Der Benutzer meldet sich an seinem PC/Laptop mit dem Benutzernamen und Passwort an. Der PC/Laptop sendet eine Nachricht an den Authentifizierungsserver und fordert ein Ticket Granting Ticket (TGT) an.

Sofern die Präauthentifizierung aktiviert wurde, wird ein Zeitstempel mit dem Hash des Benutzerpassworts als Verschlüsselungsschlüssel verschlüsselt. Wenn der Authentifizierungsserver eine gültige Zeit erkennt, wenn er den Zeitstempel mit dem (in Active Directory gespeicherten) Hash des Benutzerpassworts entschlüsselt, weiß er, dass die Anforderung keine Erneuerung einer vorherigen Anforderung ist.

In diesem Beispiel ist die Präauthentifizierung deaktiviert.

Schritt 2: Überprüfen der Rechte für das Konto, Angeben des Passworts für das Konto

Der Autorisierungsserver überprüft die Zugriffsrechte des Benutzers in Active Directory und AD stellt das Passwort des Benutzers für Schritt 3 zur Verfügung.

Schritt 3: Zustellen eines Ticket Granting Tickets (TGT) und Sitzungsschlüssels (Nachricht mit dem Client-Passwort verschlüsselt)

Der Authentication Service erstellt ein Ticket Granting Ticket (TGT) und einen Sitzungsschlüssel. Diese werden in einer Nachricht an den Client gesendet und sind mit einem aus dem Benutzerpasswort abgeleiteten Schlüssel verschlüsselt.

Der PC/Laptop fragt den Benutzer nach einem Passwort und verwendet dieses Passwort, um die eingehende Nachricht zu entschlüsseln. Wenn die Entschlüsselung erfolgreich ist, kann der Benutzer mit dem TGT ein Service Ticket anfordern.

Schritt 3a. Das TGT wird während seiner Gültigkeitsdauer für den Benutzer gespeichert und kann während dieses Zeitraums für alle Anforderungen von Service Tickets verwendet werden.

Schritt 4: Anfordern eines Service Tickets für CM

Wenn ein Benutzer Zugang zu einem Dienst haben möchte, d. h. wenn sich ein Bearbeiter in ConSol CM anmelden möchte, sendet die Client-Applikation seiner Workstation (ConSol CM Web Client) eine Anforderung an den Ticket Granting Service, die den SPN (Service Principal Name, Dienstprinzipalname) des angefragten Dienstes, den Client-Namen, den Realm-/Domänennamen und einen Zeitstempel (mit dem Sitzungsschlüssel verschlüsselter Name und Zeitstempel) enthält. Der Benutzer weist sich durch Senden des in Schritt 3 erhaltenen Authentikators (TGT) aus.

Schritt 5: Zustellen eines Service Tickets für CM (= Ticket und Sitzungsschlüssel)

Der Ticket Granting Service entschlüsselt das Ticket und den Authentifikator, überprüft die Anforderung und erstellt ein Service Ticket für den angefragten Dienst (SPN = ConSol CM). Das Service Ticket enthält den Namen des Benutzers (Bearbeiters). Es enthält auch den Realm-/Domänennamen und die Gültigkeitsdauer des Service Tickets. Das Service Ticket wird mit dem geheimen Schlüssel des Dienstes (CM) verschlüsselt. Der Ticket Granting Service sendet das Service Ticket an den Benutzer.

Schritt 5a. Das Service Ticket wird während seiner Gültigkeitsdauer für den Benutzer gespeichert und kann während dieses Zeitraums für alle Anforderungen an den SPN verwendet werden.

Schritt 6: Vorlegen eines Service Tickets für CM (= Ticket und Sitzungsschlüssel)

Die Client-Applikation (CM Web Client) sendet jetzt eine Dienstanforderung, die das in Schritt 5 erhaltenen Ticket und einen Authentifikator enthält, an den CM-Server. Der Dienst (CM-Server) authentifiziert die Anforderung durch Entschlüsseln des Sitzungsschlüssels. Der CM-Server überprüft, dass das Service Ticket und der Authentifikator übereinstimmen und gewährt dann Zugang zum Dienst (ConSol CM-Applikation).

Schritt 7: Öffnen der Client/Server-Session

Die Client/Server-Session läuft.

Verschlüsselung im Prozess

Normalerweise wird Kerberos mit symmetrischer Verschlüsselung ausgeführt (d. h. derselbe Schlüssel wird zum Verschlüsseln und zum Entschlüsseln der Nachricht verwendet). In Kerberos basiert die Verschlüsselung auf dem Passwort des Benutzers. Optional kann in einer Kerberos-Umgebung Kryptographie mit öffentlichen Schlüsseln eingesetzt werden.

Microsoft Windows verwendet Kerberos als Standardauthentifizierungsmethode mit RC4 für die Verschlüsselung und HMAC (Hash-based Message Authentication Code).

Kerberos-Terminologie

Kerberos-Prinzipal

Ein Kerberos-Prinzipal ist eine eindeutige Identität, der Kerberos Tickets zuweisen kann. Dies kann ein Benutzerkonto einer Person oder eines Systems sein. Kerberos-Prinzipale bestehen aus mehreren Komponenten. Die Komponenten sind durch ein Trennzeichen voneinander getrennt, normalerweise "/". Die letzte Komponente ist der Realm/Domäne, der vom Rest des Prinzipals durch das Realm-/Domänen-Trennzeichen, normalerweise "@", getrennt ist. Wenn der Kerberos-Prinzipal keinen Realm/Domäne enthält, wird angenommen, dass der Prinzipal zum Standard-Realm/-Domäne für die aktuelle Umgebung gehört.

Normalerweise besteht ein Kerberos-Prinzipal aus drei Teilen: Primary, Instanz und Realm/Domäne. Das Format eines typischen Kerberos V5-Prinzipals ist primary/instanz@REALM.

Keytab-Datei

Eine keytab-Datei ist eine Datei, die Paare von Kerberos-Prinzipalen und die entsprechenden verschlüsselten Schlüssel (die aus dem Kerberos-Passwort abgeleitet sind) enthält. Wenn ein Passwort geändert wird, müssen Sie die keytab-Datei neu bauen. Im Kontext von ConSol CM tritt dies ein, wenn das Passwort des Systembenutzers (in unserem Beispiel tomcat) geändert wurde, nicht wenn ein CM-Bearbeiter sein Passwort geändert hat.

Konfiguration von Single Sign-On mit Kerberos für ConSol CM

Anforderungen

Für auf Kerberos basierendes Single Single Sign-On in ConSol CM benötigen Sie:

Da in einer Kerberos-Umgebung Zeitstempel verwendet werden, um die Gültigkeitsdauer der Tickets zu berechnen und zu überprüfen, ist es unbedingt notwendig, dass alle Komponenten mit der gleichen Systemzeit arbeiten! Es kann zum Beispiel ein auf NTP basierender Zeitserver/-dienst verwendet werden. (Einige Win DCs lassen maximal eine Differenz von fünf Minuten zu.)

Einrichten des Systems

Grundprinzip und erforderliche Schritte

Um als CM-Bearbeiter mit SSO arbeiten zu können, muss der entsprechende CM-Server zu einer Windows-Domäne gehören. Der Domänen-Controller fungiert als Kerberos Key Distribution Center (KDC) und die Benutzer-/Kontonamen werden in Active Directory verwaltet. Deshalb müssen Sie

ConSol CM muss als Kerberos-Dienst registriert sein, sodass Kerberos Service Tickets für Benutzer, die mit CM arbeiten möchten, erstellt werden können. Deshalb muss CM bei Kerberos registriert sein. Da CM unter einem bestimmten Systembenutzer ausgeführt wird (in unserem Beispiel tomcat), muss dieser Systembenutzer für den entsprechenden Rechner registriert sein. Deshalb müssen Sie

Da nicht der Systembenutzer (tomcat), sondern die CM-Bearbeiter mit dem CM arbeiten werden,

Auf dem CM-Rechner muss der Application Server so konfiguriert werden, dass Kerberos verwendet werden kann, und CM weiß, wo die keytab-Datei mit dem Systembenutzer und Prinzipalnamen zu finden ist, um Kerberos-Verschlüsselung und -Kommunikation einzusetzen. Deshalb müssen Sie

Für die Benutzer, die SSO mit Kerberos und CM verwenden möchten, muss ein CM-Bearbeitername dem Kerberos-Prinzipalnamen zugewiesen werden. Deshalb müssen Sie

Auf dem Domänen-Controller durchzuführende Schritte

Der erste Schritt ist die Konfiguration des Domänen-Controllers, damit dieser den ConSol CM-Server kennt, d. h. die Integration des CM-Servers in der Windows-Domäne. In unserem Beispiel heißt der Domänen-Controller mywin2003srv und die Domäne ist MYSSODOMAIN.COM.

Registrieren des ConSol CM-Serverrechners

Zuerst muss der ConSol CM-Serverrechner im Active Directory des Domänen-Controllers registriert werden. In unserem Beispiel ist der Domänen-Controller der Computer MyComputer.

Der Radio-Button Computer bei Delegierungen aller Dienste vertrauen (nur Kerberos) muss aktiviert sein!

führen Sie folgenden Befehl aus: dsamsc, machines

Abbildung 443: Registrieren des ConSol CM-Serverrechners

Registrieren des ConSol CM-Serverbenutzers

Als Zweites muss der Benutzer, unter dem der ConSol CM-Serverprozess ausgeführt wird, in Active Directory (als Key Distribution Center fungierend) erstellt und registriert werden, in unserem Beispiel der Benutzer tomcat.

Folgende Kontooptionen müssen aktiviert sein:

Führen Sie folgenden Befehl aus: dsamsc, users

Abbildung 444: Registrieren des ConSol CM-Serverbenutzers

Stellen Sie sicher, dass der Prozess des CM-Application-Servers (z. B. JBoss) unter dem angegebenen Benutzer auf dem CM-Rechner läuft.

Erzeugen der keytab-Datei

Auf dem Domänen-Controller wird der ConSol CM-Server als neuer (nicht-Windows) Kerberos-Dienst erstellt und eine Kerberos-keytab-Datei erzeugt. Diese Datei wird später auf dem ConSol CM-Serverrechner benötigt. Die keytab-Datei enthält den gemeinsamen geheimen Schlüssel des Dienstes (SPN, Service Principal Name).

Verwenden Sie folgenden ktpass-Befehl:

C:\Program Files\Support Tools>ktpass /out tomcat.keytab /ptype KRB5_NT_PRINCIPAL /princ HTTP/MyComputer.MySSODomain.com@MYSSODOMAIN.COM /pass consol.123 /mapuser tomcat /crypto rc4-hmac-nt

Wenn ktpass nicht verfügbar ist, müssen die Windows Server 2003 Support Tools installiert werden. Diese sind hier verfügbar.

Erklärung des ktpass-Befehls

/out tomcat.keytab

=> Verwendet tomcat.keytab als Ausgabedatei.

/ptype KRB5_NT_PRINCIPAL

=> Gibt den Prinzipaltyp an.

/princ HTTP/MyComputer.MySSODomain.com@MYSSODOMAIN.COM

=> Gibt den Kerberos-Prinzipalnamen in der Form host/computer.<domäne>@<realm> an. Siehe Benutzeranmeldename in der Konfiguration (obige Abbildungen).

/pass consol.123

=> Setzt das Passwort für den Benutzer princ, der mit /princ angegeben wird

/mapuser tomcat

=> Ordnet den Namen des Kerberos-Prinzipals (Parameter /princ) dem angegebenen Domänenkonto zu.

/crypto rc4-hmac-nt

=> Gibt die Schlüssel an, die in der keytab-Datei erzeugt wurden:

Auf dem ConSol CM-Server durchzuführende Schritte

Führen Sie den Application Server (z. B. JBoss) unter dem Systembenutzer aus, der in der Windows-Domäne registriert ist (in unserem Beispiel tomcat).

Installieren Sie ConSol CM wie gewohnt und aktivieren und konfigurieren Sie Kerberos wie in den nächsten Schritten beschrieben.

Aktivieren von Kerberos in ConSol CM

Wenn Sie eine Ersteinrichtung vornehmen, können Sie entscheiden, ob Kerberos aktiviert sein soll. Beachten Sie, dass dies nur ein Hinweis ist und zusätzliche Konfigurationen erforderlich sind (siehe nächste Schritte).

Wenn Ihr ConSol CM schon ohne Kerberos konfiguriert ist, können Sie Kerberos im Admin Tool aktivieren, indem Sie die System-Property cmas-core-security, kerberos.v5.enabled auf true setzen. Ein Neustart des Servers ist erforderlich, damit die neue Einstellung wirksam wird.

Konfigurieren von Kerberos

Ein ConSol CM-Server liest die Konfigurationsparameter aus der Datei cm6-kerberos.properties aus folgendem Klassenpfad: (Die einzelnen Cluster-Nodes brauchen möglicherweise eigene Konfigurationen, weshalb jeder Node seine Datei cm6-kerberos.properties aus dem Klassenpfad liest.)

Falls Sie ein Cluster aus mehr als einem ConSol CM-Server in Betrieb haben, muss jeder Server eine eigene Properties-Datei haben.

Die .properties-Datei sollte Folgendes enthalten:

# path to kerberos configuration

kerberos.config.location=C:\\conf\\krb5.ini

 

# one or more service principals (principal = path to keytab file)

HTTP/MyComputer.MySSODomain.com@MYSSODOMAIN.COM=C:\\conf\\tomcat.keytab

Code-Beispiel 75: cm6-kerberos.properties

[libdefaults]

default_realm = MYSSODOMAIN.COM

default_tkt_enctypes = rc4-hmac des-cbc-md5 des-cbc-crc des3-cbc-sha1

default_tgs_enctypes = rc4-hmac des-cbc-md5 des-cbc-crc des3-cbc-sha1

 

[realms]

MYSSODOMAIN.COM = {

kdc = mywin2003srv

admin_server = mywin2003srv:8888

}

 

[domain_realm]

.mywin2003srv = MYSSODOMAIN.COM

mywin2003srv = MYSSODOMAIN.COM

Code-Beispiel 76: krb5.ini

keytab-Datei

Kopieren Sie die keytab-Datei, die Sie auf dem Domänen-Controller erzeugt haben, an den in der Konfigurationsdatei cm6-kerberos.properties angegebenen Speicherort.

Sie müssen den ConSol CM-Serverprozess neu starten, damit diese Änderung wirksam wird.

Konfigurieren der CM-Bearbeiter für Kerberos

Wenn die System-Property cmas-core-security, kerberos.v5.enabled auf true gesetzt wurde, ist das Feld Kerberos Principal Name in den Bearbeiterdaten verfügbar.

Abbildung 445: ConSol CM Admin Tool - Kerberos Principal Name in den Bearbeiterdaten

Der Kerberos Principal Name ist ein Benutzername zusammen mit dem entsprechenden Realm-/Domänennamen, zum Beispiel SusanServiceDesk@consol.de. Damit können sich Benutzer mit dem Anmeldenamen SusanServiceDesk authentifizieren, die zu unterschiedlichen Kerberos-Realms gehören (SusanServiceDesk@consol.de und SusanServiceDesk@consol.pl sind zwei unterschiedliche Benutzer). Wenn das Feld Kerberos Principal Name für einen Bearbeiter leer ist, wird stattdessen der Benutzername (Login) verwendet. Wenn die Kerberos-Authentifizierung fehlschlägt, wird der reguläre Authentifizierungsmechanismus (DATABASE, LDAP) verwendet. In diesem Fall ist Single Sign-On nicht möglich und dem Bearbeiter wird die Anmeldeseite angezeigt.

Auf dem Client-Rechner durchzuführende Schritte

Internet Explorer

Internet Explorer muss so konfiguriert werden, dass die automatische Anmeldung aktiviert ist. Standardmäßig ist dies bei der Sicherheitseinstellung mittel bis niedrig, der Standardeinstellung für die Zone Lokales Intranet, erlaubt.

Es sind folgende Einstellungen für das Anmeldeverhalten verfügbar.

Abbildung 446: Anmeldekonfiguration von Internet Explorer

Einstellungen und resultierendes Verhalten:

Firefox

Bei Verwendung der Standardeinstellungen unterstützt Firefox Single Sign-On mit Kerberos nicht. Um Single Sign-On zu aktivieren, müssen Sie die URI des ConSol CM Web Clients in der Firefox-Konfiguration eintragen.

Führen Sie dazu folgende Schritte aus:

Sie können diese Property auch im Dateisystem setzen. Öffnen Sie dazu die Datei

C:\Benutzer\[BENUTZER]\AppData\Roaming\Mozilla\Firefox\Profiles\[XYZ].default\prefs.js

und fügen Sie folgende Zeile hinzu bzw. ersetzen Sie sie:

user_pref("network.automatic-ntlm-auth.trusted-uris", "http://mycm6server");

oder

user_pref("network.negotiate-auth.trusted-uris", "http://mycm6server");

Sie müssen Firefox nach dieser Änderung neu starten.

Verwendung des Systems

Single Sign-On aus der Benutzerperspektive

Ein Bearbeiter, der sich mit Single Sign-On in ConSol CM anmeldet, wird Folgendes bemerken:

Es ist trotzdem möglich, sich als anderer ConSol CM-Benutzer anzumelden. Klicken Sie dazu auf den Button zum Abmelden, wodurch Sie auf die Anmeldeseite weitergeleitet werden, oder rufen Sie explizit die URL ...../cm-client/login auf.

Single Sign-On in mehreren Domänen

Erstellen Sie für jede Domäne, in der Sie Single Sign-On aktivieren, eine neue Domäne/Benutzer und einen neuen Kerberos-Prinzipal und tragen Sie diese in die Datei cm6-kerberos.properties ein:

# path to kerberos configuration (think krb5.conf or krb5.ini)

kerberos.config.location=/etc/krb5.conf

 

# one or more service principals (principal = path to keytab file)

HTTP/MyServerMyDomain.com@MYDOMAIN.COM=/etc/krb5_mycompanycom.keytab

HTTP/MyServer.MyDEDomain@MYDOMAIN.DE=/etc/krb5_mycompanyde.keytab

Zuordnen des Kerberos-Benutzernamens zum Bearbeiternamen

Um auf Kerberos basierendes Single Sign-On verwenden zu können, muss der Kerberos-Prinzipal (d. h. der Anmeldename des Benutzers im Betriebssystem) mit dem Namen eines ConSol CM-Bearbeiters verknüpft werden.

Standardmäßig findet die Zuordnung auf einem der beiden folgenden Wege statt:

Wenn weitere Anpassungen erforderlich sind, lesen Sie bitte UsernameAdapter interface javadoc.

Starten und Stoppen der Kerberos-Authentifizierung

Die Kerberos-Authentifizierung kann im Admin Tool in der Navigationsgruppe Dienste -> Navigationselement CM-Services -> Kerberos v5 authentication provider, siehe Abschnitt CM-Services, gestartet bzw. gestoppt werden.