WebProject でホストされている RESTful WCF アプリケーションがあります。HttpModule を使用して受信リクエストのヘッダーを認証しています。ヘッダーと URL が有効な場合は、両方を設定します
System.Threading.Thread.CurrentPrincipal = myCustomPrincipal;
これは GET 要求に対しては完全に機能しますが、POST を実行して Thread.CurrentPrincipal をチェックすると、WindowsPrincipal クラスのインスタンスに設定されます。いくつかのブログ投稿で、HttpContext.Current.User と Thread.CurrentPrincipal の両方を同じ IPrincipal オブジェクトに設定する必要があることを読みましたが、割り当てるときに
HttpContext.Current.User = myCurrentPrincipal;
私のサービスがヒットすることはなく、実際に割り当てたことのない 401 UnAuthorized メッセージが返されます。
これらのプリンシパルを context_PostAuthorizeRequest メソッドに割り当てていることに注意してください。これは、コンテキストのような名前付きハンドラーにアタッチしています。
助けてください。私は何を間違っていますか?以下は、私の webconfig の httpModules 構成の例です。
<httpModules>
<add name="PublicServiceSecurity" type="Company.PublicService.PublicServiceSecurity,PublicService" />
<add name="ErrorModule" type="Company.Web.ErrorModule,WebComponentLibrary" />
<add name="HbnSessionModule" type="Company.Web.HbnSessionModule,WebComponentLibrary" />
</httpModules>