Concevoir une méthode pour décoder les jetons JWT en JavaScript
Le décodage des jetons JWT sans utiliser de bibliothèques est possible en JavaScript. Ceci peut être réalisé en extrayant manuellement la charge utile du jeton.
Étapes de l'extraction de la charge utile :
1. Décodage Base64 :
Divisez le jeton en trois parties (en-tête, charge utile, signature) à l'aide du '.' personnage. Décodez la deuxième partie (charge utile) à l'aide du codage Base64URL, qui remplace respectivement ' ' et '/' par '-' et '_'.
2. Remplacement de texte Unicode :
La charge utile décodée est une séquence de texte Unicode. Remplacez tous les caractères non imprimables (symboles %) par leurs codes ASCII correspondants (par exemple, pour un espace).
3. Analyse JSON :
Enfin, analysez le texte remplacé au format JSON pour obtenir l'objet de charge utile.
Implémentation :
Navigateur :
<code class="javascript">function parseJwt(token) { var base64Url = token.split('.')[1]; var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/'); var jsonPayload = decodeURIComponent(window.atob(base64).split('').map(function(c) { return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2); }).join('')); return JSON.parse(jsonPayload); }</code>
Node.js :
<code class="javascript">function parseJwt(token) { return JSON.parse(Buffer.from(token.split('.')[1], 'base64').toString()); }</code>
Remarque : Le décodage de la charge utile ne valide pas la signature du jeton. Cela suppose que le jeton n’a pas été falsifié.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!