В C # Как проверить JWT, используя открытый ключ ECDSA, который был подписан закрытым ключом ECDSA - PullRequest
0 голосов
/ 04 июня 2018

Я хочу проверить jwt, который был подписан с помощью алгоритма ECDSA SHA256.Я использую библиотеку Dot Net System.IdentityModel.Tokens.Jwt.У меня есть доступ к открытому ключу.

1 Ответ

0 голосов
/ 17 августа 2018

Если у вас есть доступ к открытому ключу, один из способов сделать это - использовать класс JwtSecurityTokenHandler, который также используется для генерации Jwt.Он находится в том же пространстве имен (System.IdentityModel.Tokens).

Пример кода:

bool ValidateEcdsa384JwtToken(string tokenString, ECDsa pubKey) 
{
    try
    {
        var securityToken = new JwtSecurityToken(tokenString);
        var securityTokenHandler = new JwtSecurityTokenHandler();
        var validationParameters = new TokenValidationParameters() {
            ValidIssuer = securityToken.Issuer,
            ValidAudience = securityToken.Audiences.First(),
            IssuerSigningKey = new ECDsaSecurityKey(pubKey)
        };

        SecurityToken stoken;
        var claims = securityTokenHandler.ValidateToken(tokenString, validationParameters, out stoken);
        return true;
    }
    catch (System.Exception e)
    {
        return false;
    }
}
...