2011-07-19 1 views
10

はAsp.Netと並んでWCFサービス側WAS我々がホスティングしていると仮定:WASによってホストされているWCFサービスへの要求は、IIS処理パイプラインまたは...によって認証されていますか?質問後

「Asp.Netと並んでWCF側をホストしているとき - WCFのホスティング インフラストラクチャは、WCF要求をインターセプト PostAuthenticateRequestイベントが発生し、ASP.NET HTTPパイプラインに処理 が返されません。パイプラインの後の段階で 要求を傍受するようにコーディングされたモジュールは、WCF 要求を傍受しません。 「サイド・バイ・サイドの構成、WCFのホスティングインフラ でHTTPパイプラインのうち、WCFメッセージとルートそれらを傍受」

A)と仮定すると、WAS、WCFサービスの要求を受信しますWCFさん認証機構(WindowsののMembershipProviderまたはカスタム認証)PostAuthenticateRequestイベントが発生したときに呼び出される、またはWCFは、HTTPパイプラインのうち、それだけのルート後に要求を要求を認証しますか?言い換えれば、WCFの認証メカニズムはIISの処理パイプラインの外部で機能していますか?

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

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

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

ありがとうございました

答えて

1

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

コアでは、コードコントラクトアトリビュートを実装して、オペレーションコントラクトを保護することができます。あなたがIISでホストされているときのHttpContextは、あなたの場合にはnullになりますが、あなたがHttpContext.Current.Userを設定することができますがのThread.CurrentPrincipalにIPrincipalを設定PrincipalPermission(内蔵)(あなたのWCFサービスのコンストラクタ) を適用することで起動することができます

。 PrincipalPermissionを使用するには、IPrincipalを作成/実装する独自の機能が必要です。

1

私はパートDとパートBにしか答えられませんが、解決しようとしている問題に対処するには十分でしょう.WCFサービスをASP.Netアプリケーションの中にホストすると、フォーム認証がサポートされますWCFサービスでのASP.Net互換性を有効にします。このメソッドは、Silverlightアプレットで広く使用されています。

1)AspNetCompatibilityRequirements属性(VBでクラスを実装し、あなたのWCFサービスを飾る:

この

は、2段階のプロセスです。以下ネットコード):

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

2)は、web.configファイルであなたの<system.servicemodel>セクションに次のエントリを追加します。

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> 
関連する問題