Использование закрытого ключа для подписи токена JWT - PullRequest
0 голосов
/ 06 апреля 2019

Я пытаюсь загрузить закрытый ключ для подписи токена JWT. Я получил следующий код и потерпел неудачу с исключениями:

string key =@"-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCTLOQaZ3D0ayC1BSW4LCs3gYmu
eYiWDGRT491PJt/4
-----END PRIVATE KEY-----";

var signingKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(key));
var signingCredentials = new SigningCredentials(signingKey, SecurityAlgorithms.RsaSha512);

var signingKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(key));
var signingCredentials = new SigningCredentials(signingKey, SecurityAlgorithms.RsaSha512);

var header = new JwtHeader(signingCredentials);
var t = DateTime.UtcNow - new DateTime(1970, 1, 1);
int iat = (int)t.TotalSeconds;
var payload = new JwtPayload
{
   { "iss", "1234-5678-9012-1221-11111"},
   { "iat", iat },
   { "exp", iat + 900},
   { "sub", "aaaaaaaaaaa" }
};

var secToken = new JwtSecurityToken(header, payload);
var tokenString = new JwtSecurityTokenHandler().WriteToken(secToken);

=============== Ответ ===============================

Просто для тех, кто сталкивается с той же проблемой, вот решение. Вам нужно прочитать пост внизу, чтобы он заработал:

http://www.donaldsbaconbytes.com/2016/08/create-jwt-with-a-private-rsa-key/

1 Ответ

0 голосов
/ 06 апреля 2019

Ваша проблема с нижней строкой

var signingCredentials = new SigningCredentials(signingKey, SecurityAlgorithms.RsaSha512);

вы пытаетесь использовать симметричный ключ с асимметричным алгоритмом (алгоритм RSA).

Вы можете искать другой симметричный алгоритм для генерации signingCredentials что-то вроде ниже

var signingCredentials = new SigningCredentials(signingKey, SecurityAlgorithms.HmacSha256Signature);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...