In questo documento vengono descritte le nozioni di base dell'autenticazione Kerberos e la procedura per la risoluzione dei problemi relativi a tale autenticazione in Secure Web Appliance (SWA).
Cisco raccomanda la conoscenza dei seguenti argomenti:
Il documento può essere consultato per tutte le versioni software o hardware.
Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi.
Immagine: Flusso di esempio della rete Kerberos
Di seguito sono riportati i passaggi di base per l'autenticazione in un ambiente kerberizzato:
1. Il cliente richiede un TGT al KDC.
2. Il KDC verifica le credenziali utente del computer client e restituisce un TGT e una chiave di sessione crittografati.
3. Il TGT è crittografato con la chiave segreta TGS.
4. Il client memorizza il TGT e ne richiede automaticamente uno nuovo alla scadenza.
Per accedere a un servizio o a una risorsa:
1. Il client invia il TGT al TGS insieme all'SPN della risorsa desiderata.
2. Il KDC verifica il TGT e controlla i diritti di accesso al computer client dell'utente.
3. Il TGS invia al client una chiave di sessione specifica del servizio.
4. Il client fornisce la chiave di sessione al servizio per provare l'accesso e il servizio concede l'accesso.

1. Il Cliente richiede l'accesso a www.google.com tramite SWA.
2. L'SWA risponde con stato HTTP 407, chiedendo l'autenticazione.
3. Il client richiede un ticket di servizio dal server AD per il servizio HTTP/SWA.domain.com utilizzando il TGT ottenuto durante l'aggiunta al dominio.
4. Il server AD convalida il client ed emette un ticket di assistenza, se viene eseguito correttamente e viene individuato il nome SPN dell'SWA, passa alla fase successiva.
5. Il Cliente invia il biglietto all'SWA.
6. L'SWA decripta il biglietto e verifica l'autenticazione.
7. Se l'autenticazione ha esito positivo, SWA verifica le regole.
8. L'SWA invia una risposta HTTP 200 OK al client se la transazione è consentita.
Un SPN identifica in modo univoco un'istanza del servizio nell'autenticazione Kerberos. Collega un'istanza del servizio a un account del servizio, consentendo ai client di richiedere l'autenticazione per il servizio senza il nome dell'account. Ogni account in un'implementazione KDC, ad esempio AD o OpenLDAP, dispone di un SPN. Sebbene l'SPN identifichi in modo rigoroso un servizio, talvolta viene utilizzato erroneamente per fare riferimento al nome del client (UPN) in scenari in cui il servizio funge anche da client.
In Kerberos, un SPN identifica in modo univoco un'istanza del servizio all'interno di una rete. Consente ai client di richiedere l'autenticazione per un servizio specifico. L'SPN collega l'istanza del servizio al relativo account, consentendo a Kerberos di autenticare e autorizzare correttamente le richieste di accesso a tale servizio.
1. Creare un nuovo account utente o scegliere un account utente esistente da utilizzare.
2. Registrare l'SPN da utilizzare con l'account utente scelto.
3. Verificare che non siano registrati SPN duplicati.
Suggerimento: Quali sono le differenze tra Kerberos con SWA dietro il load balancer o un Traffic Manager/Traffic Shaper?
Le procedure ottimali per l'implementazione di Kerberos sono reperibili:
Questo è un elenco di utili comandi setspn per la gestione degli SPN in un ambiente Kerberos. Questi comandi vengono in genere eseguiti da un'interfaccia della riga di comando con privilegi amministrativi in un ambiente Windows.
| Elenca SPN per un account specifico: |
Elenca tutti gli SPN registrati per l'account specificato. |
| Aggiungere un SPN a un account: |
Aggiunge l'SPN specificato all'account specificato. |
| Eliminare un SPN da un account: |
Rimuove l'SPN specificato dall'account specificato. |
| Verificare se un SPN è già registrato: |
Controlla se l'SPN specificato è già registrato nel dominio. |
| Elenca tutti gli SPN nel dominio |
Elenca tutti gli SPN nel dominio. |
| Impostare un SPN per un account computer: |
Aggiunge un SPN a un account computer, verificando che non vi siano voci duplicate. |
| Reimposta SPN per un account specifico: |
Reimposta gli SPN per l'account specificato, contribuendo a risolvere i problemi SPN duplicati. |
Gli esempi forniti dimostrano l'utilizzo:
Verificare se l'SPN è già associato a un account utente:
setspn -q <SPN>
setspn -q http/proxyha.localdomain


setspn -s <SPN> <User/computer account>
Ad esempio:
setspn -s http/proxyha.localdomain vrrpserviceuser

setspn -d <SPN> <User/computer account>
Ad esempio:
setspn -d http/proxyha.localdomain pod1234-wsa0

Verificare che non vi siano SPN duplicati per il nome host virtuale HA, in quanto gli errori possono verificarsi in seguito.
setspn –x
Di conseguenza, il ticket del servizio Kerberos non viene fornito al client e l'autenticazione Kerberos non riesce.

Attenzione: Se vengono trovati duplicati, rimuovere quelli che eseguono il comando setspn -d.
setspn –l <User/Computer account>
Ad esempio:
setspn –l vrrpserviceuser

Informazioni richieste dal supporto Cisco per la risoluzione dei problemi di autenticazione Kerberos:
server IP address = %k, Client IP address= %a, Auth-Mech = %m, Auth_Type= %m, Auth_group= %g, Authenticated_Username= %A, Date= %L, Transaction_ID= %I Auth response = %:<a, Auth total = %:>a;

Un caso di errore comune è costituito da richieste Web con errore "Server non trovato nel database Kerberos":
curl -vx proxyha.local:3128 --proxy-negotiate -u: http://www.cisco.com/
* About to connect() to proxy proxyha.localdomain port 3128 (#0)
* Connected to proxyha.local (10.8.96.30) port 3128 (#0)
< HTTP/1.1 407 Proxy Authentication Required
< Via: 1.1 pod1234-wsa02.local:80 (Cisco-SWA/10.1.2-003)
< Content-Type: text/html
gss_init_sec_context() failed: : Server not found in Kerberos database
< Proxy-Authenticate: Negotiate
< Connection: close
* HTTP/1.1 proxy connection set close!
In questo caso, l'errore indica che il nome dell'entità servizio corrispondente al valore dell'indirizzo proxy proxyha.local non è registrato nel server Active Directory. Per risolvere il problema, è necessario verificare che l'SPN http/proxyha.local sia registrato nel controller di dominio Active Directory e aggiunto a un account di servizio appropriato.
| Revisione | Data di pubblicazione | Commenti |
|---|---|---|
3.0 |
22-Oct-2026
|
Controllo ortografico, grammaticale, spaziatura e righe orizzontali inserite aggiornate per separare le sezioni in modo da garantire leggibilità, URL fissi. |
2.0 |
01-Apr-2025
|
È stato aggiunto testo alternativo, formattazione e punteggiatura fissa, grammatica. |
1.0 |
24-Mar-2025
|
Versione iniziale |