当前位置: 移动技术网 > IT编程>开发语言>.net > FormsAuthentication.Decrypt 解密保存的登录cookie信息报错

FormsAuthentication.Decrypt 解密保存的登录cookie信息报错

2018年03月30日  | 移动技术网IT编程  | 我要评论

视网膜屏幕,雅虎音乐,运动会的口号

 在处理单点登录系统(比如a.xxx.com),使用的mvc开发的 ,令牌存储在formscookie中,cookie值使用了FormsAuthenticationTicket保存数据信息,采用FormsAuthentication.Encrypt(authTicket)加密,设置了共域参数(domain="xxx.com"),现在有一个新的站点子系统(b.xxx.com)需要接入, 当在配置文件中设置authentication节点并且是Forms模式,但是却无法获取到这个cookie,当修改authentication节点配置为None模式后就能获取到这个cookie了,但是当使用FormsAuthentication.Decrypt(cacheTicket)解密时却报错了

 
System.Security.Cryptography.CryptographicException: Error occurred during a cryptographic operation.
   at System.Web.Security.Cryptography.HomogenizingCryptoServiceWrapper.HomogenizeErrors(Func`2 func, Byte[] input)
   at System.Web.Security.FormsAuthentication.Decrypt(String encryptedTicket)


百度找了许多答案,如下列举大家可以尝试,但是我都尝试了不行

1、.net framework版本不兼容问题,多个系统的版本不一样导致,尝试了修改各个系统的版本,但是没有解决

2、authentication 验证model的问题,尝试了各个模式设置,没有解决

3、后来在本地测试,发现本地iis上是可以实现单点的,能成功读取cookie信息。


总结想了一下,可能是服务器系统环境或iis环境哪里有问题?但是不可能去动这些东西,服务器是不方便动的,后面就放弃了。

最后只能换一种实现方式,去掉了FormsAuthenticationTicket保存数据信息,直接json序列化后,采用aes加密方法,把信息设置到cookie中,最后解决。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网