Om KERBEROS authenticatie mogelijk te maken, moet er een Service Principle Name (SPN) worden gedefinieerd. Een SPN bestaat uit een aantal componenten, namelijk: een service class (bijvoorbeeld: HTTP, MSSQLSvc of MSCRMSandboxService), een hostnaam en een poortnummer.
Het authenticatie proces verloopt als volgt. Een client vraagt een service ticket aan de Key Distribution Centre (KDC) van de domain controller. Deze zoekt dan de SPN op in de directory. Als de SPN wordt gevonden maakt de KDC een session key aan en versleuteld deze met het wachtwoord van het service account. Vervolgens verstuurd de KDC de service ticket met daarin de session key naar de client. De client verstuurd de service ticket naar de service. De service, die onder het service account draait waaraan de SPN is gekoppeld, decodeert de session key met haar eigen wachtwoord. Zodra het decoderen succesvol is verlopen is de authenticatie gelukt.
Met het volgende commando registreer je een SQL Service Principle Name in Active Directory.
SetSPN -A MSSQLSvc/HOSTNAME:1433 DOMAINservice-account SetSPN -A MSSQLSvc/HOSTNAME.fqdn:1433 DOMAINservice-account
Met het onderstaande commando kun je de geregistreerde SPN opvragen.
SetSPN -L DOMAINservice-account
Check if SQL-connection is authenticated with KERBEROS.
SELECT auth_scheme FROM sys.dm_exec_connections where session_id=@@spid