DsWriteAccountSpnA-Funktion (ntdsapi.h)

Die DsWriteAccountSpn-Funktion schreibt ein Array von Dienstprinzipalnamen (SPNs) in das servicePrincipalName-Attribut eines angegebenen Benutzer- oder Computerkontoobjekts in Active Directory Domain Services. Die Funktion kann die Registrierung der SPNs entweder registrieren oder aufheben.

Syntax

NTDSAPI DWORD DsWriteAccountSpnA(
  [in] HANDLE          hDS,
  [in] DS_SPN_WRITE_OP Operation,
  [in] LPCSTR          pszAccount,
  [in] DWORD           cSpn,
  [in] LPCSTR          *rpszSpn
);

Parameter

[in] hDS

Enthält ein Verzeichnisdiensthandle, das von der FUNKTION DSBind oder DSBindWithCred abgerufen wurde.

[in] Operation

Enthält einen der DS_SPN_WRITE_OP-Werte , der den Vorgang angibt, den DsWriteAccountSpn ausführen soll.

[in] pszAccount

Zeiger auf eine konstante NULL-Zeichenfolge, die den distinguished Name eines Benutzer- oder Computerobjekts in Active Directory Domain Services angibt. Der Aufrufer muss Schreibzugriff auf die servicePrincipalName-Eigenschaft dieses Objekts haben.

[in] cSpn

Gibt die Anzahl der SPNs in rpszSpn an. Wenn dieser Wert null ist und OperationDS_SPN_REPLACE_SPN_OP enthält, entfernt die Funktion alle Werte aus dem servicePrincipalName-Attribut des angegebenen Kontos.

[in] rpszSpn

Zeiger auf ein Array konstanter NULL-Zeichenfolgen, die die SPNs angeben, die dem durch den pszAccount-Parameter identifizierten Konto hinzugefügt oder daraus entfernt werden sollen. Die DsGetSpn-Funktion wird verwendet, um SPNs für einen Dienst zu erstellen.

Rückgabewert

Gibt ERROR_SUCCESS zurück, wenn erfolgreich oder ein Win32-, RPC- oder Verzeichnisdienstfehler, falls nicht erfolgreich.

Hinweise

Die DsWriteAccountSpn-Funktion registriert die SPNs für eine oder mehrere Instanzen eines Diensts. SPNs werden von Clients in Verbindung mit einem vertrauenswürdigen Authentifizierungsdienst verwendet, um den Dienst zu authentifizieren. Zum Schutz vor Sicherheitsangriffen, bei denen eine Anwendung oder ein Dienst einen SPN, der einen anderen Dienst identifiziert, betrügerisch registriert, erlaubt die Standard-DACL für Benutzer- und Computerkonten in den meisten Fällen nur Domänenadministratoren, SPNs zu registrieren.

Eine Ausnahme von dieser Regel besteht darin, dass ein Dienst, der unter dem Konto LocalSystem ausgeführt wird , DsWriteAccountSpn aufrufen kann, um einen einfachen SPN der Form "ServiceClass/Host:Port" zu registrieren, wenn der im SPN angegebene Host der DNS- oder NetBIOS-Name des Computers ist, auf dem der Dienst ausgeführt wird.

Eine weitere Ausnahme besteht darin, dass die Standard-DACL für Computerkonten Es Anrufern ermöglicht, SPNs für sich selbst zu registrieren, sofern bestimmte Einschränkungen gelten. Beispielsweise kann ein Computerkonto über SPNs relativ zu seinem Computernamen im Format "host/<computername>" verfügen. Da der Computername im SPN enthalten ist, ist der SPN zulässig.

Keine der oben genannten Regeln gilt, wenn die DSA so konfiguriert ist, dass ein SPN geschrieben werden kann. Dies verringert jedoch die Sicherheit, daher wird dies nicht empfohlen.

An DsWriteAccountSpn übergebene SPNs werden tatsächlich dem Dienstprinzipalname-Attribut des Computerobjekts in pszAccount hinzugefügt. Dieser Aufruf erfolgt mithilfe von RPC an den Domänencontroller, in dem das Kontoobjekt gespeichert ist, damit die Richtlinie sicher erzwingen kann, welche SPNs für das Konto zulässig sind. Die Verwendung von LDAP zum direkten Schreiben in die SPN-Eigenschaft ist nicht zulässig. Alle Schreibvorgänge müssen über diesen RPC-Aufruf erfolgen. Lesevorgänge mit LDAP sind zulässig.

Erforderliche Berechtigungen zum Festlegen von SPNs

Um einen beliebigen SPN für ein Konto zu schreiben, benötigt der Writer das Recht "ServicePrincipalName schreiben", das der Person, die das Konto erstellt hat, standardmäßig nicht gewährt wird. Diese Person hat das Recht "Überprüften SPN schreiben" (nur für Computerkonten vorhanden).

Nachfolgend finden Sie eine Zusammenfassung der Rechte pro Benutzer für Computerkonten:

Benutzertyp Rechte
Person, die das Konto erstellt Schreiben eines überprüften SPN
Konten-Operatoren SpN schreiben und überprüften SPN schreiben
Authentifizierte Benutzer Keine
(Selbst) Schreiben eines überprüften SPN
 

Für Benutzerkonten gibt es keine Eigenschaft "Überprüfter SPN" oder das Recht "Schreib-SPN". Stattdessen gewährt der Eigenschaftssatz "Öffentliche Informationen schreiben" die Möglichkeit, beliebige SPNs zu erstellen.

Hinweis

Der ntdsapi.h-Header definiert DsWriteAccountSpn als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit nicht codierungsneutralem Code kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista
Unterstützte Mindestversion (Server) Windows Server 2008
Zielplattform Windows
Kopfzeile ntdsapi.h
Bibliothek Ntdsapi.lib
DLL Ntdsapi.dll

Weitere Informationen

DS_SPN_WRITE_OP

Domänencontroller und Replikationsverwaltungsfunktionen

DsBind

DsBindWithCred

DsGetSpn