يمكن تحقيق فك تشفير رمز JWT في تطبيقات المنطق Azure دون استخدام مكتبات خارجية مثل 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/azurevcommunityblog/part-4-secure-your-logic-app-using-api-management-8211-validate-jwt-access-restr/336802
[6] https://auth0.com/blog/how-to
[7] https://github.com/auth0/jwt-decode
[8] https://supertokens.com/blog/revoking-access-with-a-jwt-lacklist
[9] https://fusionauth.io/dev-tools/jwt-decoder
[10]
[11] https://www.reddit.com/r/azure/comments/u4alct/blog_parse_jwt_token_with_azure_logic_apps/