Funzione DsWriteAccountSpnA (ntdsapi.h)
La funzione DsWriteAccountSpn
Sintassi
NTDSAPI DWORD DsWriteAccountSpnA(
[in] HANDLE hDS,
[in] DS_SPN_WRITE_OP Operation,
[in] LPCSTR pszAccount,
[in] DWORD cSpn,
[in] LPCSTR *rpszSpn
);
Parametri
[in] hDS
Contiene un handle del servizio directory ottenuto dalla funzione DSBind o DSBindWithCred.
[in] Operation
Contiene uno dei valori DS_SPN_WRITE_OP che specifica l'operazione che DsWriteAccountSpn.
[in] pszAccount
Puntatore a una stringa con terminazione Null costante che specifica il nome distinto di un utente o di un oggetto computer in Servizi di dominio Active Directory. Il chiamante deve avere accesso in scrittura alla proprietà servicePrincipalName di questo oggetto.
[in] cSpn
Specifica il numero di nomi SPN in rpszSpn. Se questo valore è zero e Operation contiene DS_SPN_REPLACE_SPN_OP, la funzione rimuove tutti i valori dall'attributo servicePrincipalName dell'account specificato.
[in] rpszSpn
Puntatore a una matrice di stringhe con terminazione Null costanti che specificano i nomi SPN da aggiungere o rimuovere dall'account identificato dal parametro pszAccount. La funzione DsGetSpn
Valore restituito
Restituisce ERROR_SUCCESS in caso di esito positivo o errore del servizio directory Win32, RPC o directory in caso di esito negativo.
Osservazioni
La funzione DsWriteAccountSpn
Un'eccezione a questa regola è che un servizio in esecuzione con l'account LocalSystem può chiamare DsWriteAccountSpn per registrare un nome SPN semplice del modulo "ServiceClass/Host:Port" se l'host specificato nel nome SPN è il nome DNS o NetBIOS del computer in cui è in esecuzione il servizio.
Un'altra eccezione è che l'elenco DACL predefinito negli account computer consente ai chiamanti di registrare i nomi SPN autonomamente, soggetti a determinati vincoli. Ad esempio, un account computer può avere nomi SPN rispetto al nome computer, nel formato "host/<nome computer>". Poiché il nome computer è contenuto nel nome SPN, il nome SPN è consentito.
Nessuna delle regole precedenti si applica se il DSA è configurato per consentire la scrittura di qualsiasi SPN. Ciò riduce tuttavia la sicurezza, quindi non è consigliabile.
I nomi SPN passati a
Autorizzazioni necessarie per impostare i nomi SPN
Per scrivere un NOME SPN arbitrario in un account, il writer richiede il diritto "Write ServicePrincipalName", che non viene concesso per impostazione predefinita alla persona che ha creato l'account. Tale persona ha il diritto "SPN convalidato in scrittura" (presente solo negli account del computer).
Di seguito è riportato un riepilogo dei diritti per utente sugli account computer:
Tipo di utente | Diritti |
---|---|
Persona che crea l'account | SpN convalidato per la scrittura |
Operatori account | Scrivere SPN e SPN convalidato in scrittura |
Utenti autenticati | Nessuno |
(self) | Write Validated SPN |
Per gli account utente non esiste alcuna proprietà "VALIDATED SPN" o "Write SPN" right. Il set di proprietà "Scrivi informazioni pubbliche" concede invece la possibilità di creare NOMI SPN arbitrari.
Nota
L'intestazione ntdsapi.h definisce DsWriteAccountSpn come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows Vista |
server minimo supportato | Windows Server 2008 |
piattaforma di destinazione | Finestre |
intestazione |
ntdsapi.h |
libreria |
Ntdsapi.lib |
dll | Ntdsapi.dll |