1

クライアントをWebサービスに偽装する場合、クライアントを本質的に呼び出すたびに、一度呼び出す必要がありますか、それとも数回呼び出す必要がありますか?

client.ClientCredentials.Windows.AllowedImpersonationLevel =
    System.Security.Principal.TokenImpersonationLevel.Impersonation;

コントローラーの過程でクライアントを数回呼び出します。私はこれを一度だけ呼び出します。私の Web サイト (この Web サイトは MVC2 Web サイト) が WCF Web サービスを呼び出しますが、最初のページを通過できないようです。

ここで少し混乱。皆さんがお役に立てば幸いです。ありがとう。

4

1 に答える 1

1

偽装はプロキシ (クライアント チャネル) インスタンスごとに許可されるため、異なるコントローラー/アクション用に新しいプロキシ インスタンス (a client) を作成する場合は、プロキシ インスタンスごとに構成する必要があります。インスタンスを作成したら、そのインスタンスでサービスを複数回呼び出すことができ、クライアントを正しく偽装します。WCF サービスと通信する必要がある MVC アクションごとに、新しいプロキシ インスタンスを作成する必要があることに注意してください。

ところで。元のユーザー (MVC アプリケーションにアクセスするユーザー) または MVC アプリケーションをホストする AppPool を実行しているユーザー アカウントになりすまそうとしていますか? 最初のケースがシナリオである場合、偽装は単一のネットワーク ホップに限定されるため、問題が発生する可能性があります。つまり、ユーザーは MVC アプリケーションをホストするサーバー (最初のホップ) で偽装できますが、WCF サービスが別のサーバー (2 番目のホップ) にある場合、偽装はそこで機能しません (単一ホップの制限のため)。このようなシナリオでは、偽装ではなく委任が必要であり、委任には正しく構成された Kerberos が必要です。

于 2011-08-12T21:18:25.450 に答える