ในการดึงและถอดรหัสโทเค็น JWT ในแอพลอจิกคุณสามารถทำตามขั้นตอนเหล่านี้:
1. ดึงโทเค็น JWT: ก่อนอื่นคุณต้องได้รับโทเค็น JWT สามารถทำได้โดยการแยกส่วนหัวของคำขอที่เข้ามา หากโทเค็นถูกส่งในส่วนหัว `Authorization 'คุณสามารถแยกมันออกได้โดยใช้การกระทำของ` Parse Json` ด้วยสคีมาที่จับคีย์ `Authorization' จากนั้นสร้างตัวแปรเพื่อเก็บส่วนโทเค็น (เช่นหลังจาก "ผู้ถือ") [10]
2. ถอดรหัสโทเค็น JWT: โทเค็น JWT เป็น base64url-encoded คุณสามารถถอดรหัสส่วนน้ำหนักบรรทุกของโทเค็นโดยใช้ฟังก์ชั่น `split 'และ` base64tostostring' ในแอพลอจิก แยกโทเค็นด้วย "." ตัวคั่นเพื่อแยกน้ำหนักบรรทุก จากนั้นต่อท้าย "=" เพื่อให้แน่ใจว่าความยาวเป็นหลาย 4 สำหรับการถอดรหัส Base64 แอพลอจิกจะแปลงสิ่งนี้เป็นสตริง Base64 โดยปริยายซึ่งคุณสามารถถอดรหัสได้โดยใช้ `base64toString` [1] [3]
3. แยกวิเคราะห์เพย์โหลดที่ถอดรหัส: หลังจากถอดรหัสน้ำหนักบรรทุกคุณจะมีสตริง JSON ใช้การดำเนินการ `parse json` อื่นเพื่อแปลงสตริงนี้เป็นวัตถุ JSON ที่คุณสามารถทำงานด้วยในแอพลอจิกของคุณ คุณสามารถกำหนดสคีมาสำหรับวัตถุ JSON นี้ตามการเรียกร้องที่คาดหวังในโทเค็น JWT [3]
4. การเรียกร้องการเรียกร้อง: เมื่อ JSON ถูกแยกวิเคราะห์คุณสามารถแยกการอ้างสิทธิ์เฉพาะ (เช่น ID ผู้ใช้หรืออีเมล) และใช้ตามต้องการในเวิร์กโฟลว์แอพลอจิกของคุณ
วิธีนี้ช่วยให้คุณสามารถถอดรหัสและใช้โทเค็น JWT โดยตรงภายในแอพ Azure Logic โดยไม่จำเป็นต้องสร้างฟังก์ชั่น Azure หรือใช้บริการภายนอกสำหรับการถอดรหัส อย่างไรก็ตามหากคุณต้องการตรวจสอบโทเค็น (ตรวจสอบลายเซ็น) คุณอาจต้องใช้บริการภายนอกหรือฟังก์ชั่น Azure พร้อมห้องสมุดที่สามารถตรวจสอบ JWT ได้
การอ้างอิง:
[1] https://stackoverflow.com/questions/54257879/how-to-decode-a-jwt-token-in-azure-logic-app
[2] https://www.criipto.com/blog/jwt-validation-guide
[3] https://autosysops.com/blog/parse-jwt-tokens-in-azure-logic-apps
[4] https://hasura.io/blog/best-practices-of-using-jwt-with-graphql
[5] https://www.michev.info/blog/post/2140/decode-jwt-access-and-id-tokens-via-powershell
[6] https://supertokens.com/blog/revoking-access-with-a-jwt-blacklist
[7] https://techcommunity.microsoft.com/blog/azuredevcommunityblog/part-4-secure-your-logic-app-using-api-management-8211-validate-jwt-access-restr/336802
[8] https://docs.azure.cn/en-us/logic-apps/logic-apps-securing-a-logic-app
[9] https://www.mikaelsand.se/2022/06/extracting-values-from-a-jwt-token-in-apim/
[10] https://rakhesh.com/azure/parsing-json-tokens-in-a-logic-app/
[11] https://github.com/auth0/jwt-decode