我希望能够将我的ASP.Net MVC 5(.Net 4.5.1,在iisexpress本地托管,从Visual Studio运行)中的身份验证cookie传递给我的WCF服务(.Net 4.5.1,在同一Visual Studio解决方案中从WcfSvcHost本地托管),并在那里进行解密。我已经配置了两个应用程序使用相同的机器密钥(在ASP的Web.config文件和WCF的App.config文件中)。
我遇到了以下错误:
我还制作了一个小的控制台应用程序,在那里创建了一张票据,并在 WCF 服务上解密它,没有出现任何问题。
因此,似乎 ASP 网站未使用指定的密钥来加密或解密数据。
有人知道我该怎么做来解决这个问题吗?
编辑: 我按照这篇指南获取了 cookie 并将其传递给了我的服务。 http://thoughtorientedarchitecture.blogspot.de/2009/10/flowing-aspnet-forms-authentication.html 然而,就像我说的,我尝试复制加密 cookie 的值,并在具有相同机器密钥的简单控制台应用程序中进行解密,但却不起作用。
<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网站上解密),但也没有成功。 我可以在ASP网站上生成并解密票证。 我也可以在服务上生成并解密票证,没有任何问题。无法验证数据
var t1 = new FormsAuthenticationTicket("foo", false, 1337);
var cookie = FormsAuthentication.Encrypt(t1);
var t2 = FormsAuthentication.Decrypt(cookie);
我还制作了一个小的控制台应用程序,在那里创建了一张票据,并在 WCF 服务上解密它,没有出现任何问题。
因此,似乎 ASP 网站未使用指定的密钥来加密或解密数据。
有人知道我该怎么做来解决这个问题吗?
编辑: 我按照这篇指南获取了 cookie 并将其传递给了我的服务。 http://thoughtorientedarchitecture.blogspot.de/2009/10/flowing-aspnet-forms-authentication.html 然而,就像我说的,我尝试复制加密 cookie 的值,并在具有相同机器密钥的简单控制台应用程序中进行解密,但却不起作用。