คุณสามารถใช้วิธี ScriptApp.getIdentityToken()
เพื่อรับโทเค็นข้อมูลประจำตัว OpenID Connect (โทเค็นเว็บ JSON
หรือ JWT) สำหรับผู้ใช้ที่มีสิทธิ์ คุณสามารถใช้โทเค็นนี้เพื่อตรวจสอบสิทธิ์
กับบริการของ Google Cloud เช่น Cloud Run ซึ่งได้รับการกำหนดค่าให้
ยอมรับโทเค็นนี้
เปิดใช้ขอบเขต openid
ต้องระบุopenidขอบเขตเพื่อสร้างโทเค็นรหัส OpenID Connect นอกจากนี้ คุณต้องระบุขอบเขตอื่นๆ ที่สคริปต์ใช้ด้วย เช่น https://www.googleapis.com/auth/script.external_request สำหรับบริการ UrlFetch https://www.googleapis.com/auth/userinfo.email ขอบเขตจะรวมอยู่ในตัวอย่างนี้เพื่อเพิ่มอีเมลของผู้ใช้ลงในโทเค็นข้อมูลประจำตัว
ในไฟล์ Manifest (appsscript.json) ของโปรเจ็กต์สคริปต์
ให้เพิ่มขอบเขต openid และขอบเขตอื่นๆ ที่จำเป็นลงในอาร์เรย์ oauthScopes
{
"timeZone": "America/New_York",
"dependencies": {
},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"oauthScopes": [
"openid",
"https://www.googleapis.com/auth/script.external_request",
"https://www.googleapis.com/auth/userinfo.email"
]
}
กำหนดค่าบริการ Google Cloud
คุณต้องกำหนดค่าบริการ Google Cloud เพื่อยอมรับโทเค็นข้อมูลประจำตัว ที่ออกให้กับสคริปต์ โดยปกติแล้วขั้นตอนนี้จะเกี่ยวข้องกับการเพิ่มรหัสไคลเอ็นต์ของสคริปต์เป็น กลุ่มเป้าหมายที่อนุญาต
หากต้องการค้นหารหัสไคลเอ็นต์ของสคริปต์ คุณสามารถถอดรหัสโทเค็นข้อมูลประจำตัวได้โดยทำดังนี้
function logClientId() {
const idToken = ScriptApp.getIdentityToken();
const body = idToken.split('.')[1];
const decoded = Utilities.newBlob(Utilities.base64Decode(body)).getDataAsString();
const payload = JSON.parse(decoded);
Logger.log('Client ID: ' + payload.aud);
}
สำหรับ Cloud Run คุณสามารถกำหนดค่ากลุ่มเป้าหมายที่กำหนดเอง เพื่ออนุญาตให้ใช้รหัสไคลเอ็นต์นี้ได้
ส่งคำขอที่ผ่านการตรวจสอบสิทธิ์
เมื่อกำหนดค่าแล้ว คุณจะรวมโทเค็นข้อมูลประจำตัวไว้ในAuthorization
ส่วนหัวของคำขอได้
function callCloudRunService() {
const idToken = ScriptApp.getIdentityToken();
const url = 'https://your-service-url.a.run.app';
const response = UrlFetchApp.fetch(url, {
headers: {
'Authorization': 'Bearer ' + idToken
}
});
Logger.log(response.getContentText());
}