Питання є поширеним, але не зовсім розумним. JWT - це тип жетонів, а OAuth - це Рамка, яка описує, як видавати жетони.
Що ми маємо на увазі під «рамкою»? Просто послідовність запитів і відповідей, а також формати тих, які можна і потрібно використовувати для запиту жетонів. OAuthv2 описує окремі "потоки" або типи грантів для різних сценаріїв і має різні розширення (наприклад, PKCE) для розширення безпеки певних потоків.
Результатом запиту-токена через грант OAuthV2 є ... маркер. Тоді ця річ використовується як "маркер носія", що означає, що будь-яка сторона, яка має маркер, може представити її під час запиту api-запиту на обслуговування (наприклад, "який баланс на моїй картці зберігається цінності?"). Як знак носія, він працює як грошові гроші. Якщо ви тримаєте його, ви можете використовувати його. (Хоча на відміну від грошових грошей, жетон не використовується - втрачайте. Можливо, кращою аналогією є цілоденний квиток на їзду в системі громадського транспорту або цілодобовий квиток у Disneyworld.)
JWT - це особливий тип маркера, і JWT можна абсолютно використовувати як маркер OAuth Bearer. Насправді це найпоширеніша практика. У світлі цього "JWT vs OAuth" - це порівняння яблук та яблучних візків.
Часто люди думають, що "маркер OAuth" завжди має на увазі непрозорий маркер - випадкову послідовність буквено-цифрових символів, яка не має притаманного значення - що надається диспансером лексеми OAuth, який потім може бути підтверджений лише тією самою диспансерною системою OAuth. Але це не єдиний маркер OAuth. Непрозорий маркер - це один вид лексеми; JWT може використовуватися як інший вид маркера OAuth.
JWT, навпаки, непрозорі. JWT не є "покажчиком" або посиланням на інформацію. Він фактично містить багато конкретної інформації, яку може витягти та інтерпретувати будь-яка сторона, що має маркер. Оскільки JWT містить реальну інформацію, JWT може бути великим; 300 байт, 500 байт або більше, залежно від тверджень, що містяться в ньому, та алгоритму, який використовується для його підписання. Коли люди кажуть, що "JWT є самовиправнимся", що вони мають на увазі, будь-який власник JWT може відкрити його, підтвердити, а потім приймати рішення про авторизацію, виходячи з поданих у ньому претензій. Перевірка JWT означає: перевірку його структури, декодування кодування base64, перевірку правильності ключа, перевірку підпису, потім перевірка необхідних претензій присутній у токені, перевірка закінчення терміну дії. Це не проста річ, скоріше багатоетапний процес, але, звичайно, є багато бібліотек на різних мовах програмування, які хекпп з цим, і, звичайно, існує політика VerifyJWT, яка допомагає вам це робити в проксі-сервері API Apigee Edge. Справа в тому, що будь-який власник або отримувач може перевірити маркер. Через це ми говоримо, що JWT підтримує "Federation" - кожен може генерувати маркер, і будь-хто може прочитати та перевірити маркер.
власні претензії. Як JWT, так і непрозорі маркери OAuth можуть пред’являти власні претензії щодо цього питання. безпека. Обидва - це жетони носія. Обох потрібно берегти як таємниці. термін придатності. Обидва можуть бути позначені терміном закінчення. Обидва можна оновити. Механізм або досвід аутентифікації. Обидва можуть представляти однаковий досвід користувачів.