2016-11-02 9 views
0

Прошу прощения за глупый вопрос, но я новичок в использовании токена и, возможно, ничего не понимаю.Какова цель параметра заголовка JWT?

Я начал читать о JWT, и я смущен о его структуре. В документации сказано, что она состоит из трех частей:

header 
payload 
signature 

Я понимаю, что в полезной нагрузке мы храним информацию и в подписи части мы держим подпись для проверки полезной нагрузки. Но какова цель части заголовка? В нем говорится, что обычно он состоит из двух частей: типа токена, который является JWT, и используемого алгоритма хеширования, такого как HMAC SHA256 или RSA.

  1. Если сервер подписал токен, то он знает, какой метод он использует. Таким образом, это не полезная информация для сервера. Он не будет использовать эту информацию вообще.
  2. Разве это не намек для хакеров? Они будут знать, какой метод использует ваш сервер. Я не уверен, что это хорошая практика для повышения безопасности.

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

ответ

1

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

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

Представьте, что ваш сервер перешел на новую пару ключей для подписания JWT, который он производит и потребляет сам. Затем вы можете захотеть проверить существующие токены, подписанные со старым ключом, на некоторое время. В этом случае вам нужно знать, какой ключ использовался для подписи JWT, когда вы его получили.

+0

Благодарим за помощь! Я об этом не думаю. Это действительно имеет смысл. – Alexandr