Рубрики
Без рубрики

JSON Web Token Учебник на примере в Python

Комплексное учебное пособие на веб-токен JSON. Теги с Python, Django, JWT.

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

В этой статье мы собираемся узнать о закреплении нашего API отдыха с JSON Web Tookens. JSON WEB TOKENS – это открытый, отрасль стандарт RFC 7519 Способ представлять претензий надежно между двумя сторонами. JWT оказывается подкрепленным компаниями, такими как Firebase, Google, Microsoft и Zendesk.

Понимание с некомиром

У всех нас есть дебетовая карта. После подключения к банкомату мы можем отозвать сумму. Дебетовая карта дает доступ только к моей учетной записи и нельзя использовать, когда истек. JSON WEB TOKENS аналогичны, вы подключаете ваш токен к системе аутентификации и получаете доступ к ограниченным данным, которые принадлежат вам.

Работа jwt.

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

Позволяет взглянуть на это с помощью этой простой иллюстрации –

Структура jwt

JSON WEB. Пример токена:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ0b3B0YWwuY29tI iwiZXhwIjoxNDI2NDIwODAwLCJodHRwOi8vdG9wdGFsLmNvbS9qd3RfY2xhaW1zL2lzX2FkbWluI jp0cnVlLCJjb21wYW55IjoiVG9wdGFsIiwiYXdlc29tZSI6dHJ1ZX0.yRQYnWzskCZUxPwaQupWk iUzKELZ49eM7oWxAQK_ZXw

Поскольку есть 3 части, разделенные A., каждая секция создана по-разному. У нас есть 3 части, которые являются:

  • заголовок
  • полезная нагрузка
  • подпись

<заголовок кодированного кодированного базового кодирования>. .

Заголовок

Заголовок JWT заявляет, что закодированный объект представляет собой JSON Web-токен (JWT), и JWT – это JWS, который Maced, используя алгоритм HMAC SHA-256. Например:

{
    "alg": "HS256",
    "typ": "JWT"
}

«alg» – это строка и указывает алгоритм, используемый для подписания токена.

«Type» – это строка для токена, по умолчанию для «JWT». Указывает, что это токен JWT.

Полезная нагрузка (претензии)

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

Ниже приведены атрибуты претензии:

  • МКС: Эмитент токена

  • сумасшедший Предмет токена

  • AUD: Аудитория токена

  • QSH: Запрос струны хэш

  • EXP: Время истечения токена, определенное в UNIX времени

  • NBF: «Не до» времени, которое идентифицирует время, прежде чем JWT не должен быть принят для обработки

  • IAT: «Выдано в« Время, в Unix время, при котором был выдан токен

  • JTI: jwt id Election предоставляет уникальный идентификатор для JWT

Подпись

Подпись

Спецификации веб-подписи JSON следуют за то, чтобы генерировать окончательный подписанный токен. Заголовок JWT, применяется кодированные претензии, и применяется алгоритм шифрования, такой как HMAC SHA-256. Секретный ключ подписей проводится сервером, чтобы он сможет проверить существующие токены.

Популярные библиотеки для JWT

Преимущества подхода на основе токена

  • Jwt подход позволяет нам делать звонки AJAX на любой сервер или домен. Поскольку заголовок HTTP используется для передачи информации пользователя.

  • Их не нужно иметь отдельный магазин сеанса на сервере. Сам JWT передает всю информацию.

  • Серверная сторона уменьшает только к API и статическим активам (HTML, CSS, JS), можно подавать через CDN.

  • Система аутентификации мобильна готова, токен может быть сгенерирован на любом устройстве.

  • Поскольку мы устранили необходимость файлов cookie, нам больше не нужно защищать от перекрестных участков.

  • API ключей обеспечивают либо – или раствор, тогда как JWT обеспечивает много гранулированного элемента управления, который можно проверить для любой цели отладки.

  • Ключи API зависят от центрального хранения и сервиса. JWT может быть выпущен самоизлучением или внешняя служба может выдать это с разрешенными областями и истечением.

Создание JWT в Python

Кодирование полезной нагрузки

>>> import jwt
>>> encoded = jwt.encode({'some': 'payload'}, 'secret', algorithm='HS256')
    'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzb21lIjoicGF5bG9hZCJ9.4twFt5NiznN84AWoo1d7KO1T_yoc0Z6XOpOVswacPZg'

Декодирование полезной нагрузки на сервере

>>> jwt.decode(encoded, 'secret', algorithms=['HS256'])
{'some': 'payload'}

Надеюсь, что статья была помощи. Не стесняйтесь ставить свои мысли в комментарии.

Статья первоначально появилась на Apcelent Tech Blog Отказ

Оригинал: “https://dev.to/apcelent/json-web-token-tutorial-with-example-in-python-23kb”