Pytanie jest częste, ale nie jest całkiem rozsądne. JWT jest rodzajem tokena, a OAuth jest strukturą opisującą sposób wydawania tokenów.
Co rozumiemy przez „framework”? Tylko sekwencja żądań i odpowiedzi oraz formaty tych, które mogą i powinny być używane do żądania tokenów. OAuthv2 opisuje osobne „przepływy” lub typy przydziałów dla różnych scenariuszy i ma różne rozszerzenia (takie jak PKCE) do zwiększania bezpieczeństwa poszczególnych przepływów.
Rezultatem zapytania o token za pośrednictwem dotacji OAuthV2 jest ... token. Ta rzecz jest następnie używana jako „token na okaziciela”, co oznacza, że każda strona, która posiada token, może go przedstawić podczas składania wniosku o usługę interfejsu API (np. „Jaka jest równowaga na mojej karcie wartości zgromadzonej?”). Jako token na okaziciela działa jak gotówka. Jeśli go trzymasz, możesz go użyć. (Chociaż w odróżnieniu od pieniędzy gotówkowych, token nie używa go i gubi. Być może lepszą analogią jest bilet całodzienny w systemie transportu publicznego lub bilet całodniowy w Disneyworld.)
JWT jest szczególnym typem tokena, a JWT można absolutnie wykorzystać jako token Nośnika OAuth. W rzeczywistości jest to najczęstsza praktyka. W świetle tego „JWT vs OAuth” to porównanie jabłek i wózków jabłkowych.
Często ludzie myślą, że „token OAuth” zawsze implikuje nieprzezroczysty token - losową sekwencję znaków alfanumerycznych, która nie zawiera nieodłącznego znaczenia - przyznawaną przez aptekę tokenów OAuth, którą można następnie zweryfikować tylko przez ten sam system aptek OAuth. Ale to nie jedyny rodzaj tokenu OAuth. Nieprzezroczysty token jest jednym z rodzajów tokenów; JWT może być używany jako inny rodzaj tokena OAuth.
Natomiast JWT nie są nieprzejrzyste. JWT nie jest „wskaźnikiem” ani odniesieniem do informacji. W rzeczywistości zawiera wiele konkretnych informacji, które mogą zostać wyodrębnione i zinterpretowane przez każdą stronę, która ma token. Ponieważ JWT zawiera prawdziwe informacje, JWT może być duży; 300 bajtów, 500 bajtów lub więcej, w zależności od zawartych w nim oświadczeń i algorytmu użytego do podpisania go. Kiedy ludzie mówią, że „JWT są samo-walidujące”, to znaczy, że każdy posiadacz JWT może go otworzyć, zweryfikować, a następnie podjąć decyzję o autoryzacji na podstawie przedstawionych w nim oświadczeń. Sprawdzanie poprawności JWT oznacza: weryfikację jego struktury, dekodowanie kodowania base64, weryfikację poprawności klucza, weryfikację podpisu, a następnie weryfikację wymaganych oświadczeń na tokenie, sprawdzenie wygaśnięcia. To nie jest prosta sprawa, raczej proces wieloetapowy, ale oczywiście istnieje wiele bibliotek w różnych językach programowania, które pomagają w tym, i oczywiście istnieje zasada VerifyJWT, która pomaga to zrobić w ramach proxy Apigee Edge API. Chodzi o to, że każdy posiadacz lub odbiorca może zweryfikować token. Z tego powodu mówimy, że JWT obsługuje „Federację” - każdy może wygenerować token, a każdy może odczytać i zweryfikować token.
niestandardowe roszczenia. Zarówno JWT, jak i nieprzezroczyste tokeny OAuth mogą zawierać niestandardowe roszczenia dotyczące tego tematu. bezpieczeństwo. Oba są tokenami na okaziciela. Oba muszą być chronione jako tajemnice. wygaśnięcie. Oba mogą być oznaczone datą ważności. Oba można odświeżyć. Mechanizm uwierzytelnienia lub doświadczenie. Oba mogą prezentować to samo doświadczenie użytkownika.