Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo usa una distribuzione ipotetica di client e server per illustrare gli approcci di risoluzione dei problemi di autenticazione Kerberos.
Ambiente e configurazione
L'utente "John" appartiene al
contoso.comdominio.Tutti i server DNS (Domain Name System) del dominio sono controller di dominio.
John è connesso a un computer client configurato come segue:
Nome e dominio:
Client1.contoso.comSistema operativo: Windows 11
Browser: Microsoft Edge
Applicazione di monitoraggio: Monitoraggio di rete (installato da Microsoft Network Monitor)
Configurazione delle opzioni Internet: tutti i
contoso.comsiti appartengono all'area Intranet locale
Nel computer client John si connette a un server di destinazione configurato come segue:
Nome e dominio:
IISServer.contoso.comSistema operativo: Windows Server 2019
Servizio di destinazione: sito Web eseguito in Internet Information Services (IIS)
Account del servizio di destinazione: l'account del computer (il servizio viene eseguito nel contesto dell'account
IISServer.contoso.com)Porta del servizio di destinazione: porta TCP 80
Configurazione dell'autenticazione (configurata in Gestione Internet Information Services):
L'autenticazione di Windows è abilitata.
L'elenco dei provider di autenticazione abilitati include Negotiate, come illustrato nello screenshot seguente:
Configurazione di controllo dell'accesso: il controllo accesso riuscito e il controllo degli errori di accesso sono entrambi abilitati.
Annotazioni
Per impostazione predefinita, per tutti i sistemi operativi Windows Server è abilitato il controllo accesso riuscito e non riuscito. Per verificare questa impostazione, aprire una finestra del prompt dei comandi amministrativa e quindi eseguire il comando seguente:
auditpol /get /Subcategory:"logon"Se l'impostazione è abilitata, questo comando genera l'output seguente:
System audit policy Category/Subcategory Setting Logon/Logoff Logon Success and FailureSe questo risultato non viene visualizzato, eseguire il comando seguente per abilitare il log di audit delle operazioni riuscite e non riuscite:
auditpol /set /subcategory:"Logon" /Success:enable /Failure:enable
Flusso di autenticazione previsto
Il diagramma seguente illustra la sequenza di messaggi di richiesta e risposta Kerberos e i percorsi di tali messaggi nell'ambiente descritto nella sezione precedente.
Il processo viene avviato quando l'utente John, che ha eseguito l'accesso al computer Client1.contoso.comclient, apre un browser Microsoft Edge e si connette a IISServer.contoso.com.
Il passaggio 1 si verifica nel computer client e include i passaggi seguenti:
- Il servizio resolver DNS memorizza nella cache
IISServer.contoso.comper verificare se queste informazioni sono già presenti. - Il servizio resolver DNS controlla il file HOSTS (C:\Windows\System32\drivers\etc\Hosts) per qualsiasi mapping di
IISServer.contoso.com. - Il servizio client DNS invia una query DNS al server DNS preferito (come configurato nelle impostazioni di configurazione IP).
Il passaggio 2 si verifica nel server DNS (controller di dominio) e include i passaggi seguenti:
- Il servizio server DNS controlla le zone configurate, individua il record Host "A" e risolve
IISServer.contoso.comnell'indirizzo IP192.168.2.104. - Il server DNS restituisce l'indirizzo IP al computer client.
Il passaggio 3 si verifica nel computer client e include i passaggi seguenti:
- Il computer client esegue un handshake a tre vie TCP con
IISServer.contoso.comsulla porta TCP 80. - Il computer client invia una richiesta HTTP anonima a
IISServer.contoso.com.
Il passaggio 4 si verifica nel server di destinazione e include i passaggi seguenti:
- Il servizio Web (in esecuzione come
IISServer.contoso.com) riceve la richiesta daClient1.contoso.com. - Il servizio Web invia un messaggio di risposta a
Client1.contoso.comche contiene una risposta di richiesta "HTTP 401". il messaggio specifica Negotiate come provider di autenticazione preferito e NTLM come provider di autenticazione secondario.
Il passaggio 5 si verifica nel computer client e include i passaggi seguenti:
- Il computer client riceve il messaggio di risposta della richiesta di verifica da
IISServer.contoso.com. - Il processo di Microsoft Edge verifica che
IISServer.contoso.comappartiene all'area Intranet locale. Pertanto, il processo di autenticazione deve usare Kerberos anziché NTLM. - Il processo di Microsoft Edge chiama LSASS.exe per cercare un ticket di servizio per
IISServer.contoso.com. - In questo caso, il computer client non dispone di un ticket di servizio appropriato. Il processo di Microsoft Edge invia una richiesta al Centro di distribuzione Kerberos (KDC) per ottenere un ticket.
Il passaggio 6 si verifica nel controller di dominio e include i passaggi seguenti:
- Il controller di dominio (servizio KDC) riceve la richiesta da
Client1.contoso.come cerca il servizio che usa il nome SPNHTTP\IISServer.contoso.com(oHOST\IISServer.contoso.com). - Il controller di dominio identifica il servizio richiesto come servizio Web eseguito nel contesto di
IISServer.contoso.com. - Il controller di dominio invia una risposta al computer client che include un ticket di servizio per il
IISServer.contoso.comservizio Web.
Il passaggio 7 si verifica nel controller di dominio e include i passaggi seguenti:
- Il processo di Microsoft Edge crea un messaggio AP (Kerberos Application Protocol) che include il ticket di servizio.
- Il processo di Microsoft Edge invia il messaggio AP a
IISServer.contoso.comin risposta al messaggio di risposta di richiesta "HTTP 401".
Il passaggio 8 si verifica nel server Web e include i passaggi seguenti:
- Il processo IIS interroga il processo locale LSASS.exe.
- Il processoLSASS.exe decrittografa il ticket e quindi crea un token per l'utente che include un SessionID e le appartenenze ai gruppi di John.
- Il processo LSASS.exe restituisce un handle per il token al processo IIS.
- Il processo IIS controlla le informazioni sul gruppo nel token per assicurarsi che John disponga dell'autorizzazione per accedere alla pagina richiesta.
- Il processo IIS invia la pagina richiesta al browser.
Usare Monitoraggio di rete per registrare un test di autenticazione
Usare la procedura seguente per raccogliere dati di traccia in un ambiente simile a quello descritto nella sezione Ambiente e configurazione . Durante questo test, i componenti di sistema devono interagire nel modo descritto nella sezione Flusso di autenticazione previsto .
Annotazioni
Per usare le procedure descritte in questa sezione, è necessario appartenere al gruppo Administrators locale:
- Sul computer client, aprire una finestra del prompt dei comandi come amministratore e quindi eseguire
ipconfig /flushdns. - Aprire Monitoraggio rete e avviare la registrazione.
- Aprire Microsoft Edge. Nella barra degli indirizzi, immettere
http://iisserver.contoso.com. - Al termine dell'operazione di Microsoft Edge, arrestare la registrazione in Monitoraggio di rete.
Esaminare i dati generati dal test di autenticazione
Il test di autenticazione genera le informazioni seguenti:
- Dati di traccia del monitoraggio della rete
- Dati dei ticket
- Controlla i dati degli eventi di successo di verifica e degli errori di verifica per gli eventi di autenticazione
Nella parte restante di questa sezione vengono fornite informazioni più dettagliate sui dati generati dal flusso di autenticazione.
Esaminare i dati di traccia per eventi significativi
Nei dati di traccia cercare informazioni simili agli estratti di traccia seguenti:
Query DNS al controller di dominio per il record "A" host per
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 InternetRisposta DNS dal servizio DNS nel controller di dominio:
3006 00:59:30.0743438 DCA.contoso.com Client1.contoso.com DNS DNS:QueryId = 0x666A, QUERY (Standard query), Response - Success, 192.168.2.104Richiesta anonima dal processo
Client1.contoso.comdi Microsoft Edge alIISServer.contoso.comserver Web IIS:3027 00:59:30.1609409 Client1.contoso.com iisserver.contoso.com HTTP HTTP:Request, GET / Host: iisserver.contoso.comMessaggio di risposta della richiesta di verifica HTTP 401 da
IISServer.contoso.comaClient1.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: NTLMRichiesta di ticket di servizio da
Client1.contoso.comal controllerDCA.contoso.comdi dominio per il servizio che usaHTTP/iisserver.contoso.comcome nome SPN (noto anche come messaggio di richiesta TGS):3034 00:59:30.1834048 Client1.contoso.com DCA.contoso.com KerberosV5 KerberosV5:TGS Request Realm: CONTOSO.COM Sname: HTTP/iisserver.contoso.comRisposta del ticket di servizio da
DCA.contoso.com, che comprende il ticket di servizio perIISServer.contoso.com(conosciuto anche come messaggio di risposta TGS):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.comSeconda richiesta dal processo di Microsoft Edge su
Client1.contoso.comaIISServer.contoso.com. Questo messaggio include il ticket di servizio: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.comMessaggio dal server IIS a
Client1.contoso.com. Questo messaggio indica che l'utente è autenticato e autorizzato: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)
Esaminare le informazioni sul ticket sul computer del client
Al prompt dei comandi nel computer client eseguire klist tickets. L'output dovrebbe essere simile al seguente estratto:
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
Esaminare gli eventi di controllo nel server di destinazione
Nel Visualizzatore eventi su IISServer.contoso.com, vai ai Registri di Windows>Sicurezza per esaminare gli eventi di accesso. Cercare le istanze dell'ID evento 4624 o 4625 e controllare i campi seguenti:
- Parole chiave: Controlloesito positivo o errore di controllo
- Tipo di accesso: 3 (accesso di rete)
- ID di sicurezza nel campo Nuovo accesso: Contoso\John
- Indirizzo di rete di origine: indirizzo IP del computer client
- Processo di accesso e pacchetto di autenticazione: Kerberos
Il testo completo del record dell'evento è simile al seguente estratto:
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
Risolvere i problemi relativi al flusso di lavoro di autenticazione
Esaminare le tracce di rete per osservare quale passaggio ha esito negativo in modo da limitare la posizione nel processo in cui si verifica il problema. Usare queste informazioni per determinare quali metodi di risoluzione dei problemi consentono di risolvere il problema.
Verificare la connettività di rete
Se sembra esserci un problema nelle comunicazioni DNS o TCP, controllare le interazioni seguenti:
Verificare che sia possibile risolvere il nome del server di destinazione (
IISServer.contoso.com) dal computer client (Client1.contoso.com).Verificare che il server DNS risolva correttamente l'indirizzo IP del server di destinazione. A tale scopo, aprire una finestra di PowerShell e quindi eseguire il cmdlet seguente:
Resolve-DnsName -Name IISServer.contoso.comL'output di questo cmdlet dovrebbe essere simile al seguente estratto:
Name Type TTL Section IPAddress ---- ---- --- ------- --------- IISServer.contoso.com A 1200 Answer 192.168.2.104Verificare che le porte di rete necessarie siano aperte tra il computer client e il server di destinazione. A tale scopo, eseguire il cmdlet seguente:
Test-NetConnection -Port 80 IISServer.contoso.comL'output di questo cmdlet dovrebbe essere simile al seguente estratto:
ComputerName : IISServer.contoso.com RemoteAddress : 192.168.2.104 RemotePort : 80 InterfaceAlias : Ethernet 2 SourceAddress : 192.168.2.101 TcpTestSucceeded : True
Verificare le informazioni sul ticket nel computer client
Aprire una finestra del prompt dei comandi standard (anziché una finestra del prompt dei comandi amministrativo) nel contesto dell'utente che sta tentando di accedere al sito web.
Eseguire i comandi seguenti, nell'ordine specificato:
klist purge klist get http/iisserver.contoso.comL'output di questi comandi dovrebbe essere simile al seguente estratto:
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.comQuesto estratto indica che il ticket è stato recuperato correttamente. I dettagli del ticket sono etichettati "#1>" nella sezione Ticket memorizzati nella cache .
Verificare che il servizio Web IIS sia in esecuzione nel server IIS usando le credenziali predefinite
Aprire una finestra del prompt di PowerShell standard (anziché una finestra di prompt di PowerShell amministrativa) nel contesto dell'utente che sta tentando di accedere al sito Web:
invoke-webrequest -Uri http://IIsserver.contoso.com -UseDefaultCredentials
L'output di questi comandi dovrebbe essere simile al seguente estratto:
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...
Esaminare il registro eventi di sicurezza nel server di destinazione
Nel Visualizzatore eventi sul server di destinazione, vai al log Registri di Windows>Sicurezza. Cercare istanze dell'ID evento 4624 (esito positivo del controllo) o 4625 (errore di controllo).
Verificare che altri servizi funzionino correttamente
Per verificare che altri servizi nel server di destinazione possano elaborare l'autenticazione Kerberos, seguire questa procedura:
Nel server di destinazione creare una condivisione file o identificare una condivisione file esistente da usare per il test. Assicurati che tu, nel ruolo di "John", abbia il permesso di lettura sulla cartella.
Sul computer client, accedi (come utente "John") e quindi apri Esplora File.
Nella barra degli indirizzi immettere \\IISServer.contoso.com \Software$.
Nel server di destinazione aprire Visualizzatore eventi e quindi esaminare gli eventi di sicurezza. Verificare che siano presenti nuovi eventi con ID evento 4624 o ID evento 4625.
Sul computer client, eseguire il comando
klist ticketsal prompt dei comandi. L'output del comando deve includere un ticket di servizio perCIFS/IISServer.contoso.com, come illustrato nell'estratto seguente:#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