Kerberos
Einleitung
Verwendung des Relution Enterprise Servers in einer Kerberos Single-Sign-On Umgebung hat zwei Seiten. Die Middleware kann als Client und/oder Server an dieser Umgebung teilnehmen. Als Server kann Relution begrenzte Funktionen der bestehenden Infrastruktur mit Hilfe der LDAP-Konnektivität nutzen. Als Client stellt Relution eine Verbindung zu anderen Backend-Servern her. Im Folgenden wird die Konfiguration, die erforderlich ist, um als Client für andere Backends mit dem Relution Enterprise Connectors zu agieren, beschrieben. Für die LDAP-Einrichtung lesen Sie bitte LDAP-Anmeldeintegration →.
Beachten Sie, dass in Windows-Umgebungen normalerweise Kerberos als Teil
der Windows Integrated Authentication
verwendet wird. LDAP ist die
Technologie hinter einem Active Directory. Hier wird eine Active
Directory Domäne
auf einem Kerberos Realm
abgebildet. Die hier
beschriebene Konfiguration gilt jedoch genauso gut für Unix-basierte
SSO-Setups, bei denen ein Realm einfach nur ein Realm ist, oder auch für
heterogene Umgebungen.
Regeln für die Konfiguration
Die Bezeichnung des Relution Benutzers und des Kerberos Benutzers muss
identisch sein. Der Kerberos Benutzer m.meyer
auf dem Realm
(Domäne) kann zum Beispiel so MYORG\m.meyer
oder so m.meyer@MYORG
geschrieben werden.
- Realm/Domäne: In Relution, ist ein Realm, oder eine Domäne an eine Organisation gebunden. Für eine korrekte Einrichtung muss der eindeutige Name der Organisation mit dem Realm-Namen genau übereinstimmen. Außerdem wird empfohlen, eine Standardbenutzergruppe für diese Organisation einzurichten.
- Benutzernamen: Die Namen der Benutzer in Kerberos müssen mit den Namen übereinstimmen, die in Relution verwendet werden.
- Für den Realm muss das
Key Distribution Center
auffindbar sein:- Konfiguriertes KDC: Das KDC muss explizit in der Konfigurationsdatei angegeben werden.
- Discovered KDC: Das KDC kann alternativ auch über einen DNS Lookup gefunden werden.
Der Name des Dienstanbieters folgt den Konventionen von Microsoft’s Internet Information Services (IIS):
- Dienst: Der Relution Server fungiert als Webserver. Der Dienstname ist daher HTTP.
- Principal: Relution verwendet den Namen des Benutzers, unter dem die Software ausgeführt wird, als Pricipal. Falls dieser Name nicht zutreffend ist, wird stattdessen der Host-Name, der sich aus der Reverse-DNS-Suche ergibt, verwendet. Letzteres ist der Fall, wenn Relution als Windows-Dienst ausgeführt wird, für den kein explizites Benutzerkonto konfiguriert ist.
- SPN: Dies führt zum Beispiel zu einem endgültigen Dienstanbieternamen wie HTTP/relution, wenn er als Benutzer namens ‘Relution’ läuft, oder HTTP/myorg wenn er als Systemdienst läuft, der auf dem Rechner “myorg” gehostet wird.
Bei einer Benutzerangabe ist die Verwendung dieser Informationen notwendig:
- Zugangsdaten: Relution benötigt die Zugangsdaten des Dienstanbieters in Form einer Keytab-Datei.
- Weiterleitbar: Für den SPN wird ein Service-Ticket über die Ticket-to-Self (S4U2self) Kerberos-Protokoll-Erweiterung erworben. Das erworbene Ticket muss weiterleitbar sein.
- Delegation: Das weiterleitbare Ticket muss die Delegation über die Protokoll-Übergang (S4U2proxy) Kerberos-Protokoll-Erweiterung erlauben.
Kerberos 5
Relution verwendet die Java Runtime-Infrastruktur zur Implementierung der Kerberos Kommunikation auf niedriger Ebene. Aufgrund der vielen möglichen alternativen Setups und der umfangreichen Möglichkeit der Kerberos-Konfiguration, versucht Relution nicht, eine Installationsschnittstelle für Kerberos bereitzustellen, sondern verlässt sich auf die Java VM-Standardkonfiguration.
Konfigurationsdatei (krb5.conf/krb5.ini)
Je nach Betriebssystem und Benutzerkonto, das zur Ausführung von Relution verwendet wird, unterscheidet sich der Speicherort der Kerberos-Konfigurationsdatei. Der genaue Ort wird als “kbr5.conf” auf der Systeminformationsseite angezeigt. Normalerweise ist der Rechner, auf dem Relution läuft, Teil der Kerberos-Umgebung (auch bekannt als Windows-Domäne) und die Einstellung “Forwardable” (weiterleitbar) muss mindestens vorhanden sein:
[libdefaults]
forwardable = true
Andernfalls kann ein Standardbereich angegeben werden. Auch das folgende Beispiel gibt explizit ein KDC an:
[realms]
MYORG = {
kdc = kdc.myorg.local
}
[libdefaults]
forwardable = true
default_realm = MYORG
Beachten Sie, dass beim weg lassen des [Realms] Bereichs das KDC einen DNS Lookup ausführt.
Sobald die Konfigurationsdatei vorhanden ist, starten Sie den Relution Server neu und überprüfen Sie die bereitgestellten Informationen durch sorgfältiges Lesen der Einstellungen die als Teil der Systeminformationen angezeigt werden.
Eingeschränkte Delegation (krb5.keytab)
Für Impersonationen müssen die Anmeldeinformationen des Dienstes als keytab-Datei exportiert werden. Standardmäßig muss die Datei den Namen krb5.keytab haben und sich im Home-Ordner des Benutzers befinden. Zum Ermitteln des Home-Verzeichnis kann die Systeminformationsseite verwendet werden. In seltenen Fällen hat der Benutzer möglicherweise keinen Home-Ordner zugewiesen. In diesem Fall muss die keytab-Datei neben der zuvor erstellten Datei krb5.conf/krb5.ini abgelegt werden.
Der einfachste Weg, eine solche keytab-Datei zu erstellen, ist die Verwendung des Tools ktpass. Es erzeugt nicht nur die erforderliche Datei, sondern konfiguriert auch die SPN-zu Prinzipal-Zuordnung. Werfen Sie zunächst einen Blick auf die Systeminformationen, um herauszufinden, ob der SPN-Name entweder HTTP/Benutzername oder HTTP/Hostname ist (letzteres ist möglich wenn er als Dienst unter dem System- oder Netzwerkkonto läuft). Auf dem Domain-Controller müssen Sie anschließend folgenden Befehl ausführen. Passen Sie die Parameter an Ihre Umgebung an, wobei die Groß-/Kleinschreibung eine Rolle spielt:
prompt> ktpass -out krb5.keytab \
-princ HTTP/username_or_hostname@FULLY.QUALIFIED.REALM.OR.DOMAIN.NAME \
-crypto All \
-mapuser SIMPLE_REALM_OR_DOMAIN_NAME\username_or_hostname \
-pass SOME_PASSWORD_AT_YOUR_DISCRETION \
-ptype KRB5_NT_PRINCIPAL
Um die SPN-Zuordnung zu überprüfen, führen Sie den folgenden Befehl aus:
prompt> setspn -l username_or_hostname
Die resultierende Datei krb5.keytab muss sicher aufbewahrt und auf dem Computer, auf dem Relution Server läuft, in den Home-Ordner des Benutzers kopiert werden, der den Dienst ausführt.
Fehlersuche
Hier finden Sie einige Punkte zur Heransgehensweise im Fehlerfall:
- Überprüfen Sie die Ausgabe der Systeminformationen. Wenn die angezeigten Daten falsch sind, ist eine Funktion nicht möglich.
- Achten Sie auf Fehler, die in den Logdateien des Relution Servers.
- Fügen Sie ein debug=true in den Abschnitt libdefaults der Datei krb5.conf/krb5.ini ein. Stellen Sie sicher, dass Sie dies für produktiv genutzte Systeme wieder entfernen!
- Fügen Sie die Java VM-Eigenschaften -Dsun.security.krb5.debug=true -Dsun.security.spnego.debug=true in die Konfigurationsdatei für den Serverstart Datei hinzu.
- Überprüfen Sie die Protokolldateien des Key Distribution Center oder der Ereignisanzeige des des Domänencontrollers, siehe unten.
- Wenn alles andere fehlschlägt, kontaktieren Sie bitte M-Way Solutions für technische Unterstützung.
Um das Logging in einem Windows-Domänencontroller zu aktivieren, fügen Sie den folgenden Registry-Schlüssel hinzu oder aktualisieren Sie ihn (der Parameter ist standardmäßig nicht vorhanden):
Registry path
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters
value name: LogLevel
value type: REG_DWORD
value data: 0x1