Я пытаюсь сгенерировать токен jwt. В большинстве статей, которые я прочитал, для генерации токена используется ключ симметрии c. Но я хочу создать токен, используя пары открытого и закрытого ключей. Я уже сгенерировал закрытые и публичные c ключи, используя puttyGen. Но я пытаюсь сгенерировать токен с помощью приведенного ниже кода:
byte[] file = System.IO.File.ReadAllBytes("F:\\CustomeCertificates\\private.ppk");
var key = new X509SecurityKey(new X509Certificate2(file)) as SecurityKey;
var myIssuer = "http://identity.com";
var myAudience = "http://audience.com";
var tokenHandler = new JwtSecurityTokenHandler();
var tokenDescriptor = new SecurityTokenDescriptor
{
Subject = new ClaimsIdentity(new Claim[]
{
new Claim(ClaimTypes.NameIdentifier, UserId.ToString()),
}),
Expires = DateTime.UtcNow.AddDays(7),
Issuer = myIssuer,
Audience = myAudience,
SigningCredentials = new SigningCredentials(key, SecurityAlgorithms.RsaSha256Signature)
};
var token = tokenHandler.CreateToken(tokenDescriptor);
return tokenHandler.WriteToken(token);
При запуске приложения появляется сообщение об ошибке:
Internal.Cryptography.CryptoThrowHelper.WindowsCryptographicException: «Не удается найти запрошенный объект.
Любая помощь будет высоко оценена.