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 entweder von der DSBind - oder DSBindWithCred-Funktion abgerufen wird.

[in] Operation

Enthält einen der DS_SPN_WRITE_OP Werte, die den Vorgang angibt, den DsWriteAccountSpn ausführt.

[in] pszAccount

Zeiger auf eine konstante null-beendete Zeichenfolge, die den unterschiedenen Namen eines Benutzers oder Computerobjekts in Active Directory Domain Services angibt. Der Aufrufer muss über Schreibzugriff auf die ServicePrincipalName-Eigenschaft dieses Objekts verfügen.

[in] cSpn

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

[in] rpszSpn

Zeigen Sie auf ein Array mit konstanten NULL-beendeten Zeichenfolgen, die die SPNs angeben, die dem vom PszAccount-Parameter identifizierten Konto hinzugefügt oder entfernt werden sollen. Die DsGetSpn-Funktion wird zum Verfassen von SPNs für einen Dienst verwendet.

Rückgabewert

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

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. Um vor Sicherheitsangriffen zu schützen, bei denen eine Anwendung oder ein Dienst einen SPN betrügerisch registriert, der einen anderen Dienst identifiziert, ermöglicht die standardmäßige DACL für Benutzer- und Computerkonten nur Domänenadministratoren, SPNs in den meisten Fällen zu registrieren.

Eine Ausnahme dieser Regel besteht darin, dass ein Dienst, der unter dem LocalSystem-Konto ausgeführt wird, dsWriteAccountSpn aufrufen kann, um einen einfachen SPN des Formulars "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 standardmäßige DACL auf Computerkonten es Anrufern ermöglicht, SPNs selbst zu registrieren, die bestimmten Einschränkungen unterliegen. Ein Computerkonto kann z. B. SPNs relativ zum Computernamen des Formulars "Host/<Computername>" haben. 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 reduziert jedoch die Sicherheit, sodass es nicht empfohlen wird.

SPNs, die an DsWriteAccountSpn übergeben werden, werden tatsächlich dem Service-Principal-Name-Attribut des Computerobjekts in pszAccount hinzugefügt. Dieser Aufruf wird mithilfe von RPC an den Domänencontroller vorgenommen, auf dem das Kontoobjekt gespeichert ist, damit sie eine 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 auf einem Konto zu schreiben, erfordert der Writer das Recht "ServicePrincipalName schreiben", das der Person, die das Konto erstellt hat, nicht standardmäßig gewährt wird. Diese Person hat die Berechtigung "Überprüftes SPN schreiben" (nur auf Computerkonten vorhanden).

Nachfolgend finden Sie eine Zusammenfassung der Rechte pro Benutzer auf Computerkonten:

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

Bei Benutzerkonten gibt es keine "Valid SPN"-Eigenschaft oder "Write SPN" rechts. Stattdessen gewährt die Eigenschaft "Öffentliche Informationen schreiben" die Möglichkeit, beliebige SPNs zu erstellen.

Hinweis

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

Anforderungen

   
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