การถอดรหัส JWT ใน Google Apps Script
Sep 20 2020
ฉันพยายามถอดรหัส JSON Web Token โดยใช้ฟังก์ชันนี้:
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);
};
สิ่งนี้ใช้ได้ดีในคอนโซล Google Chrome ของฉัน แต่เมื่อฉันพยายามใช้ใน Google Scripts มันขึ้นว่า "ไม่ได้กำหนด atob" ฉันค้นหาว่า atob ทำอะไรซึ่งถอดรหัสสตริงที่เข้ารหัส 64 บิต แต่เมื่อฉันใช้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);
};