В чем разница между JWT и токеном на предъявителя?

107

Я узнаю кое-что об авторизации, например, Basic, Digest, OAuth2.0, JWT и Bearer Token.

Теперь у меня вопрос.

Вы знаете, что JWT используется как Access_Token в стандарте OAuth2.0. JWT указаны в RFC 7519, а Bearer Token - в RFC 6750.

Например, предъявитель:

Authorization: Bearer <token>

Раньше я отправлял токен на сервер с помощью AJAX или добавлял токен в строку запроса URL-адреса. Я знаю, что токен также можно отправить, добавив его в заголовок запроса. Означает ли это, что токен следует добавить в заголовок носителя авторизации?

Не могли бы вы рассказать мне об отношениях между JWT и токеном на предъявителя? Большое спасибо.

Лаоцирен
источник

Ответы:

85

JWT - это стандарт кодирования токенов, содержащих полезные данные JSON, которые можно подписать и зашифровать.

JWT может использоваться для многих вещей, среди них токены-носители, то есть часть информации, которую вы можете предоставить какой-либо службе, которая в силу того, что она у вас есть (вы являетесь «предъявителем»), предоставляет вам доступ к чему-либо.

Токены-носители могут быть включены в HTTP-запрос по-разному, одним из которых (возможно, предпочтительным) является заголовок авторизации. Но вы также можете поместить его в параметр запроса, файл cookie или тело запроса. В основном это происходит между вами и сервером, к которому вы пытаетесь получить доступ.

Тило
источник
Тогда как разобрать токен в заголовке авторизации, есть носитель, мне нужно использовать String.slice (), есть ли промежуточное ПО для его анализа?
laoqiren 02
Я использую Node.js
laoqiren
Используйте auth-headerпакет, если вам нужен минимальный синтаксический анализатор
Демургос
1
Или просто используйте String.slice () :)
Пол Сирсма,
141

Короткий ответ

JWT - удобный способ кодирования и проверки утверждений .

Токен на предъявителя - это просто строка, потенциально произвольная, которая используется для авторизации.

Контекст (время рассказа)

Несколько лет назад, до революции JWT, a <token>было просто строкой без внутреннего значения, например 2pWS6RQmdZpE0TQ93X. Затем этот токен был найден в базе данных, которая содержала заявки на этот токен. Обратной стороной этого подхода является то, что доступ к БД (или кешу) требуется каждый раз, когда используется токен.

JWT кодируют и проверяют (посредством подписи) свои собственные утверждения . Это позволяет людям выпускать кратковременные JWT без сохранения состояния (читай: самодостаточные, не зависят ни от кого). Им не нужно попадать в БД. Это снижает нагрузку на БД и упрощает архитектуру приложения, потому что только сервис, который выдает JWT, должен беспокоиться о попадании на уровень БД / сохраняемости (с которым refresh_tokenвы, вероятно, сталкивались).

rmharrison
источник
Спасибо, а как насчет Mac в авторизации, Mac и Bearer одинаковы?
laoqiren 02
Лучший ответ в другом месте, например: dzone.com/articles/oauth-20-bearer-token-profile
rmharrison 02
-4

JWT работают с двумя типами токенов: токен параметра: токен доступа передается в качестве параметра. Жетон на предъявителя: он передается в заголовке с параметром «На предъявителя».

Прочтите также следующий вопрос:

Что такое токены на предъявителя и token_type в OAuth 2?

Эхташам Насир
источник