# JWT. Его составляющие и особенности использования

[JWT (Json Web Token)](https://jwt.io/introduction/) - стандарт по созданию авторизационных токенов.&#x20;

Этот стандарт позволяет:

* передать в токен необходимую нам информацию (например, id пользователя) и использовать ее при получении токена (для вытягивания необходимого пользователя из базы данных и т. д.)
* удостоверится в целостности информации в токене с помощью подписи (подробнее об этом далее)

JWT-стадарт предусматривает, что токен будет состоять из [3-х частей](https://jwt.io/#debugger-io):

* заголовков (headers)
* пейлоада (payload)
* подписи (signature)

![](https://1472948722-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M9nDctULH0TDcG_q95e%2F-MAROVOMRrrobbUgPJAT%2F-MBW4u_35YgdcDWRWp98%2FScreenshot%202020-04-10%20at%2023.08.56.png?alt=media\&token=1546bf09-bd74-4b19-98e7-b4c9c6f2c46d)

**Заголовки (обозначены красным)** - информация о том, как был создан токен (в частности, алгоритм использованый для подписи пейлоада).&#x20;

**Пейлоад (обозначен фиолетовым)** - собственно, информация, которую мы передали при создании токена в формате json (как правило, id пользователя или id сессии).

{% hint style="danger" %}
Следует иметь в виду, что информация в пейлоаде находится в незашифрованном формате (просто json-строка, закодированная в base64), поэтому не стоит хранить важную информацию в jwt-токене, так как ее может увидеть любой желающий.
{% endhint %}

**Подпись (обозначена синим)** - это захешированный с помощью ключа, пейлоад. Подпись позволяет убедиться, что со времени создания токена, данные в пейлоаде оставались неизменными (последующим сравнением хэшей пейлоада и подписи).
