E da para usar sem ter um pé atrás?
Sim, se você utilizar o JWT com "signed tokens", pois o sistema garante a integridade do seu JWT.
porque o que estou pensando aqui é de, ao inves de guardar somente o id do usuário no payloader, guardar também uma chave, cujo rash vou armazenar no servidor, para ganhar mais uma camada de proteção.
O JWT, com "signed tokens", já faz algo similar, então não vejo necessidade alguma.
Para clarificar o assunto, JWT é algo complexo. O básico parece fácil, mas eu recomendo que você leia a especificação e entenda como ele funciona com o seu fluxo de OAuth para compreender todos os detalhes.
Além do mais, quero clarificar duas palavras-chave:
Integridade: O JWT garante integridade, ou seja, se a sua aplicação recebe um token JWT, a aplicação pode verificar e ter a certeza de que o token e o conteúdo são íntegros. Ou seja, pertencem ao usuário no momento da autenticação, ao invés de alguém tentando se passar pelo usuário.
Criptografia: O conteúdo do JWT não é criptografado, como outros já disseram, mas a transmissão deste JWT é encriptada com HTTPS. Ou seja, atores maliciosos não vão conseguir ver o conteúdo do JWT, mas o dono do JWT (no nosso exemplo, um usuário do seu aplicativo) vai conseguir ler o conteúdo do JWT.
Em resumo, coloque informações que não são sensíveis, como identificadores, mas não coloque informações que o usuário não pode saber. O ID do usuário é um dado normalmente colocado em JWT.