Почему токен JWT показывает полезную нагрузку, даже если я не предоставил секрет (подпись) в Jwt.io? - PullRequest
0 голосов
/ 01 октября 2019

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjIsImlhdCI6MTU2ODY1NjI1OX0.E2TNtWjqyPC-4myEom6leLJgE96ZlQOq0-mcBr3p5QU

Если мы поместим токен, сгенерированный из моего кода, с помощью JsonWebToken на сайт Jwt.io, он будет немедленно декодирован, хотя я не предоставил секрет для проверки. Я не знаю, почему это показывает. Может кто-нибудь объяснить причину этого?

- Тогда какова цель СЕКРЕТНО в Jwt ??

1 Ответ

1 голос
/ 01 октября 2019

Я думаю, вы немного запутались между шифрованием и подписью.

Веб-токен JSON не зашифрован, он просто закодирован в base64, что означает, что его очень легко декодировать и просматривать любому.

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

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

Обратите внимание, что, как упомянул @FlorentMorselli, существует такая мысль, как зашифрованный токен, называемый JWE .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...