Вопрос общий, но не совсем разумный. JWT - это тип токена, а OAuth - это фреймворк, который описывает, как распределять токены.
Что мы подразумеваем под «рамками»? Только последовательность запросов и ответов и форматы тех, которые можно и нужно использовать для запроса токенов. OAuthv2 описывает отдельные «потоки» или типы предоставления для разных сценариев и имеет разные расширения (например, PKCE) для повышения безопасности отдельных потоков.
Результатом запроса на токен через грант OAuthV2 является ... токен. Затем эта вещь используется в качестве «токена на предъявителя», что означает, что любая сторона, которая владеет токеном, может представить его при создании запроса API на обслуживание 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 поддерживает «Федерацию» - любой может сгенерировать токен, а любой может прочитать и проверить токен.
таможенные претензии. И JWT, и непрозрачные OAuth-токены могут нести пользовательские утверждения по этому вопросу. безопасность. Оба являются токенами на предъявителя. Оба должны быть защищены как секреты. истечения срока действия. Оба могут быть отмечены с истечением срока действия. Оба могут быть обновлены. Механизм аутентификации или опыт. Оба могут представлять один и тот же пользовательский опыт.