Eu sou o autor de uma biblioteca de nós que lida com autenticação com bastante profundidade, express-stormpath , por isso vou falar com algumas informações aqui.
Primeiro, os JWTs normalmente NÃO são criptografados. Embora exista uma maneira de criptografar JWTs (consulte: JWEs ), isso não é muito comum na prática por vários motivos.
Em seguida, qualquer forma de autenticação (usando JWTs ou não) está sujeita a ataques do MitM (man-in-the-middle). Esses ataques acontecem quando um invasor pode VER o tráfego da SUA REDE enquanto você faz solicitações pela Internet. É isso que o seu ISP pode ver, a NSA, etc.
É isso que o SSL ajuda a evitar: criptografando o tráfego de REDE do seu computador -> algum servidor ao se autenticar, um terceiro que está monitorando o tráfego da sua rede NÃO consegue ver seus tokens, senhas ou algo assim, a menos que seja capaz de alguma forma para obter uma cópia da chave SSL privada do servidor (improvável). Esta é a razão pela qual o SSL é OBRIGATÓRIO para todas as formas de autenticação.
Vamos dizer, porém, que alguém é capaz de explorar o seu SSL e é capaz de ver o seu token: a resposta à sua pergunta é que SIM , o atacante vai ser capaz de usar esse símbolo para representar você e solicitações de fazer a sua servidor.
Agora, é aqui que entram os protocolos.
JWTs são apenas um padrão para um token de autenticação. Eles podem ser usados para praticamente qualquer coisa. A razão pela qual as JWTs são legais é que você pode incorporar informações extras nelas e pode validar que ninguém mexeu com elas (assinatura).
No entanto, as próprias JWTs não têm nada a ver com 'segurança'. Para todos os efeitos, os JWTs são mais ou menos a mesma coisa que as chaves de API: apenas cadeias aleatórias que você usa para se autenticar em algum servidor em algum lugar.
O que torna sua pergunta mais interessante é o protocolo que está sendo usado (provavelmente o OAuth2).
A maneira como o OAuth2 funciona é que ele foi projetado para fornecer aos clientes tokens TEMPORÁRIOS (como JWTs!) Para autenticação por apenas um PERÍODO DE CURTO TEMPO!
A idéia é que, se o seu token for roubado, o invasor poderá usá-lo apenas por um curto período de tempo.
Com o OAuth2, você precisa se autenticar novamente com o servidor de vez em quando, fornecendo suas credenciais de nome de usuário / senha OU API e, em seguida, recuperando um token em troca.
Como esse processo acontece de vez em quando, seus tokens mudam frequentemente, dificultando a personificação de invasores constantemente sem causar grandes problemas.
Espero que isso ajude ^^