2013-04-12 213 views
0

我通过在开发Web场上部署的.Net 4.0 ASP.Net Web应用程序中的FormsAuthentication.Encrypt(数据)将数据加密到cookie中。我已经指定了一个machineKey属性来对ValidationKey,DecryptionKey和Decryption(算法)进行硬编码。
现在,我试图使用我的开发工作站上构建的应用程序解密该cookie。我能够通过Request.Cookies时得到的饼干[“CookieName”]但是当我试图通过FormsAuthentication.Decrypt(encCookie)解密的价值,我得到以下错误:解密使用FormsAuthentication.Encrypt加密的数据

Unable to validate data. at System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(Boolean fEncrypt, Byte[] buf, Byte[] modifier, Int32 start, Int32 length, Boolean useValidationSymAlgo, Boolean useLegacyMode, IVType ivType, Boolean signData) at System.Web.Security.FormsAuthentication.Decrypt(String encryptedTicket) at TuoVanitySite.Default.Page_Load(Object sender, EventArgs e) in c:\src\ets_2008\main\ebtDev\Sandboxes\rrozinov\TuoVanitySite\TuoVanitySite\Default.aspx.cs:line 22

这里是blurp从我网络配置(键被删除):

<machineKey 
    validationKey="keyA" 
    decryptionKey="keyB" 
    decryption="3DES" 
    compatibilityMode="Framework20SP1"/> 

任何人已经处理了这种情况machineKey是不够的?

回答

1

好的,我能找到一个解决方案,但我不知道为什么这个问题。 我不得不验证属性添加到的machineKey:

<machineKey 
    validationKey="keyA" 
    decryptionKey="keyB" 
    validation="SHA1" 
    decryption="3DES" 
    compatibilityMode="Framework20SP1"/> 

是什么使得它有点有趣的是,我不管把SHA1或3DES,我的代码可以解密就好了这一事实。我确实确认服务器正在使用默认的SHA1。我仍然愿意为教育目的寻找根源。

0

如“How To: Configure MachineKey in ASP.NET 2.0”的文章中提到:

因此,它可能是,如果兼容模式设置为Framework20SP1或Framework20SP2那么它使用的,无论是什么在验证设置SHA1的情况下属性。

我正在努力处理类似的任务 - 在Windows Server 2012上的IIS8上部署的ASP.Net 4.0和3.5SP1 Web应用程序之间建立单点登录。它变得更加复杂,因为Win2k12具有.Net 4.5 .1这是一个“就地”升级到4.0 ...