La signature d’un JWT prouve seulement que le jeton n’a pas été modifié et qu’il a été signé avec la clé correspondante. Elle ne prouve pas que le jeton provient de l’émetteur attendu ni qu’il était destiné au service qui le reçoit.

iss (issuer) doit correspondre exactement à un émetteur de confiance configuré. Sinon, un jeton signé par un autre émetteur ou tenant peut être accepté à tort.
aud (audience) doit contenir l’identifiant du service. Sinon, un jeton légitimement émis pour une autre API peut être rejoué contre celle-ci.

Sans ces contrôles, une signature parfaitement valide peut donc conduire à une confusion d’émetteur, une substitution de jeton ou un rejeu interservices. Il faut valider la signature avec les clés et algorithmes configurés pour l’émetteur attendu, puis vérifier strictement iss, aud ainsi que les contraintes temporelles telles que exp et nbf.