การถอดรหัสโทเค็น JWT ในแอพ Azure Logic สามารถทำได้โดยไม่ต้องใช้ไลบรารีภายนอกเช่น Node.js หรือ C# นี่คือวิธีการทีละขั้นตอน:
1. สกัดโทเค็น JWT: ก่อนอื่นคุณต้องแยกโทเค็น JWT ออกจากคำขอที่เข้ามา โดยทั่วไปจะพบได้ในส่วนหัว `การอนุญาต 'ของคำขอ
2. แยกโทเค็น JWT: โทเค็น JWT ประกอบด้วยสามส่วนคั่นด้วยจุด: ส่วนหัว, น้ำหนักบรรทุกและลายเซ็น คุณต้องแยกโทเค็นด้วยจุดเหล่านี้เพื่อแยกน้ำหนักบรรทุกซึ่งมีรายละเอียดของผู้ใช้
3. ถอดรหัสเพย์โหลด: น้ำหนักบรรทุกคือการเข้ารหัส base64url คุณสามารถใช้ฟังก์ชั่น `base64toString` ในแอพลอจิกเพื่อถอดรหัส อย่างไรก็ตามคุณต้องตรวจสอบให้แน่ใจว่าสตริง Base64 นั้นมีการเบาะด้วย "=" อย่างถูกต้องเพื่อให้ความยาวของมันเป็นหลาย 4
4. Parse JSON: เมื่อถอดรหัสแล้วน้ำหนักบรรทุกจะเป็นสตริง JSON ใช้ฟังก์ชั่น `JSON` ในแอพลอจิกเพื่อวิเคราะห์สตริงนี้เป็นวัตถุ JSON ที่คุณสามารถทำงานได้
นี่คือตัวอย่างที่เรียบง่ายของวิธีการนี้อาจดูในแอพลอจิก:
- แยกโทเค็น JWT: ใช้นิพจน์เช่น `split (triggerbody ()? ['การอนุญาต'], '.')` เพื่อแยกโทเค็น
- ถอดรหัสเพย์โหลด: ผนวก "=" เพื่อให้แน่ใจว่ามีการขยายที่เหมาะสมจากนั้นใช้ `base64toString` เพื่อถอดรหัส
- Parse JSON: ใช้ฟังก์ชั่น `json` เพื่อแยกวิเคราะห์เพย์โหลดที่ถอดรหัส
สำหรับวิธีการที่นำกลับมาใช้ใหม่ได้มากขึ้นให้พิจารณาสร้างแอพตรรกะเด็กโดยเฉพาะสำหรับการแยกโทเค็น JWT ตามที่อธิบายไว้ใน [3] สิ่งนี้ช่วยให้คุณสามารถรวมการแยกวิเคราะห์ JWT เข้ากับแอพลอจิกหลายตัวได้อย่างง่ายดาย
หากคุณต้องการตรวจสอบโทเค็น (ตรวจสอบลายเซ็น) โดยทั่วไปคุณจะใช้บริการภายนอกหรือไลบรารีเนื่องจากแอพลอจิกไม่สนับสนุนการตรวจสอบความถูกต้องของ 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://techcommunity.microsoft.com/blog/azuredevcommunityblog/part-4-secure-your-logic-app-using-api-Management-8211-validate-jwt-access-restr/336802
[6] https://auth0.com/blog/how-to-validate-jwt-dotnet/
[7] https://github.com/auth0/jwt-decode
[8] https://supertokens.com/blog/revoking-access-with-a-jwt-blacklist
[9] https://fusionauth.io/dev-tools/jwt-decoder
[10] https://rakhesh.com/azure/parsing-json-tokens-in-a-logic-app/
[11] https://www.reddit.com/r/azure/comments/u4alct/blog_parse_jwt_token_with_azure_logic_apps/