我一直在使用WIF来认证我们的新网站,STS基于starter-sts实现。
为了使其在我们的负载均衡环境中正常工作,我在global.asax中使用了以下内容来覆盖默认的证书行为。
void onServiceConfigurationCreated(object sender, ServiceConfigurationCreatedEventArgs e)
{
List<CookieTransform> sessionTransforms = new List<CookieTransform>(new CookieTransform[]
{
new DeflateCookieTransform(),
new RsaEncryptionCookieTransform(e.ServiceConfiguration.ServiceCertificate),
new RsaSignatureCookieTransform(e.ServiceConfiguration.ServiceCertificate)
});
SessionSecurityTokenHandler sessionHandler = new SessionSecurityTokenHandler(sessionTransforms.AsReadOnly());
e.ServiceConfiguration.SecurityTokenHandlers.AddOrReplace(sessionHandler);
}
这个系统一直在正常运行,人们成功地使用它,然而偶尔我们会收到以下警告信息:
ID1014:签名无效。数据可能已被篡改。
在事件日志中,所以我打开了 WIF 跟踪并在日志中看到了以下内容。
ID1074:使用 ProtectedData API 加密 cookie 时发生 CryptographicException 异常(有关详细信息,请参见内部异常)。如果您使用的是 IIS 7.5,则可能是由于 Application Pool 上的 loadUserProfile 设置为 false 导致的。
我觉得这可能会让我走向一个黑暗的小巷,因为我认为因为我已经更改了实现方式来使用 RSA,这不应该影响我。
有什么想法可以帮助我吗?