Какая разница между JWT и маркером-носителем?
Я изучаю что-то о авторизации, например Basic, Digest, OAuth2.0, JWT и токен.
Теперь у меня есть вопрос.
Вы знаете, что JWT используются как Access_Token в стандарте OAuth2.0. JWT отображаются на RFC 7519, а токен-носитель - на RFC 6750.
Например, носитель:
Authorization: Bearer <token>
Я использовал для отправки токена на сервер AJAX или добавлял токен в строку запроса URL-адреса. Я знаю, что токен можно также отправить, добавив его в заголовок запроса. Означает ли это, что токен должен быть добавлен в заголовок "Насыщенность авторизации"?
Не могли бы вы рассказать мне о взаимоотношениях между JWT и Toker Token? Большое спасибо.
Ответы
Ответ 1
JWT - это стандарт кодирования для токенов, который содержит полезную нагрузку данных JSON, которая может быть подписана и зашифрована.
JWT может использоваться для многих вещей, среди которых те же значки-носители, т.е. часть информации, которую вы можете представить на какую-то услугу, которая благодаря вашему наличию (вы являетесь "носителем" ) предоставляет вам доступ к чему-то.
Маркерные маркеры могут быть включены в HTTP-запрос по-разному, один из них (возможно, предпочтительный) является заголовком авторизации. Но вы также можете поместить его в параметр запроса, куки файл или тело запроса. Это в основном между вами и сервером, к которому вы пытаетесь получить доступ.
Ответ 2
Короткий ответ
JWT - удобный способ кодирования и проверки претензий.
Маркер-носитель - это просто строка, потенциально произвольная, которая используется для авторизации.
Контекст (время истории)
Несколько лет назад, перед революцией JWT, <token>
была просто строкой, не имеющей внутреннего значения, например. 2pWS6RQmdZpE0TQ93X. Затем этот токен был просмотрен в базе данных, которая содержала претензии для этого токена. Недостатком этого подхода является то, что доступ к БД (или кэш) требуется каждый раз, когда используется токен.
JWT кодируют и проверяют (посредством подписания) свои собственные претензии. Это позволяет людям выпускать недолговечные JWT, которые являются апатридами (читайте: автономно, не зависимо от кого-либо еще). Им не нужно попадать в БД. Это уменьшает нагрузку на БД и упрощает архитектуру приложения, потому что только служба, которая выдает JWT, должна беспокоиться о попадании на уровень DB/persistence (refresh_token
, который вы, вероятно, встретили).
Ответ 3
JWT работают с двумя типами токенов,
Параметр: токен доступа в качестве параметра.
Идентификатор носителя: он передается в заголовке с "Носителем".
Пожалуйста, прочитайте также следующий вопрос:
Что представляют собой токены-носители и token_type в OAuth 2?