So registriert ein Dienst seine SPNs

Bevor ein Client einen SPN zum Authentifizieren eines instance eines Diensts verwenden kann, muss der SPN für das Benutzer- oder Computerkonto registriert werden, das der Dienst instance zum Anmelden verwendet. In der Regel erfolgt die SPN-Registrierung durch ein Dienstinstallationsprogramm, das mit Domänenadministratorberechtigungen ausgeführt wird.

Das Dienstinstallationsprogramm, das einen Dienst instance auf einem Hostcomputer installiert, führt in der Regel das folgende Verfahren aus.

So registrieren Sie SPNs für einen Dienst instance

  1. Rufen Sie die DsGetSpn-Funktion auf, um einen oder mehrere eindeutige SPNs für den Dienst instance zu erstellen. Weitere Informationen finden Sie unter Namensformate für eindeutige SPNs.
  2. Rufen Sie die DsWriteAccountSpn-Funktion auf, um die Namen im Anmeldekonto des Diensts zu registrieren.

DsWriteAccountSpn registriert SPNs als Eigenschaft eines Benutzer- oder Computerkontoobjekts im Verzeichnis. Benutzer- und Computerobjekte verfügen über ein servicePrincipalName-Attribut , bei dem es sich um ein mehrwertiges Attribut zum Speichern aller SPNs handelt, die einem Benutzer- oder Computerkonto zugeordnet sind. Wenn der Dienst unter einem Benutzerkonto ausgeführt wird, werden die SPNs im attribut servicePrincipalName dieses Kontos gespeichert. Wenn der Dienst im LocalSystem-Konto ausgeführt wird, werden die SPNs im attribut servicePrincipalName des Kontos des Hostcomputers des Diensts gespeichert. Der DsWriteAccountSpn-Aufrufer muss den distinguished Name des Kontoobjekts angeben, unter dem die SPNs gespeichert werden.

Um sicherzustellen, dass registrierte SPNs sicher sind, kann das Attribut servicePrincipalName nicht direkt geschrieben werden. Sie kann nur durch Aufrufen von DsWriteAccountSpn geschrieben werden. Der Aufrufer muss Schreibzugriff auf das attribut servicePrincipalName des Zielkontos haben. In der Regel wird Schreibzugriff standardmäßig nur Domänenadministratoren gewährt. Es gibt jedoch einen Sonderfall, in dem das System einem Dienst, der unter dem LocalSystem-Konto ausgeführt wird, erlaubt, seine eigenen SPNs auf dem Computerkonto des Diensthosts zu registrieren. In diesem Fall muss der SPN, der geschrieben wird, das Format "<Dienstklasse>/<Host>" und "<host>" den DNS-Namen des lokalen Computers haben.

DsWriteAccountSpn kann auch SPNs aus einem Konto entfernen. Ein Vorgangsparameter gibt an, ob die SPNs dem Konto hinzugefügt, aus dem Konto entfernt oder zum vollständigen Ersetzen aller aktuellen SPNs für das Konto verwendet werden sollen. Wenn ein Dienst instance deinstalliert wird, entfernen Sie alle SPNs, die für diesen instance registriert sind.

Weitere Informationen und ein Codebeispiel zum Registrieren oder Aufheben der Registrierung der SPNs eines Diensts finden Sie unter Registrieren der SPNs für einen Dienst.

Hostbasierte Dienste, die das einfache SPN-Format "<Dienstklasse>/<Host>" verwenden, haben die Möglichkeit, die DsServerRegisterSpn-Funktion zu verwenden, die SPNs für einen Dienst instance erstellt und registriert. DsServerRegisterSpn ist eine Hilfsfunktion, die DsGetSpn und DsWriteAccountSpn aufruft.

Weitere Informationen finden Sie unter Dienstanmeldungskonten.