我正在开发一个自定义SSO解决方案,并遇到FormsAuthentication.Encrypt和FormsAuthentication.Decrypt的一些问题。
当用户在我的HttpModule中进行身份验证时,我构建了一个FormsAuthenticationTicket对象,使用FormsAuthentication.Encrypt加密它并在Response上设置它。然后在我的网站上的后续调用中,我获取cookie值并调用FormsAuthentication.Decrypt。如果你有一个有效用户的令牌,我会通过你而不需要重新认证。
我在Web.configs中设置了一个静态MachineKey。
问题是,对于某些页面,Decrypt方法对于某些.css和.js文件(尽管不是全部,但不是应用程序的主要部分)都会失败,并出现InvalidEncryptedTicket错误。
任何人都知道会导致什么原因?
//Encryption on successful authentication
FormsAuthenticationTicket fmaTicket = new FormsAuthenticationTicket(0, ticket.TicketValue.ToString(), DateTime.Now,
DateTime.Now + new TimeSpan(0, 0, 20, 0), false, ticket.Principal);
authCookie = new HttpCookie("AUTHTICKET", FormsAuthentication.Encrypt(fmaTicket));
//Decryption when cookie is present
FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);
答案 0 :(得分:0)
我将其切换为使用Rijindel管理加密类(http://msdn.microsoft.com/en-us/library/system.security.cryptography.rijndaelmanaged.aspx)而不是FormsAuthentication加密和解密,并且没有更多的问题。