Я использовал 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: Возникло CryptographicException при попытке зашифровать файл cookie с помощью API ProtectedData (подробности см. во внутреннем исключении). Если вы используете IIS 7.5, это может быть связано с тем, что для параметра loadUserProfile в пуле приложений задано значение false.
У меня такое ощущение, что это ведет меня в темный переулок, как я и думал, поскольку я изменил реализацию для использования RSA, это не должно повлиять на меня.
Любые идеи, которые помогут мне?