2013-01-09 22 views
9

wcfクライアントにアクセスしようとしています。私は今、人々が情報を入手していることを知っています。私の問題は、私はそれを過ぎているように見えないということです。このサービスは相互認証サービスです。私は私のローカルマシン上の私の個人的な店で適切な証明書を持っています。でもそれで、私は次の例外を取得:SSPI:ユーザー原則名WCFクライアント

A call to SSPI failed, see inner exception 

例外に深く検索をし、私はこれを参照してください。

Message : The target principal name is incorrect 

どのように私はこの問題を解決することができますか?私は、アプリケーションプールが実行されているユーザーを偽装する必要がありますか? Identity \ ServicePrincipleNameまたはIdentity \ UserPrincipleNameを追加する必要がありますか?誰もこのような問題に遭遇しましたか?

答えて

0

クライアントを再生成し、output.configファイルのエンドポイントは、エンドポイントタグに<identity> <userPrincipalName value="[email protected]" /> </identity> となりました。だから、新しいエンドポイントは、ように見えた - 私は、エンドポイントで、サーバのユーザ名を指定したときにこれは私の問題は私にとって

+0

誰かがWCFに慣れていない場合は、svcutil.exeを使用してクライアントを再生成し、output.configを生成しました。 – rhinobear

0

解決

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

、それが働きました。クライアントのユーザー名ではありません。それはSPNではなくUPNでした。

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

私が理解していることから、クライアントは予想されるユーザーと話していることを確認します。