Décodage de JWT dans Google Apps Script

Sep 20 2020

J'essaye de décoder un jeton Web JSON en utilisant cette fonction:

function parseJwt(token) {
    var base64Url = token.split('.')[1];
    var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
    var jsonPayload = decodeURIComponent(atob(base64).split('').map(function(c) {
        return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
    }).join(''));

    return JSON.parse(jsonPayload);
};

Cela fonctionne bien dans ma console Google Chrome, mais lorsque j'essaie de l'utiliser dans Google Scripts, il est dit "atob n'est pas défini". J'ai regardé ce que fait atob , qui est de décoder une chaîne codée 64 bits. Mais lorsque j'utilise base64Decode (String), cela produit un tableau au lieu d'une chaîne. Comment reproduire le comportement d'atob? Ou existe-t-il un autre moyen de décoder un JWT?

Réponses

2 JackCole Sep 20 2020 at 09:40

J'ai découvert comment décoder un JWT à partir de https://developers.google.com/apps-script/reference/script/script-app#getidentitytoken

function parseJwt(token) {
    let body = token.split('.')[1];
    let decoded = Utilities.newBlob(Utilities.base64Decode(body)).getDataAsString();
    return JSON.parse(decoded);
};