Kerberos-Authentifizierung
Information
Kerberos ist ein standardisierter Authentifizierungsmechanismus, der sowohl auf dem Server als auch auf dem Client konfiguriert werden muss.
Hinweise
Folgende Voraussetzungen müssen für die Kerberos-Authentifizierung erfüllt sein:
Keytab-Datei verfügbar
Hostname des Key Distribution Centers (KDC) bekannt
ServicePrincipalName (SPN) des Dienstes bekannt
Informationen zum Aufbau des SPN: https://msdn.microsoft.com/en-us/library/ms677601.aspx
Achtung
Als Voraussetzung zur Durchführung der nachfolgend beschriebenen Administrationsaufgaben sind fundierte IT-Kenntnisse erforderlich.
Server-Konfiguration
Informationen
In der Server-Konfiguration muss die Konfigurationsvariable
auth__methodsentsprechend gesetzt werden, also in diesem Fall auf die Optionkerberos.
Details
Die Umgebungsvariablen
config__kerberosundconfig__authbestimmen jeweils einen Pfad zu bestimmten Konfigurationsdateien.config__kerberosist eine Kerberos-Konfiguration, die Realms, Domains, KDCs sowie Verschlüsselungsalgorhitmen festlegt.Besteht bereits eine systemweite JAAS-kompatible Konfigurationsdatei, so kann auch diese verwendet werden. Andernfalls kann das Template an die Kundeninstallation angepasst werden.
config__authbestimmt, wie der PLANTA-Server sich mit seinem eigenen Service Account einloggt. Ein Bereich namensPLANTAServerwird benötigt, damit der Code die Einstellungen finden kann. Hier kann sowohl derprincipalals auch derkeyTab/ticketCache-Pfad wie gewünscht angepasst werden. Alle weiteren Einstellungen, vor allemdoNotPrompt, sollten unverändert bleiben.
Keytab-Dateien werden für gewöhnlich vom Systemadministrator erstellt, um die entsprechenden Principals und Service Accounts anzupassen. Der Systemadministrator sollte am besten wissen, wie diese richtig erstellt werden und wie die entsprechenden Principals in
config/auth.confangegeben werden.Die Auflösung von Kerberos Principal nach PLANTA-Benutzername /-kennung wird in Python gelöst, sodass Kunden jegliche
user@REALMKombinationen auf einen beliebigen PLANTA-Benutzer mappen können.Im Python-Modul
ppms.krb5_loginist eine Methodekrb5_login_resolve_username(Principal)definiert, die eine kundenspezifische Möglichkeit bietet, einen Kerberos Principal auf seinen entsprechenden PLANTA-Benutzernamen zu mappen. Diese Python-Methode ist bzgl. der Parameter und der zu erwartenden Rückgabewerte dokumentiert. Die eigentliche Implementierung muss für jede Installation definiert werden.Um Debug-Informationen für kerberos zu bekommen, kann man folgende Einstellung für die JVM setzen:
-Djava.security.debug=all. Dies kann in der Datei.\PlantaServer\yajsw\conf\common.confin einem der Parameterwrapper.java.additional.xerfolgen. Nach dem Neustart findet man in der Dateiwrapper.logdie Ausgabe.
Client-Konfiguration
Information
Die Client-Konfigurationsparameter können in der Kommandozeile oder in der
ini-Datei angegeben werden:authentication=kerberosAktiviert die Kerberos-Ticketbearbeitung (erforderlich)
spn=<service>/<service_account>@<REALM>Hier muss der kanonische SPN eingetragen werden, z.B.
PLANTA/planta_server@EXAMPLE.COM(erforderlich).
mutual=onAktiviert die gegenseitige Authentifizierung (optional)
Hinweis
Bei Angabe der Konfigurationsparameter in der
ini-Datei dürfen weder zusätzliche Anführungszeichen (z.B. im SPN) noch zusätzliche Leerzeichen (z.B. am Zeilenende) angegeben werden.
Konfigurieren der Verschlüsselungseinstellungen für Benutzerkonten in Active Directory
Um starke Verschlüsselung zu konfigurieren, müssen die Benutzereinstellungen wie im Artikel Netzwerksicherheit: für Kerberos zulässige Verschlüsselungstypen konfigurieren angepasst werden.
Hinweise zum Lösen von Problemen finden Sie unter Kerberos and LDAP Troubleshooting Tips.
Exemplarische Einrichtung eines Service-Accounts für die Kerberos-Authentifizierung im Active Directory
1. Anlegen eines Benutzers im AD-Baum
Auf dem Domänen-Controller Active Directory Users and Computers öffnen
Über Create a new user in the current container einen neuen Benutzer mit dem gewünschten Namen (z.B. Dienstname) anlegen
Beispiel: planta_service
2. Setzen eines Dienstprinzipialnamens (SPN) über das setspn-Kommando
setspn -A <SPN> <account>ausführenNamensschema: <Dienstname>/<Identifikator, z.B. host name>
Beispiel:
setspn -A PLANTA/srv_planta.mydomain.com planta_service
Ein SPN darf nur einmal vergeben werden.
Der Client bricht die Ticketanforderung sonst mit der Fehlermeldung SEC_E_TARGET_UNKNOWN ab.
Die Prüfung kann mittels
setspn -Q <SPN>erfolgen: Hier darf nur ein Account zurückgegeben werden.
3. Erstellung einer keytab-Datei mittels ktpass
Syntax:
ktpass /princ <SPN> /mapuser <Domain\User@DOMAIN> /pass <password> /out <keytab filename>Beispiel mit den vorherigen Werten:
ktpass /princ PLANTA/srv_planta@MYDOMAIN.COM -setupn /mapuser XYZ\planta_service /pass gehe1m /out planta_service.keytab
Hinweis
Die Domäne muss zwangsweise in Großbuchstaben angegeben werden.
Der hier verwendete Parameter
-setupnverhindert, dass der Benutzeraccount umbenannt wird.Dies kann bei nicht als Benutzernamen verwendbaren SPNs notwendig sein.
Die keytab-Datei in das Konfigurationsverzeichnis des Servers kopieren
Die Datei gegen unautorisiertes Lesen sichern
Siehe auch: Server-Parameter, Client-Parameter