A pergunta é comum, mas não é muito sensata. JWT é um tipo de token e OAuth é uma estrutura que descreve como distribuir tokens.
O que queremos dizer com "estrutura"? Apenas a sequência de solicitações e respostas, e os formatos dessas que podem e devem ser usadas para solicitar tokens. O OAuthv2 descreve "fluxos" ou tipos de concessão separados para diferentes cenários e possui extensões diferentes (como PKCE) para estender a segurança de fluxos específicos.
O resultado de uma solicitação de token por meio de uma concessão OAuthV2 é ... um token. Essa coisa é empregada como um "token do portador", o que significa que qualquer parte que possua o token pode apresentá-lo ao fazer uma solicitação de serviço da API (por exemplo, "qual é o saldo no meu cartão de valor armazenado?"). Como um token de portador, funciona como dinheiro vivo. Se você está segurando, você pode usá-lo. (Embora diferentemente do dinheiro vivo, um token não o use e perca. Talvez uma analogia melhor seja um ingresso para o dia inteiro no sistema de transporte público ou um ingresso para o dia todo na Disneyworld.)
O JWT é um tipo específico de token e o JWT pode ser absolutamente utilizado como um token OAuth Bearer. De fato, esta é a prática mais comum. À luz disso, "JWT vs OAuth" é uma comparação de maçãs e carrinhos de maçã.
Freqüentemente, as pessoas pensam que "token OAuth" sempre implica um token opaco - uma sequência aleatória de caracteres alfanuméricos que não contém significado inerente - concedido por um dispensário de token OAuth, que pode ser validado apenas pelo mesmo sistema de dispensário OAuth. Mas esse não é o único tipo de token OAuth. Um token opaco é um tipo de token; O JWT pode ser usado como um tipo diferente de token OAuth.
O JWT, por outro lado, não é opaco. O JWT não é um "ponteiro" ou referência a informações. Na verdade, ele contém muitas informações específicas, que podem ser extraídas e interpretadas por qualquer parte que possua o token. Como o JWT contém informações reais, um JWT pode ser grande; 300 bytes, 500 bytes ou mais, dependendo das reivindicações contidas nele e do algoritmo usado para assiná-lo. Quando as pessoas dizem que "o JWT é auto-validador", o que elas querem dizer é que qualquer detentor do JWT pode abri-lo, validá-lo e, em seguida, tomar decisões de autorização com base nas reivindicações nele apresentadas. Validar o JWT significa: verificar sua estrutura, decodificar a codificação base64, verificar se a chave está correta, verificar a assinatura e verificar se as reivindicações necessárias estão presentes no token, verificar a validade. Não é uma coisa simples, Em vez disso, é um processo de várias etapas, mas é claro que existem muitas bibliotecas em várias linguagens de programação que ajudam nisso e, claro, há a política do VerifyJWT que ajuda você a fazer isso dentro de um proxy da API do Apigee Edge. O ponto é que qualquer titular ou receptor pode verificar um token. Por isso, dizemos que o JWT suporta "Federação" - qualquer pessoa pode gerar um token e qualquer pessoa pode ler e validar um token.
reivindicações personalizadas. Os tokens JWT e OAuth opacos podem transmitir reivindicações personalizadas sobre o assunto. segurança. Ambos são tokens de portador. Ambos precisam ser protegidos como segredos. expiração. Ambos podem ser marcados com uma expiração. Ambos podem ser atualizados. O mecanismo ou experiência de autenticação. Ambos podem apresentar a mesma experiência do usuário.