Un JWT è composto da tre parti. L'intestazione, il payload e la firma. L'intestazione specifica quale metodo di firma viene utilizzato, quindi la firma non può essere verificata prima di leggere l'intestazione. Si noti che questo è un errore di implementazione; l'intestazione non dovrebbe essere in grado di modificare l'algoritmo della firma.
Send a header that specifies the "none" algorithm be used
In questo caso non c'è una firma, quindi l'attaccante può modificare il messaggio a piacimento.
Send a header that specifies the "HS256" algorithm when the application normally signs messages with an RSA public key.
In questo caso l'attaccante deve conoscere il segreto. Tuttavia, RS256 utilizza la crittografia asimmetrica, in cui viene spesso pubblicata la chiave pubblica. Se l'utente malintenzionato riesce a passare a HS256, la chiave pubblica viene invece utilizzata come chiave simmetrica. Quindi l'hacker conosce il segreto perché è la chiave pubblica.