Dekodowanie tokena JWT w Google Apps Script
Sep 20 2020
Próbuję zdekodować token sieciowy JSON za pomocą tej funkcji:
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);
};
Działa to dobrze w mojej konsoli Google Chrome, ale kiedy próbuję go użyć w skryptach Google, pojawia się komunikat „atob nie jest zdefiniowany”. I spojrzał w górę, co robi atob , który jest dekodowania 64-bitowy zakodowany ciąg. Ale kiedy używam base64Decode (String) , tworzy tablicę zamiast ciągu. Jak mogę odtworzyć zachowanie atob? Czy jest inny sposób dekodowania tokena JWT?
Odpowiedzi
2 JackCole Sep 20 2020 at 09:40
Dowiedziałem się, jak zdekodować token JWT z 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);
};