Зашифровать токен JWT - PullRequest
       7

Зашифровать токен JWT

0 голосов
/ 04 марта 2019

Мы используем JWT Nuget для создания и проверки токена.Вот код, который мы используем для создания токена

private string CreateAccessToken(Dictionary<string, object> payload)
    {
        IJwtAlgorithm algorithm = new HMACSHA256Algorithm();
        IJsonSerializer serializer = new JsonNetSerializer();
        IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
        IJwtEncoder encoder = new JwtEncoder(algorithm, serializer, urlEncoder);
        var token = encoder.Encode(payload, GetJWTKey());
        return token;
    }

Насколько я понимаю, он не шифрует токен, так как я смог проанализировать токен, просмотрев jwt.io ибыл в состоянии прочитать содержимое.Я хотел бы зашифровать токен так, чтобы он не анализировался.В JWT Nuget мне не удалось найти метод, с помощью которого я могу зашифровать токен.

Так как мне подписать и зашифровать токен с помощью JWT Nuget ?

Редактировать:

Я понимаю, что JWT не требует никакого шифрования, так как только аутентифицированный пользователь сможет прочитать токен, что означает, что я читаю омое собственное содержание, а также фактическое общение будет через защищенный слой.Так что на самом деле пока нет необходимости шифровать токен, мое требование заключается в том, чтобы токен не должен быть читаемым человеком

1 Ответ

0 голосов
/ 04 марта 2019

Ваше понимание верно, но вы упускаете важную функцию JWT: шифрование токена не является целью JWT.
Секрет, используемый алгоритмом, используется для подписи токена, а не для его шифрования, для болееинформацию смотрите в RFC 7515 .
. Как указано в комментариях ниже, также существует RFC 7516 , Json Web Encryption (JWE).
Для использования JWEвнутри приложения C # вы должны использовать пакет System.IdentityModel.Tokens.Jwt, а затем что-то вроде:

var handler = new JwtSecurityTokenHandler();
var tokenDescriptor = new SecurityTokenDescriptor
{
    Audience = "audience",
    //other property
    EncryptingCredentials = new X509EncryptingCredentials(new X509Certificate2("path/to/public/key"))
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...