Anleitung zum Einrichten von Kerberos Single Sign-On (SSO)
Übersicht
Kerberos ist ein kryptographiebasiertes Authentifizierungsprotokoll das den Zugriff auf Anwendungen schützt. Dieses Protokoll soll eine sichere Authentifizierung über ein unsicheres Netzwerk ermöglichen. Die Kernidee von Kerberos besteht darin, Benutzer zu authentifizieren und gleichzeitig zu verhindern, dass Passwörter über das Internet gesendet werden.
Mühelose LDAP/Active Directory-Integration für WordPress Video.
Kerberos-Begriffe:
Kerberos: Kerberos ist ein Authentifizierungsprotokoll, das das Konzept des Single Sign-On (SSO) unterstützt. Im Fall von HTTP wird die Unterstützung von Kerberos üblicherweise über den Authentifizierungsmechanismus „SPNEGO“ bereitgestellt.
Kerberos-Bereich: Eine administrative Domäne zur Authentifizierung wird mit dem Begriff Realm bezeichnet. Sein Ziel besteht darin, die Einschränkungen zu definieren, wann ein Authentifizierungsserver einen Benutzer, Host oder Dienst authentifizieren kann. Dies bedeutet nicht, dass ein Benutzer und ein Dienst Mitglieder desselben Bereichs sein müssen, damit die Authentifizierung erfolgen kann: Wenn die beiden Objekte über eine Vertrauensverbindung verbunden sind, obwohl sie zu unterschiedlichen Bereichen gehören, kann die Authentifizierung dennoch erfolgen.
Schulleiter: In einem Kerberos-System stellt ein Kerberos-Principal eine eindeutige Identität dar, an die Kerberos Tickets für den Zugriff auf Kerberos-fähige Dienste ausstellen kann. Das Trennzeichen „/“ wird verwendet, um die verschiedenen Komponenten zu trennen, aus denen sich Prinzipalnamen zusammensetzen. Das Zeichen „@“ kann verwendet werden, um einen Bereich als letztes Element des Namens zu kennzeichnen. Wenn kein Bereich angegeben ist, wird davon ausgegangen, dass der Principal zum Standardbereich gehört, der in der Datei krb5.conf festgelegt ist.
Kunden/Benutzer: Ein Prozess, der im Auftrag eines Benutzers auf einen Dienst zugreift. Innerhalb eines Bereichs können mehrere Clients oder Benutzer vorhanden sein.
Service: Etwas, auf das der Benutzer Zugriff erhalten möchte.
SSO: Single Sign-On ist ein Verfahren, das es einem Benutzer ermöglicht, sich nach Abschluss der Benutzerauthentifizierung nur einmal anzumelden und auf zahlreiche Dienste zuzugreifen. Nach der Anmeldung bei einem primären Dienst erfordert dies eine Authentifizierung bei jedem Dienst, für den der Benutzer eine Berechtigung erteilt hat. SSO bietet eine Reihe von Vorteilen. Einer davon ist die Vermeidung des mühsamen Prozesses der wiederholten Identitätsüberprüfung mithilfe von Passwörtern oder anderen Authentifizierungssystemen.
GSSAPI: Programme können über das Generic Security Service Application Program Interface (GSSAPI), eine Anwendungsprogrammierschnittstelle (API), auf Sicherheitsdienste zugreifen. Ein IETF-Standard ist GSSAPI. Es bietet an sich keine Sicherheit. Stattdessen werden GSSAPI-Implementierungen von Sicherheitsdienstleistern angeboten. Der Austausch undurchsichtiger Nachrichten (Tokens), der die Implementierungsdetails vor der übergeordneten Anwendung verbirgt, ist das Unterscheidungsmerkmal von GSSAPI-Anwendungen.
SPNEGO: Client-Server-Software nutzt den einfachen und geschützten GSSAPI-Verhandlungsmechanismus, der häufig als „spen-go“ bezeichnet wird, um die Auswahl der Sicherheitstechnologie auszuhandeln. Wenn sich eine Client-Anwendung bei einem Remote-Server anmelden muss, aber keine Seite sicher ist, welche Authentifizierungsprotokolle die andere unterstützt, wird SPNEGO eingesetzt. Der Pseudomechanismus verwendet ein Protokoll, um die verfügbaren gemeinsamen GSSAPI-Mechanismen zu identifizieren, wählt einen aus und weist dann alle nachfolgenden Sicherheitsaktionen diesem ausgewählten Mechanismus zu.
KDC: Ein Schlüsselverteilungszentrum ist ein Netzwerkdienst, der Tickets und temporäre Sitzungsschlüssel bereitstellt. oder eine Instanz dieses Dienstes oder des Hosts, auf dem er ausgeführt wird. Das KDC bedient sowohl Erstticket- als auch Ticketgewährungsanfragen. Der anfängliche Ticketteil wird manchmal als Authentifizierungsserver (oder Dienst) bezeichnet. Der Ticket-erteilende Ticketteil wird manchmal als Ticket-erteilender Server (oder Dienst) bezeichnet.
NTLM-Authentifizierungsprotokoll:
Der Zugriff eines Clients auf eine Ressource in einer Active Directory-Domäne kann mithilfe des Challenge-Response-Authentifizierungsprotokolls namens Windows NT LAN Manager (NTLM) authentifiziert werden. Wenn ein Client Zugriff auf einen domänenbezogenen Dienst anfordert, sendet der Dienst eine Aufforderung an den Client und weist ihn an, mit seinem Authentifizierungstoken eine mathematische Operation durchzuführen und das Ergebnis dann dem Dienst bereitzustellen. Das Ergebnis kann vom Dienst oder vom Domänencontroller (DC) überprüft werden. Der Dienst gewährt dem Client Zugriff, wenn der DC oder der Dienst überprüft, ob die Antwort des Clients korrekt ist.
Da der Benutzer den zugrunde liegenden Authentifizierungsfaktor nur einmal bei der Anmeldung eingeben muss, handelt es sich bei NTLM um eine Art Single Sign-On (SSO).

