Нельзя отрицать, что JWT — это прохладный ветерок и облегчение от безумия функций OAuth. Однажды я провел неделю, пытаясь понять OAuth, мне пришлось сдаться. Я просто не мог обернуть это вокруг себя. Я мог объяснить JWT 5-летнему ребенку менее чем за 5 минут. Если OAuth — это свалка безумия и радиоактивных отходов, JWT — это зеленое поле, плавающее в теплых лучах солнца после того, как утренняя роса окропила свежую траву.
Токен JWT состоит из трех простых частей: заголовок, описывающий токен, полезная нагрузка, которая является фактическим токеном, и криптографически защищенная подпись, гарантирующая, что токен был создан доверенным источником. Все три компонента имеют кодировку base 64, разделенную символом «.» , сцепленные и обычно предоставляемые в качестве токена Bearer в HTTP-заголовке Authorization ваших HTTP-вызовов REST — на самом деле очень просто.
Вам также может понравиться:
Реализация аутентификации JWT в API Spring Boot
Ниже приведен типичный пример токена JWT.
Джава
xxxxxxxxxx
1
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Причина, по которой это безопасно, заключается в том, что при создании подписи используется какой-то «секрет» , который является последней частью токена. Без секрета вы можете попытаться грубой силой объединить научную теорию. Дело твердое, как камень! Все же так же просто, как чашка кофе в воскресенье утром.
Если вы скопируете и вставите вышеуказанный токен в текстовое поле на JWT.io , вы сможете четко видеть все отдельные компоненты в вашем токене. Он содержит срок действия в виде метки времени Unix, имени и некоторых дополнительных данных, которые в совокупности позволяют прозрачно считывать значение токена в слое внешнего интерфейса.
В своем бэкэнде вы можете легко проверить токен, взяв его полезную нагрузку, добавив к нему свой секрет и воссоздав то же значение хеширования, что и в его подписи. Если хеш такой же, вы знаете, что токен действителен. Это делает невозможным для тех, кто не знает секрета, который использовался для создания хэш-подписи, для создания токена, действительного для вашего внутреннего API. И, конечно же, .Net и большинство других основных сред разработки программного обеспечения содержат множество вспомогательных классов и служебных методов, которые помогут вам в этом процессе.
Неделю назад я решил, что хочу создать SSH-сервер аутентификации JWT, который позволит мне навсегда решить все мои «проблемы с аутентификацией». Неделю спустя, поработав над этим только по вечерам, я был готов, и я мог гордиться тем, что у меня есть полный сервер аутентификации и авторизации SSW JWT, покрывающий все мои будущие потребности во всем, что связано с аутентификацией. Посмотрите, как я демонстрирую систему в видео ниже.
Извините, OAuth, вы были взвешены, и мы обнаружили, что вы слишком тяжелы. OAuth мертв, да здравствует JWT! 😉
Кстати, если вы думаете, что даже добавление примерно 25 строк кода C # в ваш веб-API — это слишком много, не стесняйтесь загружать Magic , который я использую в приведенном выше видео для создания моего SSO-сервера JWT AUTH.
Дальнейшее чтение
Как JSON Web Token (JWT) защищает ваш API
Аутентификация без сохранения состояния с помощью веб-токенов JSON