我一直在使用 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,这可能是由于应用程序池上的 loadUserProfile 设置设置为 false。
我有一种感觉,正如我所想的那样,这让我走上了一条黑暗的小巷,因为我已经将实现更改为使用 RSA,这不应该影响我。
有什么想法可以帮助我吗?