Utilizzo dell'autenticazione Kerberos con SQL Server
Per utilizzare l'autenticazione Kerberos con SQL Server è necessario che si verifichino entrambe le seguenti condizioni:
I computer client e server devono fare parte dello stesso dominio Windows o di domini trusted.
Un nome dell'entità servizio (SPN, Service Principal Name) deve essere stato registrato in Active Directory, che presuppone il ruolo del centro di distribuzione chiavi (KDC) in un dominio Windows. Una volta registrato, il nome SPN esegue il mapping all'account Windows che ha avviato il servizio dell'istanza di SQL Server. Se la registrazione del nome SPN non è stata eseguita o ha avuto esito negativo, il livello di protezione di Windows non è in grado di determinare l'account associato al nome SPN e l'autenticazione Kerberos non verrà utilizzata.
Nota
Se il server non è in grado di eseguire la registrazione automatica del nome SPN, è necessario effettuare l'operazione manualmente.
È possibile verificare che una connessione utilizzi Kerberos eseguendo una query sulla vista a gestione dinamica sys.dm_exec_connections. Eseguire la query seguente e controllare il valore della colonna auth_scheme. Se l'autenticazione Kerberos è attivata, tale valore corrisponderà a "KERBEROS".
SELECT auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@spid ;
Ruolo del nome SPN nell'autenticazione
Quando un'applicazione apre una connessione e utilizza l'autenticazione di Windows, SQL Server Native Client passa il nome del server SQL Server, il nome di istanza, ed eventualmente un nome SPN. Se passato dalla connessione, il nome SPN viene utilizzato senza alcuna modifica.
Se non viene passato un nome SPN, viene costruito un nome SPN predefinito in base al protocollo utilizzato, al nome del server e al nome di istanza.
In entrambi gli scenari indicati in precedenza, il nome SPN viene inviato al centro di distribuzione chiavi per ottenere un token di protezione per l'autenticazione della connessione. Se non è possibile ottenere un token di protezione, l'autenticazione utilizza NTLM.