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:

  1. Überprüfen Sie die Ausgabe der Systeminformationen. Wenn die angezeigten Daten falsch sind, ist eine Funktion nicht möglich.
  2. Achten Sie auf Fehler, die in den Logdateien des Relution Servers.
  3. 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!
  4. 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.
  5. Überprüfen Sie die Protokolldateien des Key Distribution Center oder der Ereignisanzeige des des Domänencontrollers, siehe unten.
  6. 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