私は WIF を使用して新しい Web サイトを認証してきました。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を使用するように実装を変更したので、これは私に影響を与えないはずなので、これが私を暗い路地に導いていると感じています。
私を助けるためのアイデアはありますか?