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 vom DSBind- oder DSBindWithCredWithCred-Funktion abgerufen wird.
[in] Operation
Enthält einen der DS_SPN_WRITE_OP Werte, die den Vorgang angibt, der DsWriteAccountSpn ausführt.
[in] pszAccount
Zeiger auf eine konstante null-beendete 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 rpszSpnan. Wenn dieser Wert null ist und OperationDS_SPN_REPLACE_SPN_OPenthä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 daraus entfernt werden sollen. Die DsGetSpn--Funktion wird zum Verfassen von SPNs für einen Dienst verwendet.
Rückgabewert
Gibt ERROR_SUCCESS zurück, wenn erfolglos oder ein Win32-, RPC- oder Verzeichnisdienstfehler aufgetreten ist.
Bemerkungen
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 betrügerisch einen SPN registriert, der einen anderen Dienst identifiziert, ermöglicht die standardmäßige DACL auf Benutzer- und Computerkonten nur Domänenadministratoren, SPNs in den meisten Fällen zu registrieren.
Eine Ausnahme dieser Regel besteht darin, dass ein unter dem LocalSystem-Konto ausgeführter Dienst 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, vorbehaltlich bestimmter Einschränkungen. Ein Computerkonto kann z. B. SPNs relativ zum Computernamen des Formulars "host/<computername>" aufweisen. 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 spN geschrieben werden kann. Dies verringert jedoch die Sicherheit, sodass sie nicht empfohlen wird.
SPNs, die an DsWriteAccountSpn übergeben werden, werden tatsächlich dem Service-Principal-Name- Attribut des Computerobjekts in pszAccounthinzugefügt. Dieser Aufruf erfolgt mithilfe von RPC an den Domänencontroller, auf dem das Kontoobjekt gespeichert ist, sodass sie eine Richtlinie für die zulässigen SPNs für das Konto sicher erzwingen kann. 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.
Zum Festlegen von SPNs erforderliche Berechtigungen
Um einen beliebigen SPN auf ein Konto zu schreiben, benötigt der Writer das Recht "Write ServicePrincipalName", das standardmäßig nicht der Person gewährt wird, die das Konto erstellt hat. Diese Person verfügt über die Berechtigung "Schreibgeschütztes SPN" (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 |
Kontooperatoren | SpN schreiben und validierten SPN schreiben |
Authentifizierte Benutzer | Nichts |
(selbst) | Schreibgeschützter SPN |
Bei Benutzerkonten gibt es keine Eigenschaft "Überprüftes SPN" oder "SpN schreiben" rechts. Stattdessen gewährt der Eigenschaftensatz "Öffentliche Informationen schreiben" die Möglichkeit, beliebige SPNs zu erstellen.
Anmerkung
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 Code, der nicht codierungsneutral ist, 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 |
---|---|
mindestens unterstützte Client- | Windows Vista |
mindestens unterstützte Server- | Windows Server 2008 |
Zielplattform- | Fenster |
Header- | ntdsapi.h |
Library | Ntdsapi.lib |
DLL- | Ntdsapi.dll |