4

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 の値をコピーして、同じマシンキーを使用して単純なコンソール アプリで復号化しようとしましたが、機能しませんでした。

4

3 に答える 3

2

Levi はこちらで私の質問に答えました: http://forums.asp.net/t/1956219.aspx

追加すると、compatibilityMode="Framework45" が machineKey セクションに推論されます。

したがって、このバグを修正するには、compatibilityMode="Framework45" を machineKey セクションに追加するか、ASP Web サイトの web.config の system.web セクションに追加します。

于 2013-12-16T07:55:41.287 に答える