Un nom principal de service (SPN) est un objet par lequel un client identifie de manière unique une instance d’un service.
Si vous installez plusieurs instances d’un service sur des ordinateurs à travers une forêt, chaque instance doit avoir son propre SPN.
Une instance de service donnée peut avoir plusieurs noms SPN, qui permette alors l’authentification pour les clients.
Un SPN comprend toujours le nom de l’ordinateur hôte sur lequel l’instance de service est initiée, donc une instance de service peut enregistrer un SPN pour chaque nom ou pseudonyme de son hôte.
Les SPN se presentent sous la forme
<service class>/<host>:<port>/<service name>
Exemple pour un DC
DC001 DNS/DC001.Domain.lan
DC001 HOST/DC001/DOMAIN
DC001 HOST/DC001.Domain.lan/DOMAIN
DC001 exchangeAB/DC001
DC001 exchangeAB/DC001.Domain.lan
DC001 HOST/DC001.Domain.lan/Domain.lan
DC001 GC/DC001.Domain.lan/Domain.lan
DC001 ldap/DC001/DOMAIN
DC001 ldap/7fe131df-ca50-4b8a-95b9-8f5ff16e0bc1._msdcs.Domain..
DC001 ldap/DC001.Domain.lan/DOMAIN
DC001 ldap/DC001
DC001 ldap/DC001.Domain.lan
DC001 ldap/DC001.Domain.lan/ForestDnsZones.Domain.la
DC001 ldap/DC001.Domain.lan/DomainDnsZones.Domain.la
DC001 ldap/DC001.Domain.lan/Domain.lan
DC001 TERMSRV/DC001.Domain.lan
DC001 TERMSRV/DC001
DC001 Dfsr-12F9A27C-BF97-4787-9364-D31B6C55EB04/DC001.domai..
DC001 NtFrs-88f5d2bd-b646-11d2-a6d3-00c04fc9b232/DC001.dom..
DC001 E3514235-4B06-11D1-AB04-00C04FC2DCD2/7fe131df-ca50-4b8a-..
DC001 RestrictedKrbHost/DC001
DC001 HOST/DC001
Avant que le service d’authentification Kerberos puisse utiliser un SPN pour authentifier un service, les SPN doivent être inscrits sur l’objet compte pour se connecter.
Un SPN donné peut être enregistré sur un seul compte.
L’installateur compose alors le SPN et les écrit comme une propriété de l’objet de compte dans “Active Directory Domain Services” (ADDS).
S’il y a un changement instance de service ou nom d’ordinateur, les SPN doivent être ré-enregistrés sur le nouveau compte.
Il est donc important de lister et vérifier les objets SPN du domaine afin de valider le bon fonctionnement du service .
Pour lister les SPN , vous pouvez utiliser soit le snapin Quest ActiveRoles ADManagement ou utiliser le module Windows 2008 activedirectory.
Via le Snapin Quest ActiveRoles ADManagement
Add-PSSnapin Quest.ActiveRoles.ADManagement
$obj = Get-QADObject * -ldapFilter “(servicePrincipalName=*)” -IncludedProperties servicePrincipalName -sizeLimit 0 | select name,servicePrincipalName
$spnEntries=@()
$obj | Foreach {
$Servername = $_.name
$_.serviceprincipalname | Foreach {
$serverSPN=”” | select Name, ServicePrincipalName
$serverSPN.name = $Servername
$serverSPN.serviceprincipalname =$_
$spnEntries+=$serverSPN
}
}
$spnEntries
Via le module Active directory
Import-Module activedirectory
$obj =Get-ADObject -LDAPFilter “(servicePrincipalName=*)” -Properties servicePrincipalName -ResultSetSize $null | select name, servicePrincipalName$spnEntries=@()
$obj | Foreach {
$Servername = $_.name
$_.serviceprincipalname | foreach {
$serverSPN=”” | select Name, ServicePrincipalName
$serverSPN.name = $Servername
$serverSPN.serviceprincipalname =$_
$spnEntries+=$serverSPN
}
}
$spnEntries