1

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>
4

0 に答える 0