Dekodieren von JWT in Google Apps Script
Sep 20 2020
Ich versuche, ein JSON-Web-Token mit dieser Funktion zu dekodieren:
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);
};
Dies funktioniert in meiner Google Chrome-Konsole einwandfrei. Wenn ich jedoch versuche, es in Google Scripts zu verwenden, wird "atob is not defined" angezeigt. Ich habe nachgeschlagen, was atob macht , nämlich eine 64-Bit-codierte Zeichenfolge zu dekodieren. Aber wenn ich base64Decode (String) verwende , erzeugt es ein Array anstelle eines Strings. Wie kann ich das Verhalten von atob reproduzieren? Oder gibt es eine andere Möglichkeit, eine JWT zu dekodieren?
Antworten
2 JackCole Sep 20 2020 at 09:40
Ich fand heraus, wie man ein JWT entschlüsselt 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);
};