2013-01-09 16 views
9

Sto tentando di accedere a un client wcf. So che le persone stanno ottenendo informazioni da questo momento, quindi so che funziona. Il mio problema è che non riesco a superarlo. Il servizio è un servizio di mutuo certificato. Ho i certificati appropriati nei miei negozi personali sulla mia macchina locale. Anche con questo, ottengo la seguente eccezione:SSPI: nome del principio utente WCF client

A call to SSPI failed, see inner exception 

Ricerca in profondità l'eccezione e vedo questo:

Message : The target principal name is incorrect 

Come posso risolvere questo? Devo impersonare l'utente con il pool di app in esecuzione? Devo aggiungere un Identity \ ServicePrincipleName o Identity \ UserPrincipleName? Qualcuno si è imbattuto in un problema simile a questo?

risposta

0

Ho rigenerato il client e l'endpoint nel file output.config ora aveva <identity> <userPrincipalName value="[email protected]" /> </identity> nel tag Endpoint. Così il nuovo punto finale sembrava -

<endpoint address="net.tcp://machinename:6001/ReferenceDataService" binding="netTcpBinding" bindingConfiguration="netTcpBindingConf" contract="IReferenceDataService" > 
    <identity> 
<userPrincipalName value="[email protected]" /> 

Ciò ha risolto il mio problema

+0

Nel caso in cui qualcuno non abbia familiarità con WCF - Ho usato svcutil.exe per rigenerare il client e l'output.config è stato generato con esso. – rhinobear

0

Per me ha funzionato quando ho specificato il nome utente del server nel punto finale. Non il nome utente del cliente. Ed era un UPN, non un SPN.

new EndpointAddress(
    new Uri("net.tcp://server:1234/MyWcf/svc"), 
     EndpointIdentity.CreateUpnIdentity("[email protected]")) 

Da quello che ho capito, il client verifica che stia parlando con l'utente previsto.

Problemi correlati