WIF-ID1014: A assinatura não é válida. Os dados podem ter sido adulterados
Eu tenho usado o WIF para autenticar nosso novo site, o STS é baseado na implementação do stter-sts.
Para permitir que isso funcione corretamente em um ambiente com carga balanceada, usei o seguinte no global.asax para substituir o comportamento do certificado padrão.
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);
}
Isso tudo está funcionando e as pessoas têm usado com sucesso o sistema, mas de vez em quando temos uma explosão de:
ID1014: A assinatura não é válida. Os dados podem ter sido adulterados.
nos logs de eventos, então eu mudei o rastreio WIF e vi o seguinte mencionado no log.
ID1074: Ocorreu uma CryptographicException ao tentar criptografar o cookie usando a API ProtectedData (consulte a exceção interna para obter detalhes). Se você estiver usando o IIS 7.5, isso pode ocorrer porque a configuração loadUserProfile no Pool de Aplicativos está definida como false.
Tenho a sensação de que isso está me levando a um beco escuro, pois achei que, por ter mudado a implementação para usar o RSA, isso não deveria me afetar.
Alguma idéia para me ajudar?