Sto cercando di implementare un sistema di autenticazione / autorizzazione usando JWT per la mia applicazione web. I client vengono forniti con un token nel solito formato JWT dal mio server una volta che presentano le credenziali che controllo sul database.
Il problema che ho pensato potrebbe sorgere è che da quello che so i token JWT non sono crittografati o firmati in alcun modo quindi potrei essere una vittima di MitM dove qualcuno sta cambiando le richieste nel mio carico utile e inviare una risposta o semplicemente rubare i dati.
Ho capito che questo problema poteva essere risolto firmando il token JWT usando HMAC o meglio usando la coppia di chiavi pubbliche / private di RSA, ma ancora una volta la chiave pubblica RSA dovrebbe avere un qualche tipo di certificato collegato perché la chiave pubblica potrebbe essere compromessa ad un certo punto .
Questo è quando mi sono chiesto: 'È davvero necessario?'. Se ricevo un certificato SSL per tutte le mie pagine e comunico i miei token attraverso di esso, dovrei firmarli anche a "livello applicazione"? Mi sembra che sto diventando paranoico pensando che il mio CA potrebbe essere compromesso e qualcuno potrebbe vedere i miei token JWT mentre vengono inviati dal server. Quali sono le possibilità che questo accada? Dovrei davvero prendermi il tempo per sviluppare un ulteriore livello di sicurezza prima di SSL, dove posso generare un token JWT per proteggerlo con una coppia di chiavi private / pubbliche RSA e poi inviarlo all'utente attraverso un canale SSL?