none
.net4.0 与 .net4.5 FormsAuthentication加密不兼容

    问题

  • 以前的单点登录系统(a.xxx.com)使用的mvc3.0 ,令牌存储在formscookie中,cookie值使用了FormsAuthentication.Encrypt(authTicket)加密,设置了跨域(domain="xxx.com"),然后现在一个新的运营系统(b.xxx.com)使用的mvc5.0 当在配置文件中设置authentication节点并且是Forms模式,但是却无法获取到这个cookie,当我去掉authentication节点配置后却能获取到这个cookie了,但是当我当我使用FormsAuthentication.Decrypt(cacheTicket)解密时却报错了


    [CryptographicException: 在执行加密操作时出错。]
       System.Web.Security.Cryptography.HomogenizingCryptoServiceWrapper.HomogenizeErrors(Func`2 func, Byte[] input) +178
       System.Web.Security.FormsAuthentication.Decrypt(String encryptedTicket) +792
    2016年1月18日 4:10

答案

  • 你好,zufeng3000

    根据下面的链接你可以知道,ASP.NET 4.5升级整个的 “cryptographic stack”,从而导致了Form认证不同于以前的版本。如果想与前期版本兼容,你可以将如下设置添加到.net 4.5 工程的 web.config中。

    <machineKey compatibilityMode="Framework20SP1" />

    http://stackoverflow.com/a/22626440

    Best Regards,

    Albert Zhang


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2016年1月19日 9:46