Så här skriver en tjänst sina SPN:er
En tjänst kan använda två funktioner för att skapa sina SPN: DsGetSpn är en allmän funktion för att skapa SPN och DsServerRegisterSpn är en specialiserad funktion för att skapa och registrera enkla SPN för en värdbaserad tjänst.
Ett tjänstinstallationsprogram använder vanligtvis funktionen DsGetSpn för att skapa SPN:er, som sedan registreras på tjänstens inloggningskonto med hjälp av funktionen DsWriteAccountSpn. DsGetSpn kan utföra följande funktioner.
- Skapa ett enkelt SPN med formatet "<service class>/<host>" för en värdbaserad tjänst.
- Skapa ett komplext SPN som innehåller komponenten "<tjänstnamn>" som används av replikerbara tjänster eller komponenten "<port>" som skiljer flera instanser av en tjänst på en enda värd.
- Skapa ett enda SPN med komponenten "<värd>" inställd på antingen namnet på en angiven värd eller namnet på den lokala datorn som standard.
- Skapa en matris med SPN:er för flera tjänstinstanser som ska köras på flera värdar i hela skogen. Varje SPN anger namnet på den värd som tillhör en tjänstinstans.
- Skapa en matris med SPN för flera tjänstinstanser som ska köras på samma värd. Varje SPN angiver namnet på värden och ett portnummer för en tjänstinstans.
Matrisen med namn som returneras av DsGetSpn måste frigöras genom att anropa funktionen DsFreeSpnArray.
Tänk på att DsGetSpn, DsWriteAccountSpnoch DsServerRegisterSpn funktioner inte verifierar att SPN är unika. Eftersom ömsesidig autentisering misslyckas om en klient visar ett SPN som inte är unikt kontrollerar du unikheten innan du registrerar ett SPN. Det gör du genom att söka i den globala katalogen (GC) efter servicePrincipalName attribut som matchar ditt SPN. Mer information om hur du söker i GC finns i Söka i den globala katalogen.