In entrambi i casi va bene, dipende solo se vuoi che l'autenticazione sia stateless.
Vantaggi dei JWT:
- Stateless.
- Poco o nessun sovraccarico del database.
- I singoli componenti back-end possono validare il token isolatamente, semplicemente conoscendo la chiave segreta.
Svantaggi:
- Poiché lo stato di autenticazione è archiviato lato client, non è possibile invalidare gli accessi lato server.
A seconda della propensione al rischio della tua applicazione, questo potrebbe essere uno svantaggio sufficiente per spostare tutta la logica di autenticazione sul lato server.
Si noti che è possibile combinare i due e disporre del token autenticato fornito lato client lato server (ovvero il token all'interno del JWT è convalidato da un MAC e il token stesso è memorizzato in un database). Questo protegge dalla situazione in cui la tua tabella di sessione viene esposta da un attacco in quanto un utente malintenzionato non può utilizzare gli identificatori di sessione direttamente per dirottare una sessione senza conoscere la chiave segreta utilizzata per convalidare il MAC.