Набор ключей CryptographicException не существует

Я использую сервер Thinktecture Identity и запускаю его в Azure. Проблема, с которой я сталкиваюсь, заключается в том, что иногда, когда я читаю XML-файл метаданных Федерации или при входе в систему, я получаю, что этот набор ключей не существует Исключение CryptoGraphic. Теперь я знаю, что эти исключения могут быть вызваны, если у нас нет надлежащих разрешений, но дело в том, что иногда это происходит, а в других случаях все работает нормально. Я не уверен, как это отладить. Может кто-нибудь, пожалуйста, вести меня в каком-то направлении.

Кроме того, если у кого-то есть какие-либо идеи о том, какой сертификат пытается прочитать эта системная сборка и как она настроена, это также будет очень полезно.

at System.Security.Cryptography.Utils.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer)
at System.Security.Cryptography.Utils.GetKeyPairHelper(CspAlgorithmType keyType, CspParameters parameters, Boolean randomKeyContainer, Int32 dwKeySize, SafeProvHandle& safeProvHandle, SafeKeyHandle& safeKeyHandle)
at System.Security.Cryptography.RSACryptoServiceProvider.GetKeyPair()
at System.Security.Cryptography.RSACryptoServiceProvider..ctor(Int32 dwKeySize, CspParameters parameters, Boolean useDefaultKeySize)
at System.Security.Cryptography.X509Certificates.X509Certificate2.get_PrivateKey()
at System.IdentityModel.Tokens.X509AsymmetricSecurityKey.get_PrivateKey()
at System.IdentityModel.Tokens.X509AsymmetricSecurityKey.GetSignatureFormatter(String algorithm)
at System.IdentityModel.SignedXml.ComputeSignature(SecurityKey signingKey)
at System.IdentityModel.EnvelopedSignatureWriter.ComputeSignature()
at System.IdentityModel.EnvelopedSignatureWriter.OnEndRootElement()
at System.IdentityModel.EnvelopedSignatureWriter.WriteEndElement()
at System.IdentityModel.Metadata.MetadataSerializer.WriteEntityDescriptor(XmlWriter inputWriter, EntityDescriptor entityDescriptor)
at System.IdentityModel.Metadata.MetadataSerializer.WriteMetadataCore(XmlWriter writer, MetadataBase metadataBase)
at System.IdentityModel.Metadata.MetadataSerializer.WriteMetadata(XmlWriter writer, MetadataBase metadata)
at PeachCourt.Auth.API.Protocols.FederationMetadata.WSFederationMetadataGenerator.Generate()
at Test.Auth.API.Protocols.FederationMetadata.FederationMetadataController.<Generate>b__1()
at Test.Auth.API.Helper.Cache.ReturnFromCache[T](ICacheRepository cacheRepository, String name, Int32 ttl, Func`1 action)
at Test.Auth.API.Protocols.FederationMetadata.FederationMetadataController.Generate()

person sp9    schedule 04.09.2014    source источник
comment
Какую версию сервера идентификации вы используете? Как он развернут? У меня нет опыта работы с azure, но я уже некоторое время использую idsrv на выделенном сервере. Есть ли пул приложений, как в IIS? Под каким пользователем работает? Этот сертификат находится в локальном хранилище?   -  person pepo    schedule 05.09.2014


Ответы (1)


Он пытается прочитать сертификат, который вы настроили для подписи токена. Сообщение об ошибке обычно указывало на то, что учетная запись рабочего процесса не имеет доступа для чтения к закрытому ключу.

person leastprivilege    schedule 05.09.2014
comment
Так что он пытается прочитать его из базы данных конфигурации. Я не уверен, как он внезапно перестает работать, а затем снова начинает работать. Я исследую это больше. Также большое спасибо за удивительный Thinktecture STS. Полегче. - person sp9; 05.09.2014