ASP.Net MVC 5 (.Net 4.5.1、iisexpress でローカルにホストされ、Visual Studio から実行) から WCF サービス (.Net 4.5.1、WcfSvcHost でローカルにホストされ、同じものから実行) に認証 Cookie を渡したいVisual Studio ソリューション) を開き、そこで復号化します。同じマシンキーを使用するように両方を構成しました (ASP の場合は Web.config、WCF の場合は App.config)。
<machineKey validationKey="930681CA8CDC1BC09118D6B37E4A1B7712CEDBBD9FA1E35407EA1CD440C7E6F2DB9E93DADAC4098F90ACC7417DBE57C196722FC67F313A6AAE0F946E2FF731B6" decryptionKey="714C9581DA522C636B2D97D80276D5ACC02C274A11ABF117C76181B0480D4AEA" validation="SHA1" decryption="AES" />
どちらも同じ System.Web.dll を参照します。
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5.1\System.Web.dll (v4.0.30319)
しかし、cookieStringをサービスに渡して呼び出しようとすると
FormsAuthenticationTicket tick = FormsAuthentication.Decrypt(cookieString);
次のエラーが表示されます。
データを検証できません
逆の方法で試してみました (WCF サービスで偽のチケットを生成し、ASP Web サイトで復号化します)、どちらも機能しませんでした。ASP Web サイトでチケットを生成し、そこで復号化できます。サービスでチケットを生成し、そこで問題なく復号化することもできます。
var t1 = new FormsAuthenticationTicket("foo", false, 1337);
var cookie = FormsAuthentication.Encrypt(t1);
var t2 = FormsAuthentication.Decrypt(cookie);
また、小さなコンソール アプリを作成し、そこでチケットを作成し、WCF サービスで問題なく復号化しました。
そのため、ASP Web サイトは指定されたキーを使用してデータを暗号化または復号化していないようです。
この問題を解決するために何ができるか知っている人はいますか?
編集:このガイドに従ってCookieを取得し、サービスに渡しました。 http://thoughtdirectionalarchitecture.blogspot.de/2009/10/flowing-aspnet-forms-authentication.html
ただし、私が言ったように、暗号化された Cookie の値をコピーして、同じマシンキーを使用して単純なコンソール アプリで復号化しようとしましたが、機能しませんでした。