ترميز وفك ترميز JWT

الصق الرمز لتقرأ ترويسته وحمولته، أو وقّع رمزك بنفسك — دون أزرار ودون رفع.

اختياري عند فك الترميز (أدخله للتحقّق)، وواجب عند التوقيع.

كيف تستخدمها

  1. الصق الرمز: تظهر الترويسة والحمولة فورًا دون أي زر. يبقى ما لصقته كما هو في مربع الإدخال؛ الأداة لا تعيد كتابته أبدًا.
  2. أدخل المفتاح السرّي في المربع أسفل الإدخال للتحقّق من التوقيع. تركه فارغًا يعني ببساطة «لم يُتحقَّق منه»، وتُقرأ المطالبات كما هي.
  3. انتقل إلى الترميز، واكتب مطالباتك بصيغة JSON، واختر HS256/384/512 مع مفتاح سرّي، ثم انسخ الرمز الناتج. تغيير الوضع لا يمسح ما كتبته.
  4. تُترجم المطالبات القياسية exp / iat / nbf إلى جملة بلغتك ومنطقتك الزمنية، مع علامتي «منتهية الصلاحية» و«لم يبدأ العمل به بعد».

مثال

الرمز

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1LTQzMjEiLCJuYW1lIjoi2LPYp9ix2Kkg2KPYrdmF2K8iLCJyb2xlIjoiYWRtaW4iLCJpc3MiOiJodHRwczovL2FwaS5leGFtcGxlLnNhIiwiaWF0IjoxNzY3MjI1NjAwLCJleHAiOjE3OTg3NjE2MDB9.UVdBhF8nOTPpvbmYF-0Zr4sfTrHA6uekPv3Kbf9Z23w

الترويسة والحمولة

الترويسة
{
  "alg": "HS256",
  "typ": "JWT"
}

الحمولة
{
  "sub": "u-4321",
  "name": "سارة أحمد",
  "role": "admin",
  "iss": "https://api.example.sa",
  "iat": 1767225600,
  "exp": 1798761600
}

وُقّع هذا الرمز بالمفتاح السرّي «سر-تجريبي»؛ أدخله في حقل المفتاح ليتحوّل سطر الحالة إلى «التوقيع صحيح». انتقل إلى الترميز واضغط «مثال» لتحصل على الحمولة نفسها: مع المفتاح نفسه يعيد بناء هذا الرمز محرفًا بمحرف.

القواعد والحدود والمشكلات المعروفة

  • الخوارزميات المدعومة هي HS256 وHS384 وHS512 فقط، في التوقيع والتحقّق. تُفكّ رموز RS* وES* وPS* وتُعرض كما هي لكن دون التحقّق من توقيعها — ذلك يحتاج مفتاحًا عامًّا، ويقول سطر الحالة ذلك صراحةً بدل التخمين.
  • الرموز بلا توقيع (alg: none) تُفكّ وتُعلَّم بوضوح، لكننا لا ننشئها: طلب التوقيع دون مفتاح يعطي رسالة خطأ لا رمزًا بلا توقيع.
  • تبني الأداة الترويسة بنفسها (`{"alg": … ,"typ": "JWT"}`) عند الترميز، ولا تنقل حقولًا مثل kid أو jku أو x5c أو cty — نحن نوقّع مطالبات، لا سلاسل شهادات.
  • تُعاد كتابة JSON الحمولة بشكل مضغوط قبل التوقيع، فلا تدخل المسافات البادئة ولا التعليقات في الرمز. ترتيب المفاتيح يتبع كائنات JavaScript: المفاتيح المكرّرة تُستبدل بآخرها، والمفاتيح الرقمية تتقدّم إلى الأمام.
  • الأعداد الصحيحة الكبيرة جدًّا تفقد دقّتها — `12345678901234567890` يعود مقتربًا، لأن هذا سلوك أعداد JavaScript. لا نصحّح ذلك بصمت؛ استخدم النصوص عندما تهمّ الأرقام بدقّة.
  • يُعرض JSON بمسافات بادئة لتسهيل القراءة، بينما يغطّي التوقيع الجزأين الخام كما يظهران في الرمز. لا يُعاد ترميز شيء خلف الكواليس، فما يتحقّق هنا يتحقّق في شفرتك أيضًا.
  • base64url صارم: تُبلَّغ `+` و`/` و`=` كأخطاء بدل قبولها بصمت، والبايتات غير الصالحة كـ UTF-8 تُبلَّغ بدل استبدالها. تُتجاهل الفراغات داخل الرمز الملصوق، فالرموز لا تحتويها أصلًا.
  • لا تُفكّ شفرة JWE المكوّن من خمسة أجزاء، لكننا نخبرك أن هذا ما لصقته.
  • الحد 10,000 محرف. لا شيء يُرفع أو يُحفظ أو يُكتب في الرابط أو يُشارك: زر المشاركة يشارك عنوان هذه الصفحة فقط، لا رمزك ولا مفتاحك.

بعد قراءة المطالبات، هذه هي الخطوات التالية المعتادة.