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?

questionAnswers(4)

yourAnswerToTheQuestion