Dalla mia altra sec.SE risposta :
JWT are self sufficient tokens which are used to share authentication information between different systems. They solve the problem of relying on third parties for validating an authentication token as all the information required to validate the JWT is contained within the token itself. This simplifies the process of on-boarding in a single sign-on system as there is minimal integration required. JWT are also HTTP friendly as they are just BASE-64 strings.
Non hai fornito informazioni sufficienti sulla tua architettura dell'applicazione. Nel tuo caso particolare, sarebbe difficile per qualsiasi altra terza parte o un server di risorse attendibili convalidare il token AES emesso da te. L'unico modo per farlo sarebbe quello di condividere la chiave di crittografia AES con tutti coloro che desiderano verificare il token di autenticazione da te rilasciato. Questa sarebbe una cattiva decisione di progettazione che può avere gravi problemi di riservatezza e integrità.
Inoltre, i token devono supportare importanti funzionalità di sicurezza come timestamp che consentono a una risorsa di prevenire gli attacchi di riproduzione di token. Il tuo design non supporta questo.
AES256.encrypt(JSON.stringify({id: 5552, admin: true}), key)
Il tuo token di sicurezza per l'utente amministratore con un ID univoco 5552 avrà sempre lo stesso valore. In breve, non provare a reinventare la ruota e affidarsi ai metodi e ai framework esistenti per l'autenticazione. Le JWT hanno avuto la loro quota di sicurezza problemi in passato. leggi altro .