Для CspKeyContainerInfo требуется Windows Cryptographic API (CAPI), который недоступен на этой платформе - PullRequest
0 голосов
/ 14 января 2019

Я обновил свой проект до версии 2.2 ядра asp.net с v2.1, и все использовалось для нормальной работы. В приведенном ниже коде я пытаюсь инициализировать ключ RSA для IdentityServer4 (v2.3.2 ) и при попытке получить токен я получаю следующую ошибку.

        try
        {
            var rsaProvider = new RSACryptoServiceProvider(2048);

            var rsaParametersPrivate =
                RsaExtensions.RsaParametersFromXmlFile(Configuration.GetSection("JwtSettings:rsaPrivateKeyXml")
                    .Value);
            rsaProvider.ImportParameters(rsaParametersPrivate);
            var securityKey = new RsaSecurityKey(rsaProvider);
            _signingCredentials = new SigningCredentials(securityKey, SecurityAlgorithms.RsaSha256);

            _logger.LogInformation("InitializeRsaKey() successfully executed.");
        }
        catch (Exception ex)
        {
            var exception = new Exception("Identity Server RSA Key initialization failed. " + ex);
            _logger.LogError(exception, "InitializeRsaKey() method failed.");
            throw exception;
        }

Для CspKeyContainerInfo требуется Windows Cryptographic API (CAPI), который недоступен на этой платформе. ошибка.

Кроме того, мой проект выполняется на компьютере CentOS, в то время как я разрабатываю свой проект на Windows 10. Итак, я знаю, что чего-то существующего в Windows не хватает в Linux. Для решения проблемы приветствуется любая помощь и предложение.

1 Ответ

0 голосов
/ 14 января 2019

Я выкопал некоторые проблемы с github и обнаружил, что RSACryptoServiceProvider() intherits ICspAsymmetricAlgorithm, и этот класс поддерживается только в Windows. За подробностями обращайтесь здесь . Чтобы исправить проблему, я заменил строку var rsaProvider = new RSACryptoServiceProvider(2048); на var rsaProvider = RSA.Create(2048);, и она отлично работает с .NET Core v2.2 на CentOS. Надеюсь, это поможет тем, у кого такая же проблема.

...