0Pricing
Cryptology Academy · درس

بنية JWT: الترويسة والحمولة والتوقيع

فكّ ترميز أجزاء base64url وافهم كل حقل من حقول JWT

بنية JWT: الترويسة والحمولة والتوقيع درس مجاني في Cryptology Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Cryptology Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Cryptology Academy 4 دروس في المجموع.

ما هو JWT؟

إن JSON Web Token (JWT) هو تنسيق مدمج وآمن للاستخدام في عناوين URL، وقد عُرِّف في RFC 7519. وهو يرمّز المطالبات، أي التأكيدات المتعلقة بموضوع ما، وتوقيعًا تشفيريًا في سلسلة واحدة، مما يتيح المصادقة عديمة الحالة.

البنية ذات الأجزاء الثلاثة

تأخذ JWT الشكل التالي: base64url(header).base64url(payload).base64url(signature). وتفصل النقطة بين الأجزاء. ويمكن قراءة الترويسة والحمولة لأنهما بترميز base64url وليستا مشفرتين. أما الجزء التشفيري الوحيد فهو التوقيع.

الترويسة

الترويسة كائن JSON: {"alg":"HS256","typ":"JWT"}. يحدد alg خوارزمية التوقيع (HS256 وRS256 وES256 وnone). ويكون typ دائمًا "JWT". وتشمل الترويسات الإضافية kid، أي معرّف المفتاح، لاختيار المفتاح.

الحمولة / المطالبات

المطالبات المسجلة القياسية هي: iss (المُصدِر)، sub (الموضوع)، aud (الجمهور)، exp (طابع زمني لانتهاء الصلاحية بنظام Unix)، nbf (ليس قبل)، iat (وقت الإصدار)، وjti (معرّف JWT المستخدم في الإبطال). أما المطالبات المخصصة فهي أي أزواج إضافية من المفاتيح والقيم.

فك ترميز JWT

import base64, json token = "eyJ..." parts = token.split(".") header = json.loads(base64.urlsafe_b64decode(parts[0]+"==")) payload = json.loads(base64.urlsafe_b64decode(parts[1]+"==")) print(header, payload)

التحقق من التوقيع

بالنسبة إلى HS256: HMAC-SHA256(base64url(header)+"."+base64url(payload), secret). يعيد الطرف المستقبِل حساب هذه القيمة ويقارنها بجزء التوقيع. فإذا تطابقت القيمتان ولم تنتهِ صلاحية الرمز، كان الرمز صالحًا.

التوقيعات غير المتناظرة

بالنسبة إلى RS256، يوقّع المفتاح الخاص السلسلة header.payload باستخدام RSA-SHA256. ويمكن لأي جهة تملك المفتاح العام التحقق من التوقيع من دون المفتاح الخاص. وتُوزَّع المفاتيح العامة عبر نقاط نهاية JWKS (JSON Web Key Set)، مثل /.well-known/jwks.json.

ترميز Base64url

يستبدل Base64url الرمز + بالرمز - والرمز / بالرمز _، ويحذف حشو =. ويجعل ذلك JWTs آمنة للاستخدام في عناوين URL وترويسات HTTP وملفات تعريف الارتباط من دون ترميز النسبة المئوية. ولا تزال البايتات الخام غير مشفَّرة، بل مُرمَّزة فقط.

لا تُشفَّر JWTs افتراضيًا

يمكن لأي شخص يفك ترميز حمولة JWT باستخدام base64url رؤيتها. لا تضعوا أسرارًا، مثل كلمات المرور أو SSNs، في حمولة JWT إلا عند استخدام JWE (JSON Web Encryption) مع خوارزمية "enc" للتشفير الفعلي.

مدة صلاحية الرمز

اضبطوا exp على مدة قصيرة، من 15 إلى 60 دقيقة لرموز الوصول. وتتراكم المخاطر في JWTs طويلة العمر؛ فإذا سُرقت، تظل صالحة حتى انتهاء صلاحيتها. استخدموا رموز التحديث المخزنة بأمان لإصدار رموز وصول جديدة قصيرة العمر.

اكتشاف JWKS

تنشر موفرو المصادقة، مثل Auth0 وKeycloak وGoogle، عنوان URL لـ JWKS. ويجلب المتحقق المفاتيح العامة حسب kid، ويخزنها مؤقتًا، ويتحقق من التوقيعات من دون الاتصال بالمُصدِر في كل طلب. ويؤدي تدوير المفاتيح إلى تحديث نقطة نهاية JWKS.

تحقق سريع

أي جزء من JWT يحتوي على التوقيع التشفيري؟

مراجعة

تتكون JWT من ثلاثة أجزاء JSON بترميز base64url: الترويسة، التي تحدد الخوارزمية، والحمولة، التي تحتوي على المطالبات، والتوقيع. والحمولة قابلة للقراءة وليست مشفَّرة. والخطوة التالية هي الاختيار بين HS256 وRS256.

الأسئلة الشائعة

هل درس «بنية JWT: الترويسة والحمولة والتوقيع» مجاني؟

نعم — نص درس «بنية JWT: الترويسة والحمولة والتوقيع» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Cryptology Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Cryptology Academy 4 دروس في المجموع.

ماذا ستتعلم في «بنية JWT: الترويسة والحمولة والتوقيع»؟

فكّ ترميز أجزاء base64url وافهم كل حقل من حقول JWT تتمرن على Cryptology Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Cryptology Academy؟

لا تُشترط خبرة سابقة. Cryptology Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «بنية JWT: الترويسة والحمولة والتوقيع»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Cryptology Academy هذا؟

نعم. كل درس في Cryptology Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. بنية JWT: الترويسة والحمولة والتوقيع
  2. HS256 مقابل RS256: JWT متماثل مقابل غير متماثل
  3. ثغرات JWT: alg=none والتباس المفاتيح
  4. أفضل ممارسات تنفيذ JWT الآمن
← العودة إلى Cryptology Academy