10

次の質問は、WAS で Asp.Net と並んで WCF サービスをホストしていると仮定しています。

「WCF を Asp.Net と並べてホストする場合 - WCF ホスティング インフラストラクチャは、PostAuthenticateRequest イベントが発生したときに WCF 要求をインターセプトし、処理を ASP.NET HTTP パイプラインに返しません。モジュールの後の段階で要求をインターセプトするようにコーディングされているモジュールパイプラインは WCF リクエストをインターセプトしません。」

「サイド バイ サイド構成では、WCF ホスティング インフラストラクチャが WCF メッセージをインターセプトし、HTTP パイプラインからルーティングします」

a) WAS が WCF サービスの要求を受信すると仮定すると、イベントが発生したときに WCF の認証メカニズム ( WindowsMembershipProviderまたはCustom authentication ) が呼び出されますPostAuthenticateRequestか、それとも HTTP パイプラインから要求をルーティングした後にのみ WCF が要求を認証しますか? 言い換えれば、WCF の認証メカニズムは IIS の処理パイプラインの外で機能していますか?

b) WCF の認証メカニズムが IIS 処理パイプラインの外部で機能している場合、FormsAuthenticationModuleは WCF クライアントの認証に関与していないと思います (サービスがフォーム認証を使用していると仮定します)。

c) また、WCF の認証メカニズムが IIS 処理パイプラインの外部で機能している場合、サービスが Windows 認証を使用してクライアントを認証している場合でも、IIS/WAS を匿名認証用に構成する必要があると思いますか?

d) 上記の質問への回答は、WCF サービスが IIS7 によってホストされていた場合 (サービスが HTTP プロトコルを介して通信するエンドポイントのみを使用する必要があるという事実に加えて) 異なるでしょうか?

ありがとうございました

4

2 に答える 2

1

テクニカル スパイク プロジェクトを実施することをお勧めします。

コアでは、いつでも codeaccess 属性を実装して、操作コントラクトを保護できます。

IIS でホストされている場合、Thread.CurrentPrincipal (wcf サービスのコンストラクター) に IPrincipal を設定する PrincipalPermission (組み込み) を適用することから始めることができます。HttpContext.Current.User を設定できますが、HttpContext は null になります。PrincipalPermission を使用するには、IPrincipal を作成/実装する独自の機能が必要です。

于 2011-11-07T20:10:16.057 に答える
1

回答できるのは D の部分と B の部分だけですが、解決しようとしている問題に対処するにはこれで十分かもしれません。ASP.Net アプリケーション内で WCF サービスをホストしている場合、ASP.Net を有効にするとフォーム認証がサポートされます。 WCF サービスでの互換性。この方法は、Silverlight アプレットで広く使用されています。

これは 2 段階のプロセスです。

1) WCF サービス実装クラスをAspNetCompatibilityRequirements属性 (以下の vb.net コード) で装飾します。

<AspNetCompatibilityRequirements(RequirementsMode:=AspNetCompatibilityRequirementsMode.Allowed)> _

<system.servicemodel>2) web.config のセクションに次のエントリを追加します。

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
于 2011-11-12T01:55:28.983 に答える