2016-06-14 3 views
-1

Мой JWT Токен выглядит, как показано ниже:Как я могу шифровать токен JWT в Web Api C#?

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9leGFtcGxlLm9yZyIsImF1ZCI6Imh0dHA6XC9cL2V4YW1wbGUuY29tIiwiaWF0IjoxMzU2OTk5NTI0LCJuYmYiOjEzNTcwMDAwMDAsImV4cCI6MTQwNzAxOTYyOSwianRpIjoiaWQxMjM0NTYiLCJ0eXAiOiJodHRwczpcL1wvZXhhbXBsZS5jb21cL3JlZ2lzdGVyIiwidGVzdC10eXBlIjoiZm9vIn0.UGLFIRACaHpGGIDEEv-4IIdLfCGXT62X1vYx7keNMyc

Если я копирую выше JWT маркер и вставить его в https://jwt.io/ то текущая информация показывает, как этот

Image

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

Вот мой файл Startup.cs для авторизации JWT-токена.

 // Api controllers with an [Authorize] attribute will be validated with JWT 

     app.UseJwtBearerAuthentication(
      new JwtBearerAuthenticationOptions 
      { 
       AuthenticationMode = AuthenticationMode.Active, 
       AllowedAudiences = new[] { audience }, 
       IssuerSecurityTokenProviders = new IIssuerSecurityTokenProvider[] 
       { 
        new SymmetricKeyIssuerSecurityTokenProvider(issuer, secret) 
       } 
      }); 

    } 
+2

Хотя JWT позволяет шифровать токен, это часто не обязательно, потому что соединение уже защищено TLS/SSL. – Dirk

ответ

2

Почему именно вы считаете, что это проблема, когда кто-то может видеть эту информацию? Если вы используете JWT для аутентификации, то только тот, кто был просто аутентифицирован, получит этот токен и, вероятно, содержит информацию об этом пользователе. Таким образом, пользователь не может видеть информацию о себе.

Самое главное, что токен является mac'ed, так что никто не может его подделать и притвориться другим пользователем, и этого должно быть достаточно.

И как уже упоминалось в комментариях, вы должны использовать TLS в любом случае, поэтому он зашифрован при переходе.

+0

В моем токене JWT я хочу хранить информацию, такую ​​как UserID. Так что кто-то может это получить и взломать. –

+0

«Кто-то» - это только тот пользователь, у которого есть этот идентификатор или кто-то с физическим доступом к машине, если вы используете TLS, поэтому это не проблема. Знание UserId также не является проблемой (если у вас нет других более важных уязвимостей), поэтому не стоит использовать только идентификатор с SQL-сервера, например. Проблема в том, что если у вас есть запрос, вы не проверяете права пользователя и права доступа. Другое дело, что даже если userId известен пользователю, они не смогут ИЗМЕНИТЬ его в JWT, так как он mac'ed. –

Смежные вопросы