- Das NEGOTIATE_MESSAGE definiert eine NTLM-Negotiate-Nachricht, die vom Client an den Server gesendet wird. Mit dieser Nachricht kann der Client dem Server seine unterstützten NTLM-Optionen angeben.
- Das CHALLENGE_MESSAGE definiert eine NTLM-Herausforderungsnachricht, die vom Server an den Client gesendet wird und vom Server verwendet wird, um den Client zum Nachweis seiner Identität aufzufordern.
- Das AUTHENTICATE_MESSAGE definiert eine NTLM-Authentifizierungsnachricht, die vom Client an den Server gesendet wird, nachdem CHALLENGE_MESSAGE vom Client verarbeitet wurde.
Hinweis: Die Windows-Authentifizierung verwendet je nach Client- und Serverkonfiguration entweder das Kerberos-Authentifizierungsprotokoll oder das NTLM-Authentifizierungsprotokoll.
Kerberos-Authentifizierungsprotokoll:

- Nachricht A: Client-/TGS-Sitzungsschlüssel, verschlüsselt mit dem geheimen Schlüssel des Clients/Benutzers.
- Nachricht B: Ticket-Granting-Ticket verschlüsselt mit dem geheimen Schlüssel des TGS.
- Nachricht C: Bestehend aus dem TGT von Nachricht B und der ID des angeforderten Dienstes.
- Nachricht D: Mit dem Client/TGS-Sitzungsschlüssel verschlüsselter Authentifikator.
- Nachricht E: Mit dem geheimen Schlüssel des Dienstes verschlüsseltes Client-zu-Server-Ticket.
- Nachricht F: Client/Server-Sitzungsschlüssel, verschlüsselt mit dem Client/TGS-Sitzungsschlüssel.
- Nachricht G: Ein neuer Authentifikator, der die Client-ID und den Zeitstempel enthält und mit dem Client/Server-Sitzungsschlüssel verschlüsselt ist.
- Nachricht H: Der im Authentifikator des Clients gefundene Zeitstempel, verschlüsselt mit dem Client/Server-Sitzungsschlüssel.
Kerberos SSO unter Ubuntu/Debian:
Voraussetzungen:
- Ein Dienstkonto/Benutzerkonto im Active Directory.
- Für das Kontokennwort sollte ein Kennwort festgelegt sein Nicht abgelaufen.
Schritt 1: Erstellen Sie eine Keytab-Datei auf dem AD-Domänencontroller:
- Öffnen Sie auf dem AD-Domänencontroller die Eingabeaufforderung im Administratormodus und führen Sie den folgenden Befehl aus, um die Keytab-Datei zu erstellen.
ktpass -princ HTTP/<Server Host Name>@EXAMPLE.COM -mapuser <username@EXAMPLE.COM>
-pass password -ptype KRB5_NT_PRINCIPAL -out <PATH>\spn.keytab -crypto ALL
Hinweis: Gewährleisten BEISPIEL.COM sollte in Großbuchstaben geschrieben werden. Wenn der Benutzer mit SPN bereits vorhanden ist, verwenden Sie diesen Benutzer, um einen neuen zu erstellen. Das Kerberos-Prinzip unterscheidet zwischen Groß- und Kleinschreibung. Bitte prüfen Sie, ob es Unterschiede in der Groß-/Kleinschreibung gibt, bevor Sie den Keytab-Befehl ausführen.
- Im Folgenden sind die Komponenten des Befehls aufgeführt.
| Server-Hostname: | Dies ist der Hostname der auf dem Server gehosteten Site. |
| EXAMPLE.COM: | Es handelt sich um den Active Directory-Domänennamen. |
| Benutzername: | Es handelt sich um ein Dienstkonto im Active Directory. |
| Passwort: | Es handelt sich um das Passwort des oben verwendeten Dienstkontos. |
| Pfad: | Pfad zu einem lokalen Speicherort, an dem die Keytab-Datei gespeichert wird. (C:\Temp\spn.keytab) |
Hinweis: Der obige Befehl erstellt eine Keytab-Datei. Es muss auf dem Client-Server platziert werden, auf dem Ihre WordPress-Site gehostet wird. Der Benutzer, der Apache ausführt, sollte vollen Zugriff auf diese Datei haben. Der Benutzer sollte über Berechtigungen für die Keytab-Datei verfügen.
- Öffnen Sie Active Directory-Benutzer und -Computer und wählen Sie im oberen Menü die Option aus Ansicht >> Erweiterte Funktionen.
- Öffnen Sie das Servicekonto und gehen Sie zur Registerkarte Attribut-Editor. Navigieren Sie zu servicePrincipalName um den SPN-Eintrag zu überprüfen.
- Navigieren Sie zu der Delegation Tab.
- Auswählen Vertrauen Sie diesem Benutzer für die Delegierung an einen beliebigen Dienst (nur Kerberos)..

- Klicken Sie auf Tragen Sie.
- Kopieren Sie die Keytab Datei vom AD-Domänencontroller auf den auf Apache gehosteten Webserver übertragen.
- Erteilen Sie der Kerberos-Keytab-Datei die Berechtigung:
chmod 644 etc/apache2/spn.keytabSchritt 2: Installieren Sie Kerberos-Clientbibliotheken auf dem Webserver:
- Verwenden Sie den folgenden Befehl auf Ihrem Terminal, um die Kerberos-Clientbibliotheken zu installieren.
sudo apt-get install krb5-user
Schritt 3: Module für Apache installieren:
Hinweis: In den neuesten Versionen von Ubuntu/Debian ist die mod_auth_kerb wurde veraltet und durch ersetzt mod_auth_gssapi.
- Es gibt zwei Apache-Module, aber nur eines davon muss installiert werden:
1. mod-auth-gssapi-Modul für Apache.
2. mod_auth_kerb-Modul für Apache. (veraltet)
1. Installieren Sie das Modul mod-auth-gssapi für Apache:
- Verwenden Sie den folgenden Befehl zur Installation des libapache2-mod-auth-gssapi Modul für Apache auf Debian-basierten Systemen:
sudo apt-get -y install libapache2-mod-auth-gssapiOR
2. Installieren Sie das Modul mod_auth_kerb für Apache (veraltet):
- Verwenden Sie den folgenden Befehl, um das auth_kerb-Modul für Apache auf Debian-basierten Systemen zu installieren:
sudo apt-get install libapache2-mod-auth-kerb- Sobald das Modul auth_kerb installiert ist, muss es mit dem folgenden Befehl aktiviert werden.
a2enmod auth_kerb- Nach der Aktivierung Starten Sie Apache neu wirksam werden.
Schritt 4: Konfigurieren Sie die Active Directory-Domäne in der Kerberos-Konfigurationsdatei:
- Öffnen und bearbeiten Sie die krb5.conf Datei.
Der Pfad zur Datei krb5.conf für Linux lautet C:/etc/krb5.conf und für andere UNIX-basierte Systeme ist c:/etc/krb5/krb5.conf - Fügen Sie den folgenden Konfigurationsausschnitt hinzu krb5.conf Datei unter dem genannten Abschnitt:
[libdefaults]
default_realm = EXAMPLE.COM
# ...
# ...
[realms]
EXAMPLE.COM = {
kdc = <DNS entries pointing to your primary domain controller>: Port
admin_server = <DNS entries pointing to your primary domain controller>: Port
}
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
Hinweis: Ersetzen Sie die AD DOMAIN CONTROLLER IP/DNS mit Ihrer IP/DNS Adresse. Stellen Sie sicher BEISPIEL.COM sollte in Großbuchstaben geschrieben werden.
Ersetzen Sie die BEISPIEL.COM mit dem Active Directory-Domänennamen und stellen Sie sicher, dass der Port 88 auf dem AD-Domänencontroller von diesem Server aus zugänglich ist.
- Speichern Sie die Datei.
Schritt 5: Konfigurieren Sie Kerberos SSO für das Site-Verzeichnis:
- Bearbeiten Sie die angelegte Konfigurationsdatei des virtuellen Hosts, die darunter gespeichert ist /etc/apache2/sites-enabled-Verzeichnis oder die standardmäßige virtuelle Hostdatei mit dem Namen 000-default.conf
Hinweis: Fügen Sie den folgenden Abschnitt im Verzeichnis entsprechend dem verwendeten Apache-Modul hinzu. Z.B: „mod_auth_kerb“ or „mod_auth_gssapi“.
- 1. Fügen Sie den folgenden Abschnitt im Verzeichnis der Site hinzu für mod_auth_gssapi.
<IfModule !mod_auth_gssapi.c>
LoadModule auth_gssapi_module /usr/lib64/httpd/modules/mod_auth_gssapi.so
</IfModule>
<Directory "/placeholder">
AuthType GSSAPI
AuthName "Kerberos auth"
GssapiAllowedMech krb5
GssapiBasicAuth On
GssapiCredStore keytab:<PATH TO KEYTAB>
GssapiLocalName On
BrowserMatch Windows gssapi-no-negotiate
Require valid-user
</Directory>
OR
- 2. Fügen Sie den folgenden Abschnitt im Verzeichnis der Site hinzu für mod_auth_kerb (veraltet).
<Directory "/placeholder">
AuthType Kerberos
KrbAuthRealms EXAMPLE.COM
KrbServiceName HTTP/<Server Host Name>
Krb5Keytab <PATH TO KEYTAB>
KrbMethodNegotiate on
KrbMethodK5Passwd on
require valid-user
</Directory>
Hinweis: Gewährleisten BEISPIEL.COM sollte in Großbuchstaben geschrieben werden.
Im Folgenden sind die Komponenten der obigen Konfiguration aufgeführt:
| EXAMPLE.COM: | Dies ist die Active Directory-Domäne, wie in krb5.conf konfiguriert. |
| PFAD ZUM KEYTAB: | Zugänglicher Pfad zum Keytab auf diesem Server. (etc/spn.keytab) |
- Nach dieser Konfiguration muss Apache neu gestartet werden, damit die Änderungen wirksam werden.
Hinweis: Sobald Sie mit der Konfiguration der Einstellungen fertig sind, hier klicken um Browser für Kerberos SSO zu konfigurieren.
Um Ihre Kerberos/NTLM-SSO-Konfiguration zu testen, hier klicken.
Bitte beheben Sie Fehler hier klicken.
Einrichten von Kerberos unter RHEL/CentOS:
Schritt 1: Erstellen Sie eine Keytab-Datei auf dem AD-Domänencontroller:
- Öffnen Sie auf dem AD-Domänencontroller die Eingabeaufforderung im Administratormodus und führen Sie den folgenden Befehl aus, um die Keytab-Datei zu erstellen.
ktpass -princ HTTP/<Server Host Name>@EXAMPLE.COM -mapuser <username@EXAMPLE.COM>
-pass password -ptype KRB5_NT_PRINCIPAL -out <PATH>\spn.keytab -crypto ALL
Hinweis: Gewährleisten BEISPIEL.COM sollte in Großbuchstaben geschrieben werden. Das Kerberos-Prinzip unterscheidet zwischen Groß- und Kleinschreibung. Bitte prüfen Sie, ob es Unterschiede in der Groß-/Kleinschreibung gibt, bevor Sie den Keytab-Befehl ausführen.
- Im Folgenden sind die Komponenten des Befehls aufgeführt.
| Server-Hostname: | Dies ist der Hostname der auf dem Server gehosteten Site. |
| EXAMPLE.COM: | Es handelt sich um den Active Directory-Domänennamen. |
| Benutzername: | Es handelt sich um ein Dienstkonto im Active Directory. |
| Passwort: | Es handelt sich um das Passwort des oben verwendeten Dienstkontos. |
| Pfad: | Pfad zu einem lokalen Speicherort, an dem die Keytab-Datei gespeichert wird. (C:\Temp\spn.keytab) |
Hinweis: Der obige Befehl erstellt eine Keytab-Datei. Es muss auf dem Client-Server abgelegt werden, auf dem Ihre WordPress-Site gehostet wird. Der Benutzer, der Apache ausführt, sollte vollen Zugriff auf diese Datei haben. Der Benutzer sollte über die Berechtigung für die Keytab-Datei verfügen.
- Kopieren Sie die Keytab-Datei vom AD-Domänencontroller zum auf Apache gehosteten Webserver.
- Erteilen Sie der Kerberos-Keytab-Datei die Berechtigung:
chmod 644 etc/httpd/spn.keytabSchritt 2: Installieren Sie Kerberos-Clientbibliotheken auf dem Webserver:
- Verwenden Sie den folgenden Befehl auf Ihrem Terminal, um die Kerberos-Clientbibliotheken zu installieren.
yum install -y krb5-workstation krb5-devel krb5-libs mod_auth_gssapi mod_session
Hinweis: In den neuesten Versionen von CentOS ist die mod_auth_kerb wurde veraltet und durch ersetzt mod_auth_gssapi.
Schritt 3: Module für Apache installieren:
Hinweis: In den neuesten Versionen von Ubuntu/Debian ist die mod_auth_kerb wurde veraltet und durch ersetzt mod_auth_gssapi.
- Es gibt zwei Apache-Module, aber nur eines davon muss installiert werden:
1. mod-auth-gssapi-Modul für Apache.
2. mod_auth_kerb-Modul für Apache (veraltet).
1. Installieren Sie das Modul mod-auth-gssapi für Apache:
- Verwenden Sie den folgenden Befehl zur Installation des libapache2-mod-auth-gssapi-Modul für Apache auf Debian-basierten Systemen:
sudo apt-get -y install libapache2-mod-auth-gssapiOR
2. Installieren Sie das Modul mod_auth_kerb für Apache (veraltet):
- Verwenden Sie den folgenden Befehl zur Installation des auth_kerb-Modul für Apache auf Red Hat-basierten Systemen. (Verwenden Sie für die neuesten Versionen von RHEL das Modul mod-auth-gssapi)
yum install mod_auth_kerbSchritt 4: Konfigurieren Sie die Active Directory-Domäne in der Kerberos-Konfigurationsdatei:
- Öffnen und bearbeiten Sie die krb5.conf Datei.
Der Pfad zur krb5.conf-Datei für RHEL ist C:/etc/krb5.conf - Fügen Sie den folgenden Konfigurationsausschnitt hinzu krb5.conf Datei unter dem genannten Abschnitt:
- Navigieren Sie zu der [libdefaults] Abschnitt und fügen Sie Folgendes hinzu:
default_realm = EXAMPLE.COM
dns_lookup_realm = true
dns_lookup_kdc = true
- Navigieren Sie zu der [Bereiche] Abschnitt und fügen Sie Folgendes hinzu:
EXAMPLE.COM = {
kdc = <DNS entries pointing to your primary domain controller>: Port
admin_server = <DNS entries pointing to your primary domain controller>: Port
}
- Navigieren Sie zu der [domain_realm] Abschnitt und fügen Sie Folgendes hinzu:
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
Hinweis: Ersetzen Sie die IP/DNS des AD-DOMAIN-CONTROLLERS mit Ihrer IP/DNS-Adresse. Stellen Sie sicher, dass EXAMPLE.COM sollte in Großbuchstaben geschrieben werden.
Ersetzen Sie die BEISPIEL.COM mit dem Active Directory-Domänennamen und stellen Sie sicher, dass der Port 88 auf dem AD-Domänencontroller von diesem Server aus zugänglich ist.
- Speichern Sie die Datei.
Schritt 5: Konfigurieren Sie die Active Directory-Domäne in der Kerberos-Konfigurationsdatei:
- Bearbeiten Sie die auferlegte Host-Konfigurationsdatei /etc/httpd/conf/httpd.conf
- Fügen Sie den folgenden Abschnitt im Verzeichnis der Site hinzu für mod_auth_gssapi
LoadModule auth_gssapi_module modules/mod_auth_gssapi.so
<Directory "/placeholder">
AuthType GSSAPI
AuthName "Kerberos auth"
GssapiBasicAuth On
GssapiCredStore keytab:<PATH TO KEYTAB>
GssapiLocalName On
Require valid-user
</Directory>
OR
- Fügen Sie den folgenden Abschnitt im Verzeichnis der Site hinzu für mod_auth_kerb (veraltet).
<Directory "/placeholder">
AuthType Kerberos
KrbAuthRealms EXAMPLE.COM
KrbServiceName HTTP/<Server Host Name>
Krb5Keytab <PATH TO KEYTAB>
KrbMethodNegotiate on
KrbMethodK5Passwd on
require valid-user
</Directory>
- Im Folgenden sind die Komponenten der obigen Konfiguration aufgeführt:
| PFAD ZUM KEYTAB | Zugänglicher Pfad zum Keytab auf diesem Server. (etc/apache2/spn.keytab) |
| „/Platzhalter“ | Pfad zum Dokumentstamm |
- Nach dieser Konfiguration muss Apache neu gestartet werden, damit die Änderungen wirksam werden.
Hinweis: Sobald Sie mit der Konfiguration der Einstellungen fertig sind, hier klicken um Browser für Kerberos SSO zu konfigurieren.
Um Ihre Kerberos/NTLM-SSO-Konfiguration zu testen, hier klicken.
Bitte beheben Sie Fehler hier klicken.
SSO mit Windows-Authentifizierung auf IIS-Server:
- Öffnen Sie die Eingabeaufforderung in Administratormodus.
- Führen Sie den folgenden Befehl aus, um hinzuzufügen Dienstprinzipalname (SPN) für das Dienstkonto.
Hinweis: Angenommen, die Website muss unter http://machinename und http://machinename.domain.com antworten. Diese Adressen müssen wir im SPN-Attribut des Dienstkontos angeben.
Setspn -S http/<computer-name>.<domain-name> <domain-user-account>Ejemplo: C:\Benutzer\Administrator> setspn -S HTTP/Rechnername.Domäne.com Dienstkonto
Hinweis: „machinename.domain.com“ ist hier der Computername. Stellen Sie sicher, dass es auf dem Windows-Server auflösbar ist, auf dem der AD-Dienst ausgeführt wird.
- Überprüfen Sie, ob dies richtig eingestellt wurde, indem Sie den folgenden Befehl ausführen:
setspn -l domain or service_accountEjemplo: C:\Benutzer\Administrator> setspn -l Dienstkonto oder C:\Benutzer\Administrator> setspn -l Domänenname

- Das Ergebnis sollte aufgelistet sein http/maschinenname.domain.com
- Öffnen Sie Active Directory-Benutzer und -Computer und wählen Sie im oberen Menü die Option aus Ansicht >> Erweiterte Funktionen.
- Öffnen Sie das Dienstkonto und gehen Sie zu Attributeditor Navigieren Sie zur Registerkarte „ servicePrincipalName um die zu überprüfen SPN-Eintrag.
- Navigieren Sie zu der Delegation Tab.
- Auswählen Vertrauen Sie diesem Benutzer für die Delegierung an einen beliebigen Dienst (nur Kerberos)..

- Klicken Sie auf Tragen Sie.
- Öffnen Sie den Microsoft Store auf Ihrem Windows-PC IIS-Manager und klicken Sie auf die Website, für die Sie die Windows-Authentifizierung aktivieren möchten.
- Doppelklicken Sie auf Authentifizierung.

- Im Abschnitt Authentifizierung können Sie sehen, dass standardmäßig nur die anonyme Authentifizierung aktiviert ist. IIS versucht immer, eine anonyme Authentifizierung durchzuführen. Anonyme Authentifizierung deaktivieren und Aktivieren der Windows-Authentifizierung.

- Rechtsklick auf die Windows-Authentifizierung und klicken Sie auf Anbieter.

- Das folgende Fenster wird angezeigt. Stellen Sie sicher, dass "Verhandeln" steht in der Anbieterliste ganz oben.

Hinweis: Standardmäßig stehen zwei Anbieter zur Verfügung: Negotiate und NTLM. Negotiate ist ein Container, der Kerberos als erste Authentifizierungsmethode verwendet. Wenn die Authentifizierung fehlschlägt, wird NTLM verwendet. Daher ist es erforderlich, dass Negotiate in der Liste der Anbieter an erster Stelle steht.
- Klicken Sie auf Ok , um das Fenster zu schließen.
- Um den IIS-Anwendungspool so zu konfigurieren, dass er vom erstellten SPN-Konto aus gestartet wird, klicken Sie auf das Anwendungspools um das Fenster „Anwendungspools“ zu öffnen.
- Klicken Sie mit der rechten Maustaste auf die Domäne und klicken Sie in der Liste auf das Erweiterte Einstellungen.

- Klicken Sie im Fenster „Erweiterte Einstellungen“ unter „Prozessmodell“ auf das Identitätsschutz.

- Wählen Sie in der Anwendungspoolidentität Benutzerdefiniertes Konto und klicken Sie auf kompensieren Schaltfläche, um die Identität festzulegen.
- Ändern Sie es aus ApplicationPoolIdentity zu \.
Ejemplo: domain.com\service_account

- Gehen Sie zur Konfigurationseditor.

- Wählen Sie aus der Dropdown-Liste aus system.webServer > Sicherheit > Authentifizierung > WindowsAuthentication.

- Ändern useAppPoolCredentials auf True. und useKernelMode auf False.
Hinweis: Wenn Sie „useAppPoolCredentials“ auf „True“ setzen, bedeutet dies, dass wir IIS erlauben, das Domänenkonto zum Entschlüsseln von Kerberos-Tickets von den Clients zu verwenden.
- Klicken Sie auf Tragen Sie.
- Starten Sie den IIS-Server neu.
- Sie können überprüfen, ob auf der Website die Kerberos-Authentifizierung verwendet wird, indem Sie den HTTP-Verkehr mit Fiddler überwachen.
Starten Sie den Fiddler und starten Sie den Browser mit der gewünschten Website. Suchen Sie die Zeile für den Website-Zugriff auf der linken Seite des Fensters. Wählen Sie auf der rechten Seite des Fensters die Registerkarte „Inspizieren“ aus. Dass Kerberos zur Authentifizierung auf der IIS-Website verwendet wurde, geht aus der Zeile „Authorization Header (Negotiate) scheint ein Kerberos-Ticket zu enthalten“ hervor.

Hinweis: Sobald Sie mit der Konfiguration der Einstellungen fertig sind, hier klicken um Browser für Kerberos SSO zu konfigurieren.
Um Ihre Kerberos/NTLM-SSO-Konfiguration zu testen, hier klicken.
Bitte beheben Sie Fehler hier klicken.
SSO mit Apache auf Windows XAMPP Server:
- Öffnen Sie die Eingabeaufforderung in Administratormodus.
- Führen Sie den folgenden Befehl aus, um hinzuzufügen Dienstprinzipalname (SPN) für das Dienstkonto.
Setspn -s http/<computer-name>.<domain-name> <domain-user-account>Ejemplo: C:\Benutzer\Administrator> setspn -S HTTP/Maschinenname.domain.com service_account
Hinweis:„machinename.domain.com“ ist hier der Computername. Stellen Sie sicher, dass es auf dem Windows-Server auflösbar ist, auf dem der AD-Dienst ausgeführt wird.
- Überprüfen Sie, ob dies richtig eingestellt wurde, indem Sie den folgenden Befehl ausführen:
setspn -l domain\service_account- Das Ergebnis sollte aufgelistet sein http/maschinenname.domain.com
- Öffnen Sie Active Directory-Benutzer und -Computer und wählen Sie im oberen Menü die Option aus Ansicht >> Erweiterte Funktionen.
- Öffnen Sie das Dienstkonto und gehen Sie zu Attributeditor Navigieren Sie zur Registerkarte „ servicePrincipalName um die zu überprüfen SPN-Eintrag.
- Navigieren Sie zu der Delegation Tab.
- Auswählen Vertrauen Sie diesem Benutzer für die Delegierung an einen beliebigen Dienst (nur Kerberos)..

- Klicken Sie auf Tragen Sie.
- Mehr Info um das Apache-Modul herunterzuladen.
- Kopieren Sie die mod_authnz_sspi.so ab Apache24 > Module Ordner und legen Sie es im Verzeichnis „modules“ (C:\xampp\apache\modules) ab.
- Kopieren Sie die sspipkgs.exe Datei von Apache24 -> bin Ordner und platzieren Sie ihn im bin-Ordner Ihres Xampp-Apache-Ordners (.....\xampp\apache\bin) auf Ihrem Webserver.
- Öffnen Sie httpd.conf (...\xampp\apache\conf) und platzieren Sie die folgende Codezeile im Abschnitt LoadModule.
LoadModule authnz_sspi_module modules/mod_authnz_sspi.so- Stellen Sie sicher, dass die folgenden Module unkommentiert sind:
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authz_core_module modules/mod_authz_core.so- Stellen Sie auch sicher LDAP-Erweiterung aktivieren.
- Öffnen Sie die Datei httpd.conf unter (....\xampp\apache\conf\httpd.conf).
Gehen Sie zu und fügen Sie die folgenden Zeilen nach #Require all grants ein.
<Directory "...../xampp/htdocs">
......
......
#Require all granted
AllowOverride None Options None
AuthType SSPI
SSPIAuth On
SSPIAuthoritative On
Require valid-user
</Directory>
- Starten Sie neu Apache-Server.
Hinweis: Sobald Sie mit der Konfiguration der Einstellungen fertig sind, hier klicken um Browser für Kerberos SSO zu konfigurieren.
Um Ihre Kerberos/NTLM-SSO-Konfiguration zu testen, hier klicken.
Bitte beheben Sie Fehler hier klicken.
Konfigurieren Sie Browser für Kerberos SSO:
Hinweis: Die clientseitige Konfiguration ermöglicht es dem jeweiligen Browser, SPNEGO zu verwenden, um die Kerberos-Authentifizierung für den Browser auszuhandeln. Sie müssen sicherstellen, dass der Browser auf dem System eines Endbenutzers für die Unterstützung der Kerberos-Authentifizierung konfiguriert ist.
Allgemeine Kerberos SSO-Konfiguration für alle Browser:
- Gehen Sie zur Systemsteuerung und klicken Sie auf Netzwerk und Internet >> Internetoptionen.
- Dadurch wird ein Internet-Eigenschaftenfenster geöffnet. Klicke auf Sicherheit >> Lokales Intranet >> Sites.

- Danach klicken Sie auf die Schaltfläche Erweiterte Schaltfläche.

- Im Fügen Sie diese Website zur Zone hinzu Fügen Sie im Abschnitt die Website-URL hinzu, auf der Sie sich mit SSO anmelden möchten.

- Klicken Sie auf Extras > Internetoptionen > Sicherheit > Lokales Intranet > Stufe anpassen.
- Scrollen Sie nach unten zu den Benutzerauthentifizierungsoptionen und wählen Sie aus Automatische Anmeldung nur in der Intranet-Zone.

- Klicken Sie auf Ok Klicken Sie auf die Schaltfläche und starten Sie dann Ihren Browser neu.
Sobald Sie mit den oben genannten Einstellungen fertig sind, müssen Sie die Browsereinstellungen für Internet Explorer, Google Chrome und Apple Safari nicht mehr konfigurieren.
- Internet Explorer
- Google Chrome
- Mozilla Firefox
- Apple Safari
Testen Sie Ihre Kerberos/NTLM SSO-Konfiguration:
Zeitsynchronization:
Das Kerberos-Protokoll erfordert, dass die Uhrzeiten von Client und Server übereinstimmen: Wenn die Systemuhr des Clients nicht mit der des Servers übereinstimmt, schlägt die Authentifizierung fehl. Die einfachste Möglichkeit, die Systemuhren zu synchronisieren, ist die Verwendung eines Network Time Protocol (NTP)-Servers.
Mit Befehlen überprüfen:
Um Ihre Keytab- und Kerberos-Konfiguration zu überprüfen, können Sie die folgenden Befehle ausführen:
- Klist: Der Befehl klist zeigt den Inhalt eines Caches oder einer Schlüsseltabelle für Kerberos-Anmeldeinformationen an. Mit diesem Befehl können Sie überprüfen, ob Sie ein gültiges Ticket haben oder nicht.
- klist -t -k etc/apache2/spn.keytab: Zum Auflisten aller Einträge in der Schlüsseltabelle etc/apache2/spn.keytab mit Zeitstempeln.
- klist -ek /etc/apache2/spn.keytab: Zeigt den Verschlüsselungstyp für den Sitzungsschlüssel und das Ticket an und listet die Einträge in einer Schlüsseltabelle auf.
- kinit -V -kt /etc/apache2/spn.keytab -p HTTPS/ webserver.IhreDomain.com @IHREDOMAIN.COM: Überprüfen Sie die Kerberos-Authentifizierung mit der Keytab-Datei.
- kdestroy -A: Mit diesem Befehl können Sie unter Linux jedes Kerberos-Token auf Ihrem lokalen Computer zurücksetzen. Der Befehl zerstört Ihr vorheriges Kerberos-Ticket.
- Klist-Bereinigung: Mit diesem Befehl können Sie unter Windows jedes Kerberos-Token auf Ihrem lokalen Computer zurücksetzen. Der Befehl zerstört Ihr vorheriges Kerberos-Ticket.
- KRB5_TRACE=/dev/stdout kinit -kt /etc/krb5.keytab HTTP/≶Server-Hostname>: Sie können diesen Befehl auf Ihrem Linux-Webserver verwenden, um mithilfe der Keytab-Datei ein Kerberos-Ticket abzurufen und durch Aktivieren der Kerberos-Verfolgung detaillierte Informationen zum Debuggen des Kerberos-Authentifizierungsprozesses zu erhalten.
Testkonfiguration:
- Um die SSO-Konfiguration zu testen, erstellen Sie eine test.php Datei in Ihrem WordPress-Stammverzeichnis.
- Geben Sie die folgende Zeile ein:
<?php
var_dump($_SERVER);
?>
- Speichern Sie die Datei und greifen Sie im Webbrowser darauf zu. Sie werden das sehen $_SERVER-Inhalt.
- Suchen nach "REMOTE_USER" und es sollte den aktuell angemeldeten Benutzernamen enthalten.
Hinweis: Bitte entfernen Sie die test.php Datei, nachdem Sie Ihre Konfiguration überprüft haben. Da sie einige wertvolle Informationen enthält.
Kerberos-Authentifizierung über mehrere Domänen hinweg:
- Erstellen Sie separate Keytabs für jede Domäne und führen Sie sie mit dem ktutil-Tool zusammen:
ktutil
ktutil: read_kt <keytab_filename_1>
ktutil: read_kt <keytab_filename_2>
ktutil: read_kt <keytab_filename_3>
ktutil: write_kt spn.keytab
ktutil: quit
- Überprüfen Sie die Zusammenführung mit dem folgenden Befehl:
klist -k spn.keytab
- krb5.conf konfigurieren:
Die Datei krb5.conf enthält Kerberos-Konfigurationsinformationen, darunter KDC- und Admin-Server für einen oder mehrere Kerberos-Bereiche, Standardwerte für den aktuellen Bereich und Zuordnungen von Hostnamen zu Kerberos-Bereichen. Bei mehreren Domänen sollte die Datei krb5.conf mit Informationen zu verschiedenen Domänen/Domänenbereichen aktualisiert werden, damit die Authentifizierung funktioniert.
Fehlerbehebung:
Im Folgenden sind die häufigsten Fehlermeldungen aufgeführt:
-
kinit: Pre-authentication failed: Invalid argument while getting initial credentialsDer RC4-Verschlüsselungstyp, der in AD-Umgebungen immer noch häufig verwendet wird, in RHEL-8.3 jedoch bereits standardmäßig deaktiviert ist. Sie können sich auf das folgende Beispiel beziehen, um Ihrer Keytab-Datei einen Verschlüsselungstyp hinzuzufügen.
or
GSS ERROR gss_accept_sec_context(): [Unspecified GSS failure. Minor code may provide more information (Request ticket server HTTP/<Server Host Name>@EXAMPLE.COM kvno x enctype rc4-hmac found in keytab but cannot decrypt ticket)]
Ejemplo:ktutil
addent -password -p HTTP/<Server Host Name>@EXAMPLE.COM -k 1 -e aes256-cts-hmac-sha1-96
wkt spn.keytab.
Stelle sicher Kerberos AES 256-Bit-Verschlüsselung wird im Benutzer unterstützt "Konto" zu üben.

-
Unspecified GSS failure. Minor code may provide more information (Clock skew too great)Kerberos ist sehr zeitkritisch. Stellen Sie sicher, dass die Uhren auf den Hosts für Active Directory und den Webserver identisch sind. Richten Sie einen Ihrer Domänencontroller als NTP-Server für Ihre Client-Computer ein.
or
kinit: krb5_get_init_creds: Too large time skew -
gss_acquire_cred() failed: Unspecified GSS failure. Minor code may provide more information (, Permission denied)Falsche Dateisystemberechtigungen für /etc/apache2/spn.keytab, dh für den Linux-Benutzer des Webservers nicht lesbar.
Um die Dateisystemberechtigungen zu ändern, verwenden Sie chmod 644 /etc/apache2/spn.keytab -
gss_acquire_cred() failed: Unspecified GSS failure. Minor code may provide more information (, Key table entry not found).Fehlender Dienstprinzipal (möglicherweise HTTP/webserver.IhreDomäne.com @IHREDOMAIN.COM) in /etc/apache2/spn.keytab. -
Warning: received token seems to be NTLM, which isn't supported by the Kerberos module. Check your IE configuration.gss_accept_sec_context() failed: An unsupported mechanism was requested (, Unknown error)Die Website befindet sich nicht in der Zone „Lokales Intranet“ im IE oder der IE ist falsch konfiguriert, siehe Authentifizierung. Verwendet NTLM anstelle von Kerberos. -
gss_accept_sec_context() failed: Unspecified GSS failure. Minor code may provide more information (, ).Falsches KVNO- oder Maschinenkennwort in etc/apache2/spn.keytab. Erstellen Sie die Schlüsseltabelle mit den richtigen Informationen neu.
Problem mit dem lokalen Kerberos-Ticket-Cache auf Ihrer Workstation. Verwenden Sie Kerbtray.exe, um den Ticket-Cache zu leeren und die Website erneut im IE zu öffnen. -
kinit: KDC has no support for encryption type while getting initial credentialsÄndern Sie den Standardverschlüsselungstyp im Abschnitt libdefaults der Datei /etc/apache2/krb5.conf. Fügen Sie die default_tgs_enctypes und default_tkt_enctypes zu Ihrer Konfiguration hinzu. -
[libdefaults]
default_tgs_enctypes = arcfour-hmac-md5 des-cbc-crc des-cbc-md5
default_tkt_enctypes = arcfour-hmac-md5 des-cbc-crc des-cbc-md5kinit: krb5_get_init_creds: Error from KDC: CLIENT EXPIREDIhr Kerberos-Konto ist nicht mehr aktiv. Die Zugangsdaten für das Konto müssen erneuert werden.
or
kinit: Client's entry in database has expired while getting initial credentials -
kinit: krb5_cc_get_principal: No credentials cache file foundBeim Ausführen des Befehls kinit wurde die falsche Domäne als Ziel ausgewählt. Überprüfen Sie den Domänennamen. Er sollte in Großbuchstaben geschrieben sein: EXAMPLE.COM
or
kinit: krb5_get_init_creds: Error from KDC: CLIENT_NOT_FOUND -
kinit : Cannot find KDC for requested realm while getting initial credentialsDie Datei /etc/apache2/krb5.conf enthält nicht den Active Directory-Domänennamen (.EXAMPLE.COM). -
kinit: Preauthentication failed while getting initial credentialsVerursacht durch versehentliches Eintippen des Kerberos-Passworts. Bitte versuchen Sie es erneut. Oder liegt an der Uhr Ihres Systems. Stellen Sie sicher, dass der Datumsbefehl eine auf 5 Minuten genaue Zeit zurückgibt. -
kinit: Client not found in Kerberos database while getting initial credentialsIhr Kerberos-Prinzipal kann sich von Ihrem Benutzernamen auf Ihrem lokalen System unterscheiden. -
kinit: Client's entry in database has expiredSie müssen Ihr Kerberos-Passwort ändern.
FAQs
Weitere FAQs ➔Kann ich einen vorhandenen LDAP-Benutzer als Kerberos-Dienstprinzipal verwenden?
Ja, Sie können einen vorhandenen LDAP-Benutzer als Kerberos-Dienstprinzipal verwenden. Für diesen Benutzer muss jedoch ein Kennwort festgelegt sein, das niemals abläuft. Bitte stellen Sie sicher, dass dieses Konto von keinem Benutzer verwendet wird, da die Anwendung dieses Konto als Kerberos-Dienstprinzipal und die entsprechende Schlüsseltabelle verwendet, um ein Kerberos-Ticket zu erhalten.
Was ist ein „Kerberos-Client“, ein „Kerberos-Server“ und ein „Anwendungsserver“?
Die gesamte Authentifizierung in Kerberos erfolgt zwischen Clients und Servern. Daher wird jede Entität, die ein Serviceticket für einen Kerberos-Dienst erhält, in der Kerberos-Terminologie als „Kerberos-Client“ bezeichnet. Benutzer werden oft als Kunden betrachtet, aber jeder Prinzipal könnte einer sein.
Das Key Distribution Center, kurz KDC, wird üblicherweise als „Kerberos-Server“ bezeichnet. Sowohl der Authentication Service (AS) als auch der Ticket Granting Service (TGS) werden vom KDC implementiert. Jedes mit jedem Prinzipal verbundene Passwort wird im KDC gespeichert. Aus diesem Grund ist es wichtig, dass das KDC so sicher wie möglich ist.
Der Begriff „Anwendungsserver“ bezieht sich häufig auf kerberisierte Software, die Clients zur Interaktion bei der Authentifizierung mithilfe von Kerberos-Tickets verwenden. Ein Beispiel für einen Anwendungsserver ist der Kerberos-Telnet-Daemon.
Warum werde ich aufgefordert, meine Zugangsdaten einzugeben?
Dies geschieht, wenn das NTLM-Protokoll anstelle von Kerberos für die Authentifizierung verwendet wird.
Dies kann mehrere Gründe haben:
- Überprüfen Sie, ob Sie für den Zugriff auf die Website einen Domänencomputer verwenden.
- Stellen Sie sicher, dass die Uhrzeit zwischen dem LDAP-Server und dem Webserver synchronisiert ist.
- Überprüfen Sie, ob Ihre Browsereinstellungen und Internetoptionen für Kerberos SSO konfiguriert sind.
- Wenn Sie immer noch mit diesem Problem konfrontiert sind, können Sie uns gerne kontaktieren.
Ähnliche Artikel
Danke für Ihre Antwort. Wir werden uns bald bei Ihnen melden.
Etwas ist schief gelaufen. Bitte senden Sie Ihre Anfrage erneut


