Как сгенерировать токен, используя пару открытого / закрытого ключа в ядре do tnet? - PullRequest
0 голосов
/ 19 апреля 2020

Я пытаюсь сгенерировать токен 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: «Не удается найти запрошенный объект.

Любая помощь будет высоко оценена.

...