環境:
Stack と Bing には、 WCFとASP.NETとのセッション共有について話しているスレッドがいくつかあります。私の問題を完全に満たすものはありません。だからここに行きます:
パス「/services」の下のRouteTableにもいくつかのサービスがあるMVCサイトがあります。これはすべて本当にうまく機能します。コントローラー アクションと WCF サービス メソッドの両方を呼び出すことができます。
Windows Azure Access Control Service (ACS)でWIFとFederated Authenticationを有効にしました。これもうまく機能します。Facebook、Google などを使用してログインでき、自分のサイトでセッションが明確に確立されています。MVC コントローラー アクションと WCF メソッドを呼び出すことができます。それらの本体内で、現在のユーザーの IPrincipal が現在のセッションに設定されます。
今、私はいい子になりたいと思っており、カスタムClaimsAuthenticationManager とカスタム ClaimsAuthorizationManager を使用しています。奇妙な問題が発生します。
セットアップ:
このシナリオでは、ログインしています。セッションがあります。これは、MVC コントローラー メソッドと WCF サービス メソッドのメソッド本体内で確認できます。つまり、カスタム ClaimsAuthenticationManager は、既にセッションを持っている場合には触れられないため、ここから除外できます。
私の頭痛の種はカスタム ClaimsAuthorizationManager です。
MVC サイトを呼び出すと、ClaimsAuthorizationManager.CheckAccess メソッド内のセッションで認証され、MVC コントローラー アクションの本体内でも認証されます。ここまでは順調ですね。
問題:
WCF サービスを呼び出すと、ClaimsAuthorizationManager.CheckAccess メソッド内のセッションで認証されませんが、WCF サービス メソッド内でブレークポイントに到達すると (突然) 認証されます。
これだけでは意味がありません!私のセッションは ClaimsAuthorization マネージャー内では膨張していないようですが、パイプラインをさらに下ると、自分の WCF コードをヒットするとセッションが配置されます!
どうすればいいの?
乾杯、
マグナス