. NET Ключ расшифровки Core Jwt Token вызывает исключение - PullRequest
0 голосов
/ 21 апреля 2020

Вот как я генерирую свои публичные c и закрытые ключи:

var keyDirectory = System.IO.Directory.CreateDirectory(Environment.GetEnvironmentVariable(MSCASGlobals.KeyStorage));

foreach (FileInfo file in keyDirectory.GetFiles())
{
    file.Delete();
}


var rsa = new RSACryptoServiceProvider(2048);
var rsaKeyPair = DotNetUtilities.GetRsaKeyPair(rsa);

var pkWriter = new StringWriter();
var pkPemWriter = new PemWriter(pkWriter);
pkPemWriter.WriteObject(rsaKeyPair.Private);
pkPemWriter.Writer.Flush();
string privateKey = pkWriter.ToString();

var pbWriter = new StringWriter();
var pbPemWriter = new PemWriter(pbWriter);
pbPemWriter.WriteObject(rsaKeyPair.Public);
pbPemWriter.Writer.Flush();
string publicKey = pbWriter.ToString();

using (StreamWriter outputFile = new StreamWriter(Path.Combine(keyDirectory.ToString(), "privatekey.pfx")))
{
    outputFile.Write(privateKey);
}

using (StreamWriter outputFile = new StreamWriter(Path.Combine(keyDirectory.ToString(), "publickey.pub")))
{
    outputFile.Write(publicKey);
}

Затем я запускаю свой валидатор jwt с этими параметрами в файле Startup.cs

x.TokenValidationParameters = new TokenValidationParameters
{
    ValidateIssuerSigningKey = true,
    IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Environment.GetEnvironmentVariable(MSCASGlobals.MS_Jwt_SecretKey))),
    ValidateIssuer = true,
    ValidateAudience = true,
    ValidateLifetime = true,
    ValidIssuer = Environment.GetEnvironmentVariable(MSCASGlobals.MS_Jwt_Issuer),
    ValidAudience = Environment.GetEnvironmentVariable(MSCASGlobals.MS_Jwt_Issuer),
    ClockSkew = TimeSpan.Zero,
    //Generate Key with password
    TokenDecryptionKey = new X509SecurityKey(new X509Certificate2(Path.Combine(Environment.GetEnvironmentVariable(MSCASGlobals.KeyStorage),"privatekey.ppk")))
};

Однако , когда я достигаю этот код и пытаюсь пройти, я получаю следующее исключение:

Исключение: «Internal.Cryptography.CryptoThrowHelper.WindowsCryptographicException» в System.Security.Cryptography.X509Certificates.dll. «System.Reflection.TargetInvocationException» в System.Private.CoreLib.dll сгенерировано исключение: «Internal.Cryptography.CryptoThrowHelper.WindowsCryptographicException» в System.Private.CoreLib.dll сгенерировано исключение: «Internal.Cryptography.CryptoExgraph.CryptoWindows» Private.CoreLib.dll

Я что-то не так делаю? Мне удалось найти файл правильно. Что мне нужно для шифрования моего jwt?

...