2011-08-12 9 views
1

クライアントをWebサービスに偽装するときは、一度呼び出す必要がありますか、呼び出すたびに何回か呼び出す必要がありますか本質的にクライアント。偽装:一度だけ呼び出すか、呼び出しごとに呼び出しを続けるMVC2 callng - > WCF

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

私は自分のコントローラーの中で何度かクライアントに電話をかけます。私はこれを一度だけ呼びます。私は自分のウェブサイトの最初のページ(このウェブサイトのMVC2ウェブサイト)を過ぎても私のWCFウェブサービスを呼び出すことはできません。

ここで少し混乱します。もし皆さんの助けがあれば、私は大いに感謝しています。ありがとう。

答えて

1

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

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

+0

もう少し詳しく説明してください。私が最初のことをしているように聞こえる。私のMVC Webサイトは1台のサーバー上で動作しているので、彼がログインするユーザーのAD情報(Windows認証)を取得し、私が書いたWCFサービスにアクセスできるようにする必要があります。委任を見て、Kerberosを設定してみましょう...あなたがそれについてもっと詳しく説明できれば、私も感謝しています。 – SoftwareSavant

+1

委任は、MVCアプリケーションがWCFサービスとは異なるサーバーで実行されている場合にのみ必要です。より管理的な機能です。 Kerberosと委任を使用するには、サーバー、AD、および場合によってはクライアントも構成する必要があります。この記事から始める:http://technet.microsoft.com/en-us/library/cc780217%28WS.10%29.aspx –

関連する問題