2009-08-11 6 views
1

私は、別のサーバー上のコンソールアプリケーションによってホストされているWCFサービスと通信するコンソールアプリケーションクライアントを持っています。それはWindows認証とセキュリティモード=メッセージを使用します。WCF:クライアントのなりすまし

クライアントの資格情報を偽装するようにサービスを変更するまでは問題ありません。私はそれを達成するために行う変更は、次のとおりです。
1.私のメソッドシグネチャに[OperationBehavior(Impersonation = ImpersonationOption.Required)]を追加し、サービスの振る舞い
2に<serviceAuthorization impersonateCallerForAllOperations="true" />を追加

私はその後、私のサービスをホストし、それはすべて、通常のように良い実行されます。

私のクライアントで私が唯一のものは追加です:

ChannelFactory<IService1> channel = new ChannelFactory<IService1>(binding, endPoint); 
channel.Credentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.Impersonation; 

私はその後、私のクライアントを実行して、エラーを取得:

サーバーは、意味のある回答を提供していませんでした。これは、契約の不一致、早すぎるセッションのシャットダウン、または内部サーバーのエラーによって引き起こされる可能性があります。

私はクライアントの設定に行う必要がある他の何かがありますか?

答えて

0

サーバー設定が契約と一致しない可能性があります。サーバー側では

  • は、Windows認証に設定IISですか?
  • web.configはWindows認証に設定されていますか?
  • =真

私の推測では、あなたが最後のものが欠けていることである偽装するように設定web.configファイルです。

+0

@Tomこれで、OperationBehaviourを変更した後にクライアントを再コンパイルしましたか? – JTew

0

私は、wcfメソッド呼び出しがサーバー側で例外をトリガーすると思われます。サーバーサイドの例外やペイロードをキャプチャするためのインフラストラクチャはありますか?そうでなければ、トラフィックを記録するためにwcf trace loggingのようなものを使用します。

これにより、より意味のあるエラーが表示されます。

あなたの質問にこれを追加していただければうまくいけば、何が問題の原因か分かります。

関連する問題