Пустой ключевой элемент .NET Core DataProtection в исключении - PullRequest
0 голосов
/ 13 июня 2019

Мне стало известно, что у меня проблема с настройкой DataProtection.

Когда экземпляр (перезапуск) запускает его иногда (как ни странно, не всегда), показываются следующие исключения:

Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[24]
        An exception occurred while processing the key element ''.
  System.Security.Cryptography.CryptographicException: Unable to retrieve the decryption key.
     at System.Security.Cryptography.Xml.EncryptedXml.GetDecryptionKey(EncryptedData encryptedData, String symmetricAlgorithmUri)
     at System.Security.Cryptography.Xml.EncryptedXml.DecryptDocument()
     at Microsoft.AspNetCore.DataProtection.XmlEncryption.EncryptedXmlDecryptor.Decrypt(XElement encryptedElement)
     at Microsoft.AspNetCore.DataProtection.XmlEncryption.XmlEncryptionExtensions.DecryptElement(XElement element, IActivator activator)
     at Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager.Microsoft.AspNetCore.DataProtection.KeyManagement.Internal.IInternalXmlKeyManager.DeserializeDescriptorFromKeyElement(XElement keyElement)
  Microsoft.AspNetCore.DataProtection.KeyManagement.DefaultKeyResolver[12]
        Key {af566b69-5bd7-42ee-b630-a4eaa02526db} is ineligible to be the default key because its CreateEncryptor method failed.
  System.Security.Cryptography.CryptographicException: Unable to retrieve the decryption key.
     at System.Security.Cryptography.Xml.EncryptedXml.GetDecryptionKey(EncryptedData encryptedData, String symmetricAlgorithmUri)
     at System.Security.Cryptography.Xml.EncryptedXml.DecryptDocument()
     at Microsoft.AspNetCore.DataProtection.XmlEncryption.EncryptedXmlDecryptor.Decrypt(XElement encryptedElement)
     at Microsoft.AspNetCore.DataProtection.XmlEncryption.XmlEncryptionExtensions.DecryptElement(XElement element, IActivator activator)
     at Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager.Microsoft.AspNetCore.DataProtection.KeyManagement.Internal.IInternalXmlKeyManager.DeserializeDescriptorFromKeyElement(XElement keyElement)
     at Microsoft.AspNetCore.DataProtection.KeyManagement.DeferredKey.c__DisplayClass1_0.b__0()
     at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode)
     at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor)
     at System.Lazy`1.CreateValue()
     at Microsoft.AspNetCore.DataProtection.KeyManagement.KeyBase.get_Descriptor()
     at Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.CngGcmAuthenticatedEncryptorFactory.CreateEncryptorInstance(IKey key)
     at Microsoft.AspNetCore.DataProtection.KeyManagement.KeyBase.CreateEncryptor()
     at Microsoft.AspNetCore.DataProtection.KeyManagement.DefaultKeyResolver.CanCreateAuthenticatedEncryptor(IKey key)

При проверке хранилища защиты данных обнаруживается растущий список ключей, который, как я полагаю, не соответствует ожидаемому поведению.

Исследования показали, что во многих журналах возникают похожие проблемы.В моем случае мне интересно, почему во второй строке журнала отображается пустой ключевой элемент ''.Журналы в других отчетах всегда показывают ключевой элемент.

Настройка защиты данных выглядит как

services.AddDataProtection()
    .ProtectKeysWithCertificate(cert)
    .PersistKeysToStackExchangeRedis(conmx, "dpk-application-1")
    .SetApplicationName("application-1");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...