ما هو JWT؟
رمز JWT سلسلة مضغوطة من ثلاثة أجزاء بترميز Base64url — header.payload.signature — تحمل مطالبات عن مستخدم أو عميل (الموضوع والأدوار والانتهاء) مع توقيع يمكن للمستقبِل التحقق منه. عُرّف في RFC 7519 مع قواعد توقيعه في RFC 7515 و7518، وهو الصيغة المعتادة لرموز وصول OAuth 2.0 ورموز هوية OpenID Connect. الحمولة مرمّزة فقط لا مشفّرة: من يملك الرمز يستطيع قراءتها.
ملاحظة أمنية: فك الترميز ليس تحققاً. يجب على الخادم فحص التوقيع بخوارزمية مثبّتة ورفض alg=none والتحقق من exp وiss وaud — والرمز الحقيقي الذي يُلصق في أي مكان يبقى سراً حتى ينتهي.
اقرأ الدليل: ما هو JWT؟ شرح رموز JSON Web Token
كيفية استخدام مولّد JWT
- حرّر JSON الحمولة (مطالبات مثل iss وsub وaud وroles).
- اختر خوارزمية HMAC وأدخل السرّ المشترك الذي تستخدمه واجهة API لديك.
- حدّد اختيارياً مدة انتهاء الصلاحية نسبةً إلى الوقت الحالي (60 دقيقة مثلاً) واختم iat.
- انقر «توليد» وانسخ الرمز الموقَّع إلى ترويسة Authorization لديك.
مزايا مولّد JWT
- ترويسة وحمولة JSON قابلتان للتحرير مع عيّنة واقعية
- توقيع HS256 وHS384 وHS512 باستخدام WebCrypto — لا شيء يغادر المتصفح
- السرّ كنص UTF-8 أو كبايتات مرمَّزة بـ Base64/Base64url
- أدوات مساعدة بنقرة واحدة: «exp من الآن (+دقائق)» و«iat = الآن»
- تنبيهات عند قصر السرّ أو غياب exp أو انتهاء صلاحية الرمز مسبقاً
- يعرض المقاطع الثلاثة وأحجامها وأمر curl جاهزاً للاستخدام
مثال على مولّد JWT
توقيع رمز لاختبار واجهة API
الإدخال:
Payload: {"sub":"user_8f3a2c","aud":"api://orders","roles":["admin"]}
Algorithm: HS256 · Secret: your-256-bit-secret · exp: +60 minutesالنتيجة:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzhmM2EyYyIsImF1ZCI6ImFwaTovL29yZGVycyIsInJvbGVzIjpbImFkbWluIl0sImV4cCI6MTcwMDAwMzYwMH0.<signature>الأسئلة الشائعة حول مولّد JWT
ما الخوارزميات المدعومة؟
HS256 وHS384 وHS512 — عائلة HMAC التي لا تحتاج سوى سرّ مشترك. أما الخوارزميات غير المتماثلة (RS256 وES256…) فتتطلب مفتاحاً خاصاً؛ أنشئ واحداً بمولّد مفاتيح RSA ووقّع بمكتبة الخادم لديك.
كيف أضبط انتهاء الصلاحية نسبةً إلى الوقت الحالي؟
أدخل عدد الدقائق في «ضبط exp من الآن». تستبدل الأداة مطالبة exp بالوقت الحالي مضافاً إليه تلك المدة، ويمكنها أيضاً ختم iat بالوقت الحالي.
كم ينبغي أن يكون طول السر؟
بطول ناتج التجزئة على الأقل: 32 بايتاً لـ HS256، و48 لـ HS384، و64 لـ HS512 (RFC 7518 §3.2). استخدم مولّد الأسرار العشوائية لإنشاء واحد؛ وتنبّهك الأداة عندما يكون السرّ أقصر من ذلك.
هل سيعمل الرمز مع الواجهة الخلفية لديّ؟
نعم، إذا كانت الواجهة الخلفية تستخدم السرّ والخوارزمية نفسيهما وتوقعات المطالبات ذاتها (الجهة المُصدِرة والجمهور وانتهاء الصلاحية). يتبع الناتج RFC 7519 بدقة ويطابق ما تنتجه مكتبات مثل jsonwebtoken وPyJWT وjose للمدخلات نفسها.
هل يُرفع السرّ الخاص بي؟
لا. يتم التوقيع في متصفحك باستخدام crypto.subtle؛ ولا يغادر السرّ ولا الرمز جهازك أبداً.
ملاحظات تقنية
تُسلسَل الترويسة والحمولة كـ JSON مضغوط، ثم تُرمَّزان بـ Base64url دون حشو وتُوصلان بنقطة. يُحسب HMAC لمدخل التوقيع هذا باستخدام crypto.subtle.sign ويُلحق بوصفه المقطع الثالث، تماماً كما يصف RFC 7515. وتُضبط قيمة alg في الترويسة دائماً على الخوارزمية المختارة ليبقى الرمز متسقاً.
المراجع
- RFC 7519: JSON Web Token (JWT)يعرّف صيغة JWT — الترويسة والحمولة والتوقيع — والمطالبات المسجّلة iss وsub وaud وexp وnbf وiat وjti.
- RFC 7515: JSON Web Signature (JWS)كيف يُوقَّع JWT ويُسلسَل: الترويسة المحمية ومدخل التوقيع والتسلسل المضغوط.
- RFC 7518: JSON Web Algorithms (JWA)الخوارزميات وراء ترويسة alg: HS256/384/512 وRS256 وES256 ومتطلبات حجم المفتاح لكل منها.