Традиционный режим аутентификации для веб-сайтов должен был использовать аутентификацию на основе файлов 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
Java Atlassian-Jwt и jsontoken.
Python Pyjwt.
Node.js Узел-JWT-Simple
Ruby ruby-jwt.
PHP Firebase PHP-JWT и Laxilen jwt.
.СЕТЬ jwt.
Haskell haskell-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”