Что такое JWT и для чего он используется?

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

вступление

JWT означает веб-токен JSON, а JSON означает нотацию объектов JavaScript. Когда мы открываем это двойное сокращение, мы понимаем, что имеем дело с объектом в форме JavaScript, который будет использоваться в качестве веб-токена или, другими словами, для получения доступа, так же, как вы использовали бы жетон аркады, чтобы получить доступ к игре.

Для чего это используется?

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

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

Давайте посмотрим на примере, как вы могли бы сделать это, чтобы лучше понять, какова его цель.

Как это использовать

Вы используете случайный набор символов и чисел (желательно длинных), например:

342789rowacy847qoacty4387qoctywoq387

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

Фактический JWT тоже представляет собой длинный набор символов, например:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImp0aSI6ImFhNTcwNGFhLTllODgtNGY1OS1iMTgzLWIwODY1NGFjNjBiNSIsImlhdCI6MTYyNDE5OTg1OCwiZXhwIjoxNjI0MjAzNDU4fQ.IsmBAOZlOe4uzetx7wBO6HDgcgPF0BHAzJHJMqporac

И мы можем использовать этот пример, который дает https://www.jsonwebtoken.io/, когда вы впервые заходите на сайт. На этом сайте вы также можете вручную создать свой JWT, но это следует использовать только для тестирования.

См. также:  npm weekly # 115: объявляя о 2FA и токенах только для чтения, мы перенесли щенков на Node.js

Три части

В нашем случае, допустим, нам нужно получить доступ к API и сообщить ему, что я администратор и меня зовут Джон Доу. Мы бы передали эту информацию в генератор JWT как объект JS (который является полезной нагрузкой), и это составляет 1/3 JWT.

Другая часть JWT — это заголовок, который определяет тип, а также алгоритм, используемый для его шифрования и дешифрования. В этом случае:

{
«тип»: «JWT»,
«алгоритм»: «HS256»
}

И последняя часть — это фактический Ключ, о котором мы говорили ранее, который в данном примере является «секретным», но НИКОГДА не делайте этого, сделайте его как можно более случайным, потому что в противном случае ваш секретный код может быть утрачен, а это очень плохо.

Эти три части составляют JWT, а также то, как вы можете безопасно передавать информацию для получения, обновления, запроса и т. Д.

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

Есть много вещей, которые вы можете добавить к полезной нагрузке, например, информационную часть JWT. Это может быть что угодно: роли, логические значения или слова доступа, дополнительная информация, а также ДАТЫ.

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

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

См. также:  Коротко о WebAssembly

Заключение

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

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

Больше контента на plainenglish.io

Понравилась статья? Поделиться с друзьями:
IT Шеф
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: