Почему вы используете base64 URL-кодирование с веб-токенами JSON? - PullRequest
0 голосов
/ 22 июня 2019

Сценарий:

Я читаю о веб-токенах JSON по этой ссылке (https://medium.com/vandium-software/5-easy-steps-to-understanding-json-web-tokens-jwt-1164c0adfcec). В нем рассказывается, как создать веб-токен JSON, вы создаете заголовоки полезную нагрузку, а затем создайте подпись, используя следующий псевдокод:

data = base64urlEncode( header ) + “.” + base64urlEncode( payload )
hashedData = hash( data, secret )
signature = base64urlEncode( hashedData )

Мой вопрос:

Почему псевдокод использует base64urlEncode при создании data и signature?

Возможности того, что я понимаю до сих пор:

Base64 позволяет выражать двоичные данные, используя текстовые символы из набора 64 64 символов текста Base64.Обычно это используется, когда у вас есть набор данных, которые вы хотите передать через какой-то канал, который может неправильно интерпретировать некоторые символы, но будет , а не неправильно интерпретировать символы Base64, поэтому вы кодируете его с помощью Base64, так чтоданные не будут интерпретироваться неправильно. Кодировка URL Base64, с другой стороны, аналогична кодировке Base64, за исключением того, что вы используете только подмножество набора символов Base64, которое не содержит символов, имеющих специальныеэто означает, что в URL-адресах, так что если вы используете URL-код Base64 в URL-адресе, его значение не будет неправильно истолковано.

Предполагая, что мое понимание верно, я пытаюсь понять, почему base64urlEncode()используется в вычислениях data и signature в псевдокоде выше.Будет ли подпись веб-токена JSON использоваться где-то в URL?Если да, то почему data base64urlEncode d перед хэшированием.Почему бы просто не кодировать подпись?Есть ли что-то в хеш-функции, которая требует, чтобы ее параметр data был закодирован в URL Base64?

Любое понимание будет приветствоваться.Спасибо!

...