2009-08-18 9 views
10

Sto provando a impostare la rappresentazione del client sul mio servizio.Quale valore deve avere il servicePrincipalName?

ho bisogno di impostare un valore per il servicePrincipalName dei miei servizi endPoint

sto guardando questo MSDN article ma ancora non riesco a capirlo

Il mio servizio è ospitato in una console app sul server che chiameremo ServerName1.
L'URI è: net.tcp://ServerName1:9990/TestService1/.

Che specifica dovrebbe essere il mio servizioPrincipalName?

ho cercato, senza la gioia:

<identity> 
    <servicePrincipalName value="ServerName1" /> 
</identity> 

risposta

8

Il nome dell'utente che si desidera il servizio all'utente (eseguire sotto). Quindi, se si desidera eseguire sotto le credenziali di 'rete locale' sopra XML dovrebbe assomigliare:

<identity> 
    <servicePrincipalName value="Local Network" /> 
</identity> 
+1

Così, c'è un elenco di valori accettati che possono essere utilizzati qui vale a dire "rete locale" essere uno di loro? Quale valore dovrebbe essere se voglio utilizzare le credenziali utente dei client chiamanti? –

+0

@Tom Non credo che sia possibile impostarlo nella configurazione ma è possibile farlo dal codice –

+0

Stavo usando un servizio di rete per eseguire i miei test automatici, compresa la generazione di richieste SOAP per testare alcuni servizi WCF. Le richieste non riuscivano e questa impostazione "Rete locale" risolveva il mio problema. –

8

Configurazione ServicePrincipleName è un argomento difficile da descrivere in poche parole Forse questi articoli vi aiuterà:

Molto probabilmente, è necessario configu re è il seguente modo

<identity> 
    <servicePrincipalName value="HOST/ServerName1:9990" /> 
</identity> 

Usiamo solitamente userPrincipalName invece di servicePrincipalName, come questo

<identity> 
    <userPrincipalName value="[email protected]" /> 
</identity> 
0

Quando si utilizzano i servizi WCF ospitati da IIS.

Abbiamo utilizzato "host/nome computer", come <servicePrincipalName />, per la connessione anonima. All'interno della tua applicazione WCF, puoi impostare il pool di applicazioni, ad esempio "iis apppool \ defaultAppPool", questo utente sarà il vero utente connesso.

Nell'immagine sottostante /C ?????? DataService è il nome dell'applicazione ("Tom TestService1") Pool Applicazione: C ???? Pool può essere "DefaultAppPool", nel caso di "Application Utente (autenticazione pass-through) ", si utilizzerà" AppPool IIS \ DefaultAppPool "come utente per concedere i diritti a una risorsa specifica, come una stringa di connessione di file o di un server sql.

E, anche utilizzando l'autenticazione anonima, è possibile impostare "autorizzazione moduli" su una risorsa specifica all'interno dell'applicazione WCF, ad esempio "MasterSettings.svc".

enter image description here

speranza che questo aiuta