JWT — это то, с чем новичок в мире программирования не сталкивается слишком часто, но, на мой взгляд, это абсолютно необходимая вещь для изучения, даже если это просто понимание концепции.
вступление
JWT означает веб-токен JSON, а JSON означает нотацию объектов JavaScript. Когда мы открываем это двойное сокращение, мы понимаем, что имеем дело с объектом в форме JavaScript, который будет использоваться в качестве веб-токена или, другими словами, для получения доступа, так же, как вы использовали бы жетон аркады, чтобы получить доступ к игре.
Для чего это используется?
JWT используется для безопасного доступа и связи с различными объектами, используя ключ для шифрования объекта, а также для того, чтобы никто не мог вручную создавать и отправлять эти объекты без секретного ключа.
Что все это значит? Проще говоря, вы используете случайный ключ для аутентификации и проверки JWT, а затем передаете объект.
Давайте посмотрим на примере, как вы могли бы сделать это, чтобы лучше понять, какова его цель.
Как это использовать
Вы используете случайный набор символов и чисел (желательно длинных), например:
342789rowacy847qoacty4387qoctywoq387
и используйте его в качестве ключа, который вы передадите для генерации JWT, а также для того, чтобы убедиться, что он был сделан правильным человеком или программой.
Фактический JWT тоже представляет собой длинный набор символов, например:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImp0aSI6ImFhNTcwNGFhLTllODgtNGY1OS1iMTgzLWIwODY1NGFjNjBiNSIsImlhdCI6MTYyNDE5OTg1OCwiZXhwIjoxNjI0MjAzNDU4fQ.IsmBAOZlOe4uzetx7wBO6HDgcgPF0BHAzJHJMqporac
И мы можем использовать этот пример, который дает https://www.jsonwebtoken.io/, когда вы впервые заходите на сайт. На этом сайте вы также можете вручную создать свой JWT, но это следует использовать только для тестирования.
Три части
В нашем случае, допустим, нам нужно получить доступ к API и сообщить ему, что я администратор и меня зовут Джон Доу. Мы бы передали эту информацию в генератор JWT как объект JS (который является полезной нагрузкой), и это составляет 1/3 JWT.
Другая часть JWT — это заголовок, который определяет тип, а также алгоритм, используемый для его шифрования и дешифрования. В этом случае:
{
«тип»: «JWT»,
«алгоритм»: «HS256»
}
И последняя часть — это фактический Ключ, о котором мы говорили ранее, который в данном примере является «секретным», но НИКОГДА не делайте этого, сделайте его как можно более случайным, потому что в противном случае ваш секретный код может быть утрачен, а это очень плохо.
Эти три части составляют JWT, а также то, как вы можете безопасно передавать информацию для получения, обновления, запроса и т. Д.
Добавление к полезной нагрузке
Есть много вещей, которые вы можете добавить к полезной нагрузке, например, информационную часть JWT. Это может быть что угодно: роли, логические значения или слова доступа, дополнительная информация, а также ДАТЫ.
Даты важны, потому что вы можете передать дату создания, а также дату истечения срока действия, что добавляет дополнительный уровень безопасности, не позволяя повторно использовать JWT, что также является причиной того, что некоторые сайты выходят из вашей учетной записи и сказать вам, что сессия истекла.
Кроме того, если у вас есть система ролей или система разрешений, вы можете контролировать, кто к чему имеет доступ. Базовый пользователь может иметь доступ только для изменения имени пользователя, тогда как администратор может изменить гораздо больше, а пользователь, который не вошел в систему, может видеть только ограниченную информацию.
Заключение
В заключение, JWT — отличный способ проверить и контролировать, кто к чему имеет доступ, а также обеспечить максимальную безопасность ваших данных. Первоначальный процесс может сбивать с толку многих, но как только вы освоите его, создание сильной системы станет действительно быстрым и эффективным.
Каждый разработчик должен знать, как это работает, чтобы лучше контролировать все, независимо от того, являетесь ли вы фронтенд-разработчиком, бэкэнд-разработчиком или разработчиком полного стека.
Больше контента на plainenglish.io