Google AppsScriptでのJWTのデコード

Sep 20 2020

この関数を使用してJSONWebトークンをデコードしようとしています:

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);
};

これは私のGoogleChromeコンソールでは正常に機能しますが、Google Scriptsで使用しようとすると、「atobが定義されていません」と表示されます。64ビットでエンコードされた文字列をデコードするatobの機能を調べました。しかし、base64Decode(String)を使用すると、文字列ではなく配列が生成されます。atobの動作を再現するにはどうすればよいですか?または、JWTをデコードする別の方法はありますか?

回答

2 JackCole Sep 20 2020 at 09:40

JWTをからデコードする方法を見つけました 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);
};