
Partager:
Lorna est une ingénieure en informatique qui a la manie incurable de bloguer. Elle tente d'apprivoiser les mots et le code à parts égales.
Comment déboguer les jetons Web JSON (JWT)
De nombreuses applications web modernes, côté client et côté serveur, utilisent des jetons web JSON (JWT) pour l'authentification, ce qui constitue une excellente approche. Cependant, lorsque les choses ne fonctionnent pas, il peut être difficile d'en trouver la raison.
Ce billet a pour but de vous donner quelques tactiques pour comprendre et corriger les problèmes liés aux JWT. Si vous commencez à peine, consultez la documentation sur l'utilisation des JWT et de nos API d'abord.
Votre jeton Web JSON semble-t-il plausible ?
Parfois, le problème est aussi simple que de savoir si vous avez transmis la bonne valeur au bon endroit, ce qui équivaut à la question "est-ce que c'est branché ?
Ajoutez donc un peu de débogage à votre code pour afficher le JWT à un endroit visible, par exemple dans votre journal d'erreurs ou votre console.
Ensuite, jetez un coup d'œil sur les éléments suivants :
Cela ressemble-t-il à un jeton ? Il devrait s'agir de trois séries de chaînes alphanumériques d'apparence confuse (techniquement, des caractères majuscules et minuscules, des chiffres,
+et/sont autorisés, avec=utilisés pour le remplissage), séparées par des points.Y a-t-il des espaces blancs autour du texte, y compris une nouvelle ligne à la fin ? Les espaces blancs erronés peuvent perturber certains outils.
Est-il présent ? J'ai mal saisi le nom d'une variable et j'ai régénéré le jeton plusieurs fois avant de me rendre compte que le problème venait de moi et non du jeton.
Si le jeton passe l'inspection visuelle, nous devons alors sortir des outils plus spécifiques.
Vérifier le jeton Web JSON sur jwt.io
Il existe un excellent outil de débogage des outil de débogage JWT (merci, Auth0 !) qui peut nous aider à comprendre quand les choses ne sont pas ce que nous voulions.

Collez votre JWT dans le volet de gauche et, s'il est analysé, les détails des trois sections s'afficheront dans la partie droite.
La première section est l'en-tête, qui indique le type et l'algorithme utilisés. Pour la signature des appels API de Vonage, il s'agira généralement de typ de JWT et alg de RS256 (les JWT sur les webhooks signés par l'API Messages API signés par les webhooks sont HS256).
La section centrale contient la plupart des données réelles. Il y a quelques champs attendus ici pour les appels API de Vonage avec JWT :
iatsignifie "issued at" et doit être un horodatage UNIX.expest le "délai d'expiration" et est également un horodatage UNIXjtisignifie "JWT ID" et doit être un identifiant unique (format non spécifié)application_idest nécessaire pour les appels à l'API de Vonage et doit correspondre à la clé privée utilisée pour signer le jeton.
Vous pouvez également voir un champ sub (les SDK clients l'utilisent) ou un champ appelé nbf qui indique l'heure à laquelle ce jeton est "Not Before", ce qui signifie que le jeton n'est pas valide jusqu'à cet instant.
La troisième et dernière section du débogueur jwt.io est la signature. Les JWT sont créés avec une clé privée qui ne fera pas partie de la charge utile.
La clé privée est essentiellement un secret partagé entre vous et Vonage. Vous pouvez vérifier la signature en ajoutant votre clé privée dans l'interface web de cette section.
Régénérez votre JWT
Parfois, le problème que nous pensons être le jeton est complètement différent ! Voici quelques tactiques à essayer lorsque les deux premières étapes n'ont rien donné.
Essayer une nouvelle application
Créer une nouvelle application, générer de nouvelles clés, s'assurer que le nom du fichier est correct, etc. private key-autant d'étapes qui ne devraient pas faire de différence, mais qui sont parfois tout ce qui est nécessaire. C'est mon "truc bizarre" pour les problèmes de JWT, et peut-être qu'il vous aidera aussi ?
Générer un jeton Web JSON différent
Essayez de générer un jeton, puis de l'utiliser soit dans votre application, soit dans un appel API brut à partir de votre client HTTP préféré.
Vous pouvez générer un JWT à partir de l'outil Nexmo CLIen utilisant votre ID d'application et votre clé privée, comme ceci :
nexmo jwt:generate path/to/private.key application_id=asdasdas-asdd-2344-2344-asdasdasd345Nous disposons également d'une aide en ligne sur notre portail des développeurs que vous pouvez utiliser pour générer un JWT : https://developer.nexmo.com/jwt.
Le débogage est une compétence
La recherche de défauts est un ensemble de compétences à part entière, et nous espérons que cet article vous aidera à construire quelque chose de génial. Si vous avez d'autres conseils à partager, n'hésitez pas à nous en faire part ! Nous sommes @VonageDev sur Twitter.