Single Sign-On einrichten - Kerberos
Das Kerberos Key Distribution Center (KDC) ist eines der Protokolle, die von der Automation Engine für Single Sign-on unterstützt werden. Als Systemadministrator richten Sie Kerberos so ein, dass es mit Ihrem System verwendet wird.
Wichtig!
-
Zeitunterschiede von fünf bis zehn Minuten zwischen dem Automic Web Interface (Tomcat) und Ihrem Browser sind abhängig von den Einstellungen zulässig. Wenn der Zeitunterschied signifikant ist, erhalten Sie möglicherweise die Fehlermeldung, dass die Zeitabweichung bei der Anmeldung zu groß ist.
-
Das Automic Web Interface und der Java-Arbeitsprozess(JWP) benötigen Zugriff auf den KDC (z. B. Active Directory unter Windows). Es reicht nicht aus, Zugriff auf die Kommunikationsprozesse (CP) zu haben.
-
Für jeden Host, auf dem Tomcat für das Automic Web Interface ausgeführt wird, und für jeden Host, auf dem ein JWP ausgeführt wird, müssen mehrere Service-Benutzer im Active Directory erstellt werden.
Diese Seite beinhaltet Folgendes:
Kerberos in der Automation Engine und im Automic Web Interface konfigurieren
-
Installieren Sie die Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy auf Hosts, auf denen das AWI die Automation Engine (JWP) laufen.
Fügen Sie die JCE dem Tomcat-Ordner jre/lib/security hinzu. Sie können sie von Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy herunterladen.
Die Readme-Datei enthält die Installationsanweisungen. Wenn auf demselben Host mehrere Java-Installationen vorhanden sind, wird empfohlen, eine Richtliniendatei für alle Installationen einzurichten.
-
Konfigurieren Sie die Kerberos-Datei auf dem AWI-Server.
In allen anderen Fällen muss die Datei krb5.conf erstellt werden. Die Konfigurationsdatei befindet sich im gleichen Ordner wie die JCE: <java-home>/lib/security/krb5.conf.
Weitere Informationen zum Konfigurieren der Kerberos-Datei finden Sie unter https://docs.oracle.com/javase/8/docs/technotes/guides/security/jgss/tutorials/KerberosReq.html.
Beispiel
[libdefaults]
default_realm = DOMAIN.SAMPLE
default_tkt_enctypes = rc4-hmac
default_tgs_enctypes = rc4-hmac
permitted_enctypes = rc4-hmac
[domain_realm]
.domain.sample = DOMAIN.SAMPLE[realms]
DOMAIN.SAMPLE = {
kdc = servername.domain.sample
admin_server = servername.domain.sample
} -
Tomcat - Neustart.
-
Aktivieren Sie KDC in den UC_SYSTEM_SETTINGS. Weitere Informationen finden Sie unter KDC.
Nachdem Kerberos erfolgreich konfiguriert wurde, können Sie Single Sign-on in Ihrer AWI-Instanz aktivieren. Setzen Sie dazu die Eigenschaft sso.saml.enabled in der Datei configuration.properties auf true. Weitere Informationen finden Sie unter configuration.properties.
Konfigurieren von Kerberos im JWP
Als Systemadministrator generieren Sie die Keytab-Datei für jeden AWI-Host.
-
Erstellen Sie einen Servicebenutzer im Microsoft Active Directory für jeden Host, auf dem ein JWP läuft. Dieser Benutzer wird für die Authentifizierung zwischen JWP und dem Microsoft Active Directory verwendet. Das Benutzerpasswort sollte nicht ablaufen. Aktivieren Sie die Account-Option Dieser Account unterstützt Kerberos.
Weitere Informationen finden Sie unter Windows-Konfigurationen für den von Kerberos unterstützten Verschlüsselungstyp.
-
Erstellen eines "Service Principal Name" (SPN) auf dem Kerberos Administrationsserver.
Um Single Sign-On für Webanwendungen (z. B. AWI) zu implementieren, benötigen Sie eine Keytab-Datei mit HTTP als Service Principal Name.
Beispiel
HTTP/winhost01.domain.sample@DOMAIN.SAMPLE
In diesem Beispiel ist winhost01 der Host, auf dem das AWI (Tomcat) installiert ist.
Hinweise:
-
Möglicherweise möchten Sie SPNs für jeden AWI Host erstellen (ein SPN mit dem Hostnamen und einer mit dem voll qualifizierten Domänennamen). Achten Sie beim Erstellen von SPNs auf die Groß- und Kleinbuchschreibung. Andernfalls wird der Name möglicherweise nicht in der Kerberos-Datenbank gefunden.
-
Der Realm ist optional. Wenn er nicht angegeben ist, wird der Standardwert aus der Konfigurationsdatei krb5.conf verwendet. In Windows ist der Kerberos-Realmname der Domänenname (DNS-Suffix) in Großbuchstaben (z. B. DOMAIN.SAMPLE).
Weitere Informationen finden Sie unter detaillierte Beschreibung von Kerberos-Prinzipalen.
Die SPNs müssen dem zuvor angelegten KDC-Servicebenutzer zugeordnet sein.
Wenn Automation Engine auf mehr als einem Host läuft, müssen die oben beschriebenen Schritte für jeden der AE-Hosts durchgeführt werden. Jeder AE-Host muss seinen eigenen zugeordneten Servicebenutzer haben, und die SPNs müssen für jeden dieser Servicebenutzer angelegt werden. In Active Directory von Microsoft können Sie den Befehl setspn verwenden, um SPNs zu erstellen.
Beispiel
setspn -s AEServer01/winhost01.sample.host@DOMAIN.SAMPLE ServiceAccount01
setspn -s AEServer01/winhost01@DOMAIN.SAMPLE ServiceAccount01setspn -s AEServer02/winhost02.sample.host@DOMAIN.SAMPLE ServiceAccount02
setspn -s AEServer02/winhost02@DOMAIN.SAMPLE ServiceAccount02
-
-
Keytab-Datei auf dem AWI-Server generieren.
In Microsoft Active Directory können Sie mit dem Befehl ktpass eine Keytab-Datei erzeugen. Sie müssen den SPN, den KDC-Benutzer, das Passwort des KDC-Benutzers, Pfad/Dateiname der Keytab-Datei und den Parameter /mapuser angeben.
ktpass /princ HTTP/awihost.domain.sample@DOMAIN.SAMPLE /mapuser ServiceAccount01@DOMAIN.SAMPLE /pass ServiceAccountPass /mapop set /crypto all /out c:\temp\AE.keytab -ptype KRB5_NT_PRINCIPAL
Die Keytab-Datei C:\temp\AE.keytab wird erstellt.
Sie können die Keytab-Datei auch auf dem Kerberos Administrationsserver erstellen.
Weitere Informationen über die Befehlssyntax von ktpass finden Sie unter http://technet.microsoft.com/en-us/library/cc753771.aspx.
Wichtig! Wenn das AWI auf verschiedenen Hosts bereitgestellt wird, müssen die Schritte zum Generieren der Keytab-Datei (Schritt 2 und 3) für jeden Hostnamen durchgeführt werden, was zu zusätzlichen Keytab-Dateien führt. Das JWP benötigt jedoch genau eine Datei, d. h. die Einträge müssen in eine Datei zusammengeführt werden.
Unter UNIX können Sie die ktutil-Anwendung verwenden, um die Einträge in eine Datei mit den folgenden Befehlen einzufügen:
ktutil
rkt keytab1.keytab
rkt keytab2.keytab
wkt merged.keytab
Die resultierende Datei, die die Einträge von keytab1 und keytab2 enthält, heißt merged.keytab.
Da Java für Windows keinen Merge-Parameter hat, ist die einfachste Lösung, die beiden Dateien mit ktutil auf einem UNIX-System zusammenzuführen und die zusammengeführte Datei dann in Ihre Windows-Installation zu übertragen.
-
Geben Sie die Keytab-Datei an, indem Sie den Pfad und den Dateinamen der generierten Keytab-Datei in die Variable UC_KDC_SETTINGS eingeben. Weitere Informationen finden Sie unter UC_KDC_SETTINGS - Single Sign-On.
Hinweise:
-
Starten Sie den Java-Arbeitsprozess (JWP) neu, nachdem Sie eine Einstellung in einer Systemvariable geändert haben.
-
Wenn es mehrere JWPs auf verschiedenen Hosts gibt, muss sich die keytab-Datei auf allen Hosts im gleichen Verzeichnis befinden. Wenn die Datei auf einem oder mehreren Hosts fehlt, funktioniert die Anmeldung möglicherweise nicht immer.
-
Verlust der Kerberos-Verbindung
Wenn Sie die Kerberos-Verbindung verlieren, wird die Anmeldeseite unabhängig von Ihrer vorherigen Auswahl angezeigt. Auf der Anmeldeseite wird eine Warnmeldung angezeigt.
Das kann passieren, wenn Sie sich von einem anderen Computer oder Server anmelden als der Windows-Domäne, in der Kerberos installiert ist, oder wenn es ein Problem mit der Kerberos gibt. In diesem Fall versucht Windows, sich mit Windows NT LAN manager (NTLM) zu authentifizieren, das die Kerberos-Authentifizierungsinformationen nicht verarbeiten kann.
In der Zwischenzeit wird standardmäßig die Standardanmeldung verwendet. Weitere Informationen finden Sie unter Standard-Login.
Benutzer für die Authentifizierung
Nachdem Kerberos erfolgreich konfiguriert wurde, müssen die entsprechenden Benutzer in den Mandanten des Automation Engine-Systems erstellt werden. Die Benutzernamen müssen den OS-Benutzernamen entsprechen, die Zugriff per Single Sign-On bekommen sollen.
Die Abteilung ist irrelevant, solange der Benutzername für jeden Mandanten eindeutig ist. Wenn es zwei oder mehr Benutzer mit dem gleichen Namen, aber einer anderen Abteilung gibt, muss jede dieser Abteilungen einer Domäne in der Variablen UC_KDC_SETTINGS zugeordnet sein. Weitere Informationen finden Sie unter UC_KDC_SETTINGS - Single Sign-On.
Die Single Sign-On Anmeldung schlägt fehl, wenn im ausgewählten Mandanten kein Benutzerobjekt (USER) mit dem gleichen Namen wie der Betriebssystembenutzer vorhanden ist, wie das, das für den Start des AWI verwendet wird.
Beispiel
Das AWI wird in Windows unter dem Benutzer TEST/LOCAL gestartet. AE-System TEST, Mandant: 100.
Wenn im Mandanten 100 kein Benutzerobjekt mit dem Namen TEST/* (Abteilung irrelevant) existiert, ist eine Single Sign-On-Anmeldung nicht möglich. Wenn es im Mandanten 100 mehrere Benutzer mit dem Namen TEST/* gibt (z. B. TEST/DEV und TEST/LOCA), müssen die Abteilungen den Domänen der OS-Benutzer zugeordnet werden. Wenn die Abteilungen nicht zugeordnet sind, schlägt auch die Anmeldung fehl.
Fehlerbehebung
-
Alle SPNs eines Service-Anwenders abrufen.
Um die SPN-Registrierung eines Benutzers zu überprüfen, verwenden Sie den folgenden Parameter:
setspn -L automicawi
Das Ergebnis sollte den HTTP SPN enthalten.
Beispiel
Registered ServicePrincipalNames for CN=automic awi,CN=Users,DC=domain,DC=sample:
HTTP/winhost01.domain.sample@DOMAIN.SAMPLE
-
Starten Sie JWP mit Kerberos-Debugging.
Deaktivieren Sie es im ServiceManager, sodass nur ein JWP für das Debugging läuft. Starten Sie JWP von einem Konsolenfenster aus, da dort das Output geschrieben wird:
java -Xmx2G -Dsun.security.krb5.debug=true -jar ucsrvjp.jar
Dadurch wird der Kerberos-Debug-Output auf stdout ausgegeben (Standardoutput).
-
Testen Sie, ob Sie einen TGT von Kerberos bekommen können.
java "-Dsun.security.krb5.debug=true" "-Djava.security.krb5.conf=C:\JDK\jdk1.8.0_101\jre\lib\security\krb5.conf" sun.security.krb5.internal.tools.Kinit -k -t C:\AWA\Automation.Platform\AutomationEngine\bin\AE.keytab HTTP/winhost01.domain.sample@DOMAIN.SAMPLE
Siehe auch: