フェデレーション認証を使用したクライアントと wcf サービス アプリケーション間の通信に問題があります。
クライアント アプリケーション (フォーム認証を使用した ASP.NET MVC) で、ユーザー データをクレームに渡し、SessionSecurityToken を作成します。
SessionSecurityToken sessionSecurityToken = new
SessionSecurityToken(transformedPrincipal,
TimeSpan.FromMinutes(tokenLifeTime));
sessionSecurityToken.IsReferenceMode = true;
FederatedAuthentication.SessionAuthenticationModule.WriteSessionTokenToCookie(sessionSecurityToken);
tokenLifeTime は 25 分です。
私のサービスでは、Cookie を読み取り、クレームに保存されているユーザー データを取得したいと考えています。ただし、サービスで次のコードを実行すると:
SessionSecurityToken token;
FederatedAuthentication.SessionAuthenticationModule.TryReadSessionTokenFromCookie(out token);
トークンがヌルです。
アップデート:
クライアント アプリケーションでサービスを作成するだけで、問題なくトークンが読み取られることに気付きました。また、Httpcontext.Current.user を設定するだけで問題なく動作します。ただし、サービス参照を介してサービスを消費したいのですが、このシナリオでは、両方とも HttpContext.Current.User が空 (null ではない!) であり、上記のように Cookie が読み取られません。