Condividi tramite


Modalità di registrazione dei nomi SPN da parte di un servizio

Prima che un client possa usare un nome SPN per autenticare un'istanza di un servizio, è necessario registrare il nome SPN nell'account utente o computer che verrà usato dall'istanza del servizio per l'accesso. In genere, la registrazione del nome SPN viene eseguita da un programma di installazione del servizio in esecuzione con privilegi di amministratore di dominio.

Il programma di installazione del servizio che installa un'istanza del servizio in un computer host esegue in genere la procedura seguente.

Per registrare i nomi SPN per un'istanza del servizio

  1. Chiamare la funzione DsGetSpn per creare uno o più NOMI SPN univoci per l'istanza del servizio. Per altre informazioni, vedere Formati dei nomi per nomi SPN univoci.
  2. Chiamare la funzione DsWriteAccountSpn per registrare i nomi nell'account di accesso del servizio.

DsWriteAccountSpn registra i nomi SPN come proprietà di un oggetto account utente o computer nella directory. gli oggetti utente e computer hanno un attributo servicePrincipalName , ovvero un attributo multivalore per l'archiviazione di tutti gli SPN associati a un account utente o computer. Se il servizio viene eseguito con un account utente, i nomi SPN vengono archiviati nell'attributo servicePrincipalName dell'account. Se il servizio viene eseguito nell'account LocalSystem, i nomi SPN vengono archiviati nell'attributo servicePrincipalName dell'account del computer host del servizio. Il chiamante DsWriteAccountSpn deve specificare il nome distinto dell'oggetto account in cui vengono archiviati i nomi SPN.

Per garantire che i nomi SPN registrati siano sicuri, l'attributo servicePrincipalName non può essere scritto direttamente. Può essere scritto solo chiamando DsWriteAccountSpn. Il chiamante deve avere accesso in scrittura all'attributo servicePrincipalName dell'account di destinazione. In genere, l'accesso in scrittura viene concesso solo agli amministratori di dominio per impostazione predefinita. Tuttavia, esiste un caso speciale in cui il sistema consente a un servizio in esecuzione nell'account LocalSystem di registrare i propri SPN nell'account computer dell'host del servizio. In questo caso, il nome SPN scritto deve avere il formato "<service class>/<host>" e "<host>" deve essere il nome DNS del computer locale.

DsWriteAccountSpn può anche rimuovere i nomi SPN da un account. Un parametro dell'operazione indica se i nomi SPN devono essere aggiunti all'account, rimossi dall'account o usati per sostituire completamente tutti gli SPN correnti per l'account. Quando un'istanza del servizio viene disinstallata, rimuovere tutti i nomi SPN registrati per tale istanza.

Per altre informazioni e un esempio di codice che registra o annulla la registrazione dei nomi SPN di un servizio, vedere Registrazione dei nomi SPN per un servizio.

I servizi basati su host che usano il semplice formato SPN "<classe>/<host> del servizio", hanno la possibilità di usare la funzione DsServerRegisterSpn, che crea e registra i nomi SPN per un'istanza del servizio. DsServerRegisterSpn è una funzione helper che chiama DsGetSpn e DsWriteAccountSpn.

Per altre informazioni, vedere Account di accesso al servizio.