Ошибка безопасной обработки при генерации токена JWT с RSA - PullRequest
0 голосов
/ 07 июня 2019

Я пытаюсь сгенерировать токен JWT с алгоритмом RSA для подписи. Но я получаю это исключение System.ObjectDisposedException: 'Safe handle has been closed' по конвертации токена в формат json по этому методу.

jwtToken = handler.WriteToken(token);

Ниже приведен код, используемый для генерации jwt.

public static string GetRsaToken()
{
    string jwtToken;
    RsaSecurityKey securityKey;
    using (RSA privateRsa = RSA.Create())
    {
        var privateKeyXml = File.ReadAllText("../../private-key.xml");
        privateRsa.FromXmlString(privateKeyXml);
        securityKey = new RsaSecurityKey(privateRsa);
        SecurityTokenDescriptor descriptor = new SecurityTokenDescriptor
        {
            Audience = "Noob",
            Issuer = "Saibot",
            Subject = new ClaimsIdentity(new[] {
              new Claim(ClaimTypes.Name, ""),}),
            Expires = DateTime.UtcNow.AddMinutes(30),
            SigningCredentials = new SigningCredentials(securityKey,SecurityAlgorithms.RsaSha256)
        };
        JwtSecurityTokenHandler handler = new JwtSecurityTokenHandler();
        JwtSecurityToken token = handler.CreateJwtSecurityToken(descriptor);
        jwtToken = handler.WriteToken(token); // exception on this line
    }
    return jwtToken;
}

Использование этой библиотеки nuget для jwt. System.IdentityModel.Tokens.Jwt

Я не сталкиваюсь с этой проблемой при создании токена с использованием подписи симметричным ключом с помощью HMACSHA256.

1 Ответ

0 голосов
/ 07 июня 2019

Это не происходит в последней версии (5.4.0) библиотеки System.IdentityModel.Tokens.Jw t.

Ранее я использовал версию библиотеки 5.0.0.

...