Condividi tramite


Funzione DsWriteAccountSpnA (ntdsapi.h)

La funzione DsWriteAccountSpn scrive una matrice di nomi dell'entità servizio (SPN) nell'attributo servicePrincipalName di un oggetto account utente o computer specificato in Servizi di dominio Active Directory. La funzione può registrare o annullare la registrazione dei nomi SPN.

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 viene usata per comporre nomi SPN per un servizio.

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 registra i nomi SPN per una o più istanze di un servizio. I nomi SPN vengono usati dai client, insieme a un servizio di autenticazione attendibile, per autenticare il servizio. Per proteggersi dagli attacchi di sicurezza in cui un'applicazione o un servizio registra in modo fraudolento un NOME SPN che identifica un altro servizio, l'elenco DACL predefinito negli account utente e computer consente solo agli amministratori di dominio di registrare spN nella maggior parte dei casi.

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 DsWriteAccountSpn vengono effettivamente aggiunti all'attributo service-principal-name dell'oggetto computer in pszAccount. Questa chiamata viene effettuata tramite RPC al controller di dominio in cui è archiviato l'oggetto account in modo da poter applicare in modo sicuro i criteri ai nomi SPN consentiti nell'account. L'uso di LDAP per scrivere direttamente nella proprietà SPN non è consentito; tutte le scritture devono venire tramite questa chiamata RPC. Le letture che usano LDAP sono consentite.

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

Vedere anche

DS_SPN_WRITE_OP

controller di dominio e funzioni di gestione della replica

DsBind

DsBindWithCred

DsGetSpn