Яка різниця між JWT та жетоном на пред'явника?


105

Я дізнаюся щось про авторизацію, як Basic, Digest, OAuth2.0, JWT і Token Token.

Тепер у мене питання.

Ви знаєте, що JWT використовується як Access_Token у стандарті OAuth2.0. JWT з'являється на RFC 7519, а маркер на пред'явника - на RFC 6750.

Наприклад, Носій:

Authorization: Bearer <token>

Раніше я відправляв маркер на сервер за допомогою AJAX або додавав маркер у рядок запиту URL-адреси. Я знаю, що маркер також можна надіслати, додавши його до заголовка запиту. Чи означає це, що маркер слід додати до заголовка Authorization Bearer?

Не могли б ви сказати мені стосунки між JWT та жетоном на пред'явника? Дуже дякую.

Відповіді:


85

JWT - це стандарт кодування для токенів, що містить корисний набір даних JSON, який можна підписати та зашифрувати.

JWT може бути використаний для багатьох речей, серед них є маркери на пред'явника, тобто частина інформації, яку ви можете подати якійсь службі, яка завдяки вашій наявності (ви як "носій") надає вам доступ до чогось.

Маркери на пред'явника можуть бути включені в запит HTTP різними способами, одним із них (ймовірно, кращим) є заголовок Авторизації. Але ви також можете помістити його в параметр запиту, файл cookie або тіло запиту. Це здебільшого між вами та сервером, до якого ви намагаєтесь отримати доступ.


Тоді, як проаналізувати маркер у заголовку авторизації, є носій, я повинен використовувати String.slice (), чи є проміжне програмне забезпечення для його синтаксичного аналізу?
laoqiren

Я використовую Node.js
laoqiren

Використовуйте auth-headerпакет, якщо хочете мінімальний парсер
Демургос,

1
Або просто використовуйте String.slice () :)
Paul Siersma

138

Коротка відповідь

JWT - це зручний спосіб кодування та перевірки претензій .

Маркер на пред'явника - це просто рядок, потенційно довільний, який використовується для авторизації.

Контекст (час історії)

Кілька років тому, до революції JWT, a <token>був просто рядком без внутрішнього значення, наприклад 2pWS6RQmdZpE0TQ93X. Потім цей маркер було розглянуто в базі даних, де зберігалися вимоги щодо цього маркера. Недоліком цього підходу є те, що доступ до БД (або кеш-пам’яті) потрібен кожного разу, коли використовується маркер.

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


Дякую, а як щодо Mac в авторизації, Mac і Bearer однакові?
laoqiren

Найкращі відповіді в інших місцях, наприклад: dzone.com/articles/oauth-20-bearer-token-profile
rmharrison

-4

JWT працюють з двома типами маркера, маркер параметра: маркер доступу як параметр. Жетон на пред'явника: це прохід в заголовку з позначкою "На пред'явника".

Будь ласка, прочитайте також таке запитання:

Що таке токени на пред'явника та тип токена в OAuth 2?

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.