Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird eine hypothetische Client- und Serverbereitstellung verwendet, um die Problembehandlung bei Kerberos-Authentifizierungsproblemen zu veranschaulichen.
Umgebung und Konfiguration
Der Benutzer "John" gehört zur
contoso.com
Domäne.Alle Dns-Server (Domain Name System) der Domäne sind Domänencontroller.
John ist bei einem Clientcomputer angemeldet, der wie folgt konfiguriert ist:
Name und Domäne:
Client1.contoso.com
Betriebssystem: Windows 11
Browser: Microsoft Edge
Überwachungsanwendung: Netzwerkmonitor (von Microsoft Network Monitor installiert)
Konfiguration von Internetoptionen: Alle
contoso.com
Websites gehören zur lokalen Intranetzone.
Auf dem Clientcomputer stellt John eine Verbindung zu einem Zielserver her, der wie folgt konfiguriert ist:
Name und Domäne:
IISServer.contoso.com
Betriebssystem: Windows Server 2019
Zieldienst: Eine in den Internet Information Services (IIS) ausgeführte Website.
Zieldienstkonto: Das Computerkonto (der Dienst wird im Kontext von
IISServer.contoso.com
)Zieldienstport: TCP-Port 80
Authentifizierungskonfiguration (konfiguriert im Internetinformationsdienste-Manager):
Die Windows-Authentifizierung ist aktiviert.
Die Liste der aktivierten Authentifizierungsanbieter enthält "Negotiate", wie im folgenden Screenshot gezeigt:
Anmeldeüberwachungskonfiguration: Die Anmeldeerfolgsüberwachung und die Anmeldefehlerüberwachung sind beide aktiviert.
Hinweis
Standardmäßig ist bei allen Windows Server-Betriebssystemen die Anmeldeüberwachung für Erfolgs- und Fehlanmeldungen aktiviert. Um diese Einstellung zu überprüfen, öffnen Sie ein Fenster mit administrativen Eingabeaufforderungen, und führen Sie dann den folgenden Befehl aus:
auditpol /get /Subcategory:"logon"
Wenn die Einstellung aktiviert ist, generiert dieser Befehl die folgende Ausgabe:
System audit policy Category/Subcategory Setting Logon/Logoff Logon Success and Failure
Wenn dieses Ergebnis nicht angezeigt wird, führen Sie den folgenden Befehl aus, um die Erfolgs- und Fehlerüberwachungsprotokollierung zu aktivieren:
auditpol /set /subcategory:"Logon" /Success:enable /Failure:enable
Erwarteter Authentifizierungsfluss
Das folgende Diagramm zeigt die Sequenz von Kerberos-Anforderungs- und Antwortnachrichten sowie die Pfade dieser Nachrichten in der Umgebung, die im vorherigen Abschnitt beschrieben werden.
Der Prozess wird gestartet, wenn Der Benutzer John, der am Clientcomputer Client1.contoso.com
angemeldet ist, einen Microsoft Edge-Browser öffnet und eine Verbindung herstellt IISServer.contoso.com
.
Schritt 1 tritt auf dem Clientcomputer auf und enthält die folgenden Schritte:
- Der DNS-Resolverdienst speichert
IISServer.contoso.com
im Cache, um zu überprüfen, ob diese Information bereits zwischengespeichert ist. - Der DNS-Resolverdienst überprüft die HOSTS-Datei (C:\Windows\System32\drivers\etc\Hosts) auf eine beliebige Zuordnung von
IISServer.contoso.com
. - Der DNS-Clientdienst sendet eine DNS-Abfrage an den bevorzugten DNS-Server (wie in den IP-Konfigurationseinstellungen konfiguriert).
Schritt 2 tritt auf dem DNS-Server (Domänencontroller) auf und umfasst die folgenden Schritte:
- Der DNS-Serverdienst überprüft die konfigurierten Zonen, sucht den Host-A-Eintrag und löst
IISServer.contoso.com
zu der IP-Adresse192.168.2.104
auf. - Der DNS-Server gibt die IP-Adresse an den Clientcomputer zurück.
Schritt 3 tritt auf dem Clientcomputer auf und enthält die folgenden Schritte:
- Der Clientcomputer stellt mittels TCP-Port 80 einen TCP-Drei-Wege-Handshake mit
IISServer.contoso.com
her. - Der Clientcomputer sendet eine anonyme HTTP-Anforderung an
IISServer.contoso.com
.
Schritt 4 tritt auf dem Zielserver auf und enthält die folgenden Schritte:
- Der Webdienst (ausgeführt als
IISServer.contoso.com
) empfängt die Anforderung vonClient1.contoso.com
. - Der Webdienst sendet eine Antwortnachricht an
Client1.contoso.com
, die eine HTTP 401-Herausforderung enthält. die Nachricht gibt "Negotiate" als bevorzugter Authentifizierungsanbieter und NTLM als sekundärer Authentifizierungsanbieter an.
Schritt 5 tritt auf dem Clientcomputer auf und enthält die folgenden Schritte:
- Der Clientcomputer empfängt die Herausforderungsantwortnachricht von
IISServer.contoso.com
. - Der Microsoft Edge-Prozess überprüft, ob
IISServer.contoso.com
sie zur lokalen Intranetzone gehört. Daher sollte der Authentifizierungsprozess Kerberos anstelle von NTLM verwenden. - Der Microsoft Edge-Prozess ruft LSASS.exe auf, um nach einem Serviceticket für
IISServer.contoso.com
zu suchen. - In diesem Fall verfügt der Clientcomputer nicht über ein entsprechendes Serviceticket. Der Microsoft Edge-Prozess sendet eine Anforderung an das Kerberos Distribution Center (KDC) für ein Ticket.
Schritt 6 tritt auf dem Domänencontroller auf und enthält die folgenden Schritte:
- Der Domänencontroller (KDC-Dienst) empfängt die Anforderung
Client1.contoso.com
und sucht nach dem Dienst, der den SPNHTTP\IISServer.contoso.com
(oderHOST\IISServer.contoso.com
) verwendet. - Der Domänencontroller identifiziert den angeforderten Dienst als den Web-Service, der im Kontext von
IISServer.contoso.com
läuft. - Der Domänencontroller sendet eine Antwort auf den Clientcomputer, der ein Dienstticket für den
IISServer.contoso.com
Webdienst enthält.
Schritt 7 tritt auf dem Domänencontroller auf und enthält die folgenden Schritte:
- Der Microsoft Edge-Prozess erstellt eine AP-Nachricht (Kerberos Application Protocol), die das Dienstticket enthält.
- Der Microsoft Edge-Prozess sendet die AP-Nachricht an
IISServer.contoso.com
als Reaktion auf die Aufforderungsantwortnachricht „HTTP 401“.
Schritt 8 tritt auf dem Webserver auf und enthält die folgenden Schritte:
- Der IIS-Prozess fragt den lokalen LSASS.exe Prozess ab.
- Der LSASS.exe Prozess entschlüsselt das Ticket und erstellt dann ein Token für den Benutzer, der eine SessionID und Johns Gruppenmitgliedschaften enthält.
- Der LSASS.exe Prozess gibt ein Handle für das Token an den IIS-Prozess zurück.
- Der IIS-Prozess überprüft die Gruppeninformationen im Token, um sicherzustellen, dass John über die Berechtigung für den Zugriff auf die angeforderte Seite verfügt.
- Der IIS-Prozess sendet die angeforderte Seite an den Browser.
Verwenden des Netzwerkmonitors zum Aufzeichnen eines Authentifizierungstests
Führen Sie die folgenden Schritte aus, um Ablaufverfolgungsdaten in einer Umgebung zu sammeln, die dem im Abschnitt "Umgebung und Konfiguration " beschriebenen ähnelt. Während dieses Tests sollten die Systemkomponenten auf die Weise interagieren, die im Abschnitt "Erwarteter Authentifizierungsfluss " beschrieben wird.
Hinweis
Um die Verfahren in diesem Abschnitt zu verwenden, müssen Sie zur lokalen Gruppe "Administratoren" gehören:
- Öffnen Sie auf dem Clientcomputer ein Verwaltungs-Eingabeaufforderungsfenster, und führen Sie dann aus
ipconfig /flushdns
. - Öffnen Sie den Netzwerkmonitor, und starten Sie die Aufzeichnung.
- Öffnen Sie Microsoft Edge. Geben Sie in der Adressleiste
http://iisserver.contoso.com
ein. - Wenn der Microsoft Edge-Vorgang abgeschlossen ist, beenden Sie die Aufzeichnung im Netzwerkmonitor.
Überprüfen der Daten, die der Authentifizierungstest generiert
Der Authentifizierungstest generiert die folgenden Informationen:
- Netzwerkmonitor-Überwachungsdaten
- Ticketdaten
- Prüfungserfolgs- und Prüfungsfehlschlag-Ereignisdaten für Authentifizierungsereignisse
Der Rest dieses Abschnitts enthält weitere Details dazu, welche Daten der Authentifizierungsfluss erzeugt.
Überprüfen der Ablaufverfolgungsdaten für wichtige Ereignisse
Suchen Sie in den Tracedaten nach Informationen, die wie die folgenden Auszüge aussehen:
DNS-Abfrage an den Domänencontroller für den Host-A-Eintrag für
IISServer.contoso.com
:3005 00:59:30.0738430 Client1.contoso.com DCA.contoso.com DNS DNS:QueryId = 0x666A, QUERY (Standard query), Query for iisserver.contoso.com of type Host Addr on class Internet
DNS-Antwort vom DNS-Dienst auf dem Domänencontroller:
3006 00:59:30.0743438 DCA.contoso.com Client1.contoso.com DNS DNS:QueryId = 0x666A, QUERY (Standard query), Response - Success, 192.168.2.104
Anonyme Anforderung vom Microsoft Edge-Prozess an
Client1.contoso.com
denIISServer.contoso.com
IIS-Webserver:3027 00:59:30.1609409 Client1.contoso.com iisserver.contoso.com HTTP HTTP:Request, GET / Host: iisserver.contoso.com
HTTP 401-Rückmeldung auf die Authentifizierungsanforderung von
IISServer.contoso.com
zuClient1.contoso.com
:3028 00:59:30.1633647 iisserver.contoso.com Client1.contoso.com HTTP HTTP:Response, HTTP/1.1, Status: Unauthorized, URL: /favicon.ico Using Multiple Authetication Methods, see frame details WWWAuthenticate: Negotiate WWWAuthenticate: NTLM
Serviceticketanforderung von
Client1.contoso.com
an den DomänencontrollerDCA.contoso.com
für den Dienst, derHTTP/iisserver.contoso.com
als SPN verwendet (auch bekannt als TGS-Anforderungsnachricht):3034 00:59:30.1834048 Client1.contoso.com DCA.contoso.com KerberosV5 KerberosV5:TGS Request Realm: CONTOSO.COM Sname: HTTP/iisserver.contoso.com
Antwort auf das Serviceticket von
DCA.contoso.com
, die das Serviceticket fürIISServer.contoso.com
enthält (auch als TGS-Antwortnachricht bekannt):3036 00:59:30.1848687 DCA.contoso.com Client1.contoso.com KerberosV5 KerberosV5:TGS Response Cname: John Ticket: Realm: CONTOSO.COM, Sname: HTTP/iisserver.contoso.com Sname: HTTP/iisserver.contoso.com
Zweite Anfrage vom Microsoft Edge-Prozess auf
Client1.contoso.com
nachIISServer.contoso.com
. Diese Nachricht enthält das Serviceticket:3040 00:59:30.1853262 Client1.contoso.com iisserver.contoso.com HTTP HTTP:Request, GET /favicon.ico , Using GSS-API Authorization Authorization: Negotiate Authorization: Negotiate YIIHGwYGKwYBBQUCoIIHDzCCBwugMDAuBgkqhkiC9xIBAgIGCSqGSIb3EgECAgYKKwYBBAGCNwICHgYKKwYBBAGCNwICCqKCBtUEggbRYIIGzQYJKoZIhvcSAQICAQBugga8MIIGuKADAgEFoQMCAQ6iBwMFACAAAACjggTvYYIE6zCCBOegAwIBBaENGwtDT05UT1NPLkNPTaIoMCagAwIBAqEfMB0bBEhUVFAbF SpnegoToken: 0x1 NegTokenInit: ApReq: KRB_AP_REQ (14) Ticket: Realm: CONTOSO.COM, Sname: HTTP/iisserver.contoso.com
Nachricht vom IIS-Server zu
Client1.contoso.com
. Diese Meldung gibt an, dass der Benutzer authentifiziert und autorisiert ist:3044 00:59:30.1875763 iisserver.contoso.com Client1.contoso.com HTTP HTTP:Response, HTTP/1.1, Status: Not found, URL: / , Using GSS-API Authentication WWWAuthenticate: Negotiate oYG2MIGzoAMKAQChCwYJKoZIgvcSAQICooGeBIGbYIGYBgkqhkiG9xIBAgICAG+BiDCBhaADAgEFoQMCAQ+ieTB3oAMCARKicARuIF62dHj2/qKDRV5XjGKmyFl2/z6b9OHTCTKigAatXS1vZTVC1dMvtNniSN8GpXJspqNvEfbETSinF0ee7KLaprxNgTYwTrMVMnd95SoqBkm/FuY7WbTAuPvyRmUuBY3EKZEy NegotiateAuthorization: GssAPI: 0x1 NegTokenResp: ApRep: KRB_AP_REP (15)
Überprüfen Sie die Ticketinformationen auf dem Clientcomputer
Führen Sie an einer Eingabeaufforderung auf dem Clientcomputer den Befehl klist tickets
aus. Die Ausgabe sollte dem folgenden Auszug ähneln:
Client: John @ CONTOSO.COM
Server: HTTP/iisserver.contoso.com @ CONTOSO.COM
KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96
Ticket Flags 0x40a10000 -> forwardable renewable pre_authent name_canonicalize
Start Time: 11/28/2022 0:59:30 (local)
End Time: 11/28/2022 10:58:56 (local)
Renew Time: 12/5/2022 0:58:56 (local)
Session Key Type: AES-256-CTS-HMAC-SHA1-96
Cache Flags: 0
Kdc Called: DCA.contoso.com
Überprüfen Sie die Prüfereignisse auf dem Zielserver
Wechseln Sie in der Ereignisanzeige auf IISServer.contoso.com
zu den Windows-Protokollen> und dann zum Sicherheitsprotokoll, um Anmeldeereignisse zu überprüfen. Suchen Sie nach Instanzen der Ereignis-ID 4624 oder 4625, und überprüfen Sie die folgenden Felder:
- Schlüsselwörter: Audit-Erfolg oder Audit-Fehler
- Anmeldetyp: 3 (Netzwerkanmeldung)
- Sicherheits-ID im Feld "Neue Anmeldung ": Contoso\John
- Quellnetzwerkadresse: IP-Adresse des Clientcomputers
- Anmeldeprozess und Authentifizierungspaket: Kerberos
Der vollständige Text des Ereignisdatensatzes ähnelt dem folgenden Auszug:
Log Name: Security
Source: Microsoft-Windows-Security-Auditing
Date: 11/28/2022 12:59:30 AM
Event ID: 4624
Task Category: Logon
Level: Information
Keywords: Audit Success
User: N/A
Computer: IISServer.contoso.com
Description:
An account was successfully logged on.
Subject:
Security ID: NULL SID
Account Name: -
Account Domain: -
Logon ID: 0x0
Logon Information:
Logon Type: 3
Restricted Admin Mode: -
Virtual Account: No
Elevated Token: No
Impersonation Level: Impersonation
New Logon:
Security ID: CONTOSO\John
Account Name: John
Account Domain: CONTOSO.COM
Logon ID: 0x1B64449
Linked Logon ID: 0x0
Network Account Name: -
Network Account Domain: -
Logon GUID: {<GUID>}
Process Information:
Process ID: 0x0
Process Name: -
Network Information:
Workstation Name: -
Source Network Address: 192.168.2.101
Source Port: 52655
Detailed Authentication Information:
Logon Process: Kerberos
Authentication Package: Kerberos
Beheben Sie Probleme im Authentifizierungsworkflow
Überprüfen Sie die Netzwerkablaufverfolgungen, um zu beobachten, welcher Schritt fehlschlägt, damit Sie den Ort im Prozess einschränken können, in dem das Problem auftritt. Verwenden Sie diese Informationen, um zu ermitteln, welche Problembehandlungsmethoden Ihnen bei der Behebung des Problems helfen können.
Überprüfen der Netzwerkkonnektivität
Wenn es in der DNS- oder TCP-Kommunikation ein Problem gibt, überprüfen Sie die folgenden Interaktionen:
Stellen Sie sicher, dass Sie den Namen des Zielservers (
IISServer.contoso.com
) vom Clientcomputer (Client1.contoso.com
) auflösen können.Überprüfen Sie, ob der DNS-Server die IP-Adresse des Zielservers korrekt ermittelt. Öffnen Sie dazu ein PowerShell-Fenster, und führen Sie dann das folgende Cmdlet aus:
Resolve-DnsName -Name IISServer.contoso.com
Die Ausgabe dieses Cmdlets sollte dem folgenden Auszug ähneln:
Name Type TTL Section IPAddress ---- ---- --- ------- --------- IISServer.contoso.com A 1200 Answer 192.168.2.104
Stellen Sie sicher, dass die erforderlichen Netzwerkports zwischen dem Clientcomputer und dem Zielserver geöffnet sind. Führen Sie dazu das folgenden Cmdlet aus:
Test-NetConnection -Port 80 IISServer.contoso.com
Die Ausgabe dieses Cmdlets sollte dem folgenden Auszug ähneln:
ComputerName : IISServer.contoso.com RemoteAddress : 192.168.2.104 RemotePort : 80 InterfaceAlias : Ethernet 2 SourceAddress : 192.168.2.101 TcpTestSucceeded : True
Überprüfen der Ticketinformationen auf dem Clientcomputer
Öffnen Sie ein standardmäßiges Eingabeaufforderungsfenster (anstelle eines Administrator-Eingabeaufforderungsfensters) im Kontext des Benutzers, der versucht, auf die Website zuzugreifen.
Führen Sie die folgenden Befehle in der angegebenen Reihenfolge aus:
klist purge klist get http/iisserver.contoso.com
Die Ausgabe dieser Befehle sollte dem folgenden Auszug ähneln:
Current LogonId is 0:0xa8a98b A ticket to http/iisserver.contoso.com has been retrieved successfully. Cached Tickets: (2) #0> Client: John @ CONTOSO.COM Server: krbtgt/CONTOSO.COM @ CONTOSO.COM KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96 Ticket Flags 0x40e10000 -> forwardable renewable initial pre_authent name_canonicalize Start Time: 11/28/2022 1:28:11 (local) End Time: 11/28/2022 11:28:11 (local) Renew Time: 12/5/2022 1:28:11 (local) Session Key Type: AES-256-CTS-HMAC-SHA1-96 Cache Flags: 0x1 -> PRIMARY Kdc Called: DCA.contoso.com #1> Client: John @ CONTOSO.COM Server: http/iisserver.contoso.com @ CONTOSO.COM KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96 Ticket Flags 0x40a10000 -> forwardable renewable pre_authent name_canonicalize Start Time: 11/28/2022 1:28:11 (local) End Time: 11/28/2022 11:28:11 (local) Renew Time: 12/5/2022 1:28:11 (local) Session Key Type: AES-256-CTS-HMAC-SHA1-96 Cache Flags: 0 Kdc Called: DCA.contoso.com
Dieser Auszug gibt an, dass das Ticket erfolgreich abgerufen wurde. Die Details des Tickets werden im Abschnitt "Zwischengespeicherte Tickets" als "#1>" bezeichnet.
Überprüfen Sie, ob der IIS-Webdienst auf dem IIS-Server ausgeführt wird, indem Sie die Standardanmeldeinformationen verwenden.
Öffnen Sie ein standardmäßiges PowerShell-Eingabeaufforderungsfenster (anstelle eines administrativen PowerShell-Eingabeaufforderungsfensters) im Kontext des Benutzers, der versucht, auf die Website zuzugreifen:
invoke-webrequest -Uri http://IIsserver.contoso.com -UseDefaultCredentials
Die Ausgabe dieser Befehle sollte dem folgenden Auszug ähneln:
StatusCode : 200
StatusDescription : OK
Content : <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" cont...
RawContent : HTTP/1.1 200 OK
Persistent-Auth: true
Accept-Ranges: bytes
Content-Length: 703
Content-Type: text/html
Date: Mon, 28 Nov 2022 09:31:40 GMT
ETag: "3275ea8a1d91:0"
Last-Modified: Fri, 25 Nov 2022...
Überprüfen des Sicherheitsereignisprotokolls auf dem Zielserver
Wechseln Sie in der Ereignisanzeige auf dem Zielserver zu den Windows-Protokollen> und öffnen Sie das Sicherheitsprotokoll. Suchen Sie nach Instanzen der Ereignis-ID 4624 (Überwachungserfolg) oder 4625 (Überwachungsfehler).
Überprüfen, ob andere Dienste ordnungsgemäß funktionieren
Führen Sie die folgenden Schritte aus, um zu überprüfen, ob andere Dienste auf dem Zielserver die Kerberos-Authentifizierung verarbeiten können:
Erstellen Sie auf dem Zielserver eine Dateifreigabe, oder identifizieren Sie eine vorhandene Dateifreigabe, die zum Testen verwendet werden soll. Stellen Sie sicher, dass Sie (in der Rolle von "John") die Leseberechtigung für den Ordner haben.
Melden Sie sich auf dem Clientcomputer an (als Benutzer "John"), und öffnen Sie dann Den Windows-Explorer.
Geben Sie in der Adressleiste \\IISServer.contoso.com \Software$ ein.
Öffnen Sie auf dem Zielserver die Ereignisanzeige, und überprüfen Sie dann die Sicherheitsereignisse. Überprüfen Sie, ob es neue Ereignis-ID 4624-Ereignisse oder Ereignis-ID 4625-Ereignisse gibt.
Führen Sie auf dem Clientcomputer den
klist tickets
Befehl an der Eingabeaufforderung aus. Die Befehlsausgabe sollte ein Serviceticket fürCIFS/IISServer.contoso.com
enthalten, wie im folgenden Auszug dargestellt:#1> Client: John @ CONTOSO.COM Server: cifs/iisserver.contoso.com @ CONTOSO.COM KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96 Ticket Flags 0x40a10000 -> forwardable renewable pre_authent name_canonicalize Start Time: 11/28/2022 1:40:22 (local) End Time: 11/28/2022 11:28:11 (local) Renew Time: 12/5/2022 1:28:11 (local) Session Key Type: AES-256-CTS-HMAC-SHA1-96 Cache Flags: 0 Kdc Called: DCA.contoso.com