2013-01-09 11 views
9

Ich versuche, auf einen WCF-Client zuzugreifen. Ich weiß, dass die Leute im Moment Informationen herausbekommen, also weiß ich, dass es funktioniert. Mein Problem ist, dass ich nicht darüber hinweg komme. Der Service ist eine gegenseitige Zertifizierung. Ich habe die entsprechenden Zertifikate in meinen persönlichen Geschäften auf meinem lokalen Rechner. Auch mit dem, erhalte ich die folgende Ausnahme:SSPI: Benutzerprinzipalname WCF-Client

A call to SSPI failed, see inner exception 

tief in die Ausnahme der Suche und ich sehe dies:

Message : The target principal name is incorrect 

Wie kann ich dieses Problem lösen? Muss ich mich als der Benutzer ausgeben, unter dem der App-Pool läuft? Muss ich einen Identity \ ServicePrincipleName oder Identity \ UserPrincipleName hinzufügen? Ist jemand auf ein ähnliches Problem gestoßen?

Antwort

0

Ich neu generiert den Client und der Endpunkt in der Datei output.config hatte jetzt <identity> <userPrincipalName value="[email protected]" /> </identity> in der Endpoint-Tag. So ist der neue Endpunkt sah aus wie -

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

Das ist mein Problem gelöst

+0

Falls jemand nicht mit WCF vertraut ist - ich habe svcutil.exe verwendet, um den Client neu zu generieren, und die output.config wurde damit generiert. – rhinobear

0

Für mich ist es, als ich den Server Benutzername in dem Endpunkt angegeben. Nicht der Benutzername des Kunden. Und es war ein UPN, kein SPN.

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

Von dem, was ich verstehe, überprüft der Client, dass es mit dem erwarteten Benutzer spricht.