ما هو JWT؟ شرح JSON Web Token الكامل
إجابة سريعة
JWT = ترويسة.حمولة.توقيع (Base64Url مشفر). الترويسة تحدد الخوارزمية، الحمولة تحتوي المطالبات، التوقيع يضمن السلامة. استخدم فاك تشفير JWT المجاني لفحص الترويسة والحمولة في متصفحك.
مقدمة
JWT (JSON Web Token) هو معيار مفتوح (RFC 7519) لنقل المعلومات بشكل آمن كـ JSON. يتكون من ثلاثة أجزاء: ترويسة (الخوارزمية)، حمولة (المطالبات مثل sub وexp وiat)، وتوقيع. مشفر Base64Url وموقع. شائع للمصادقة وتبادل المعلومات بين الأطراف.
خطوة بخطوة
-
فهم الهيكل المكون من ثلاثة أجزاء
يتكون JWT من ثلاثة أجزاء: الرأس (الخوارزمية والنوع)، والحمولة (المطالبات)، والتوقيع (يثبت السلامة). كل جزء مشفر بـ Base64URL ومفصول بنقاط: eyJhbGciOi...J9.eyJzdWIi...J9.signature. يمكن لأي شخص لديه الرمز قراءة الجزأين الأولين؛ التوقيع فقط يتطلب المفتاح السري.
-
تعرف على المطالبات القياسية
تحتوي الحمولة على مطالبات — بيانات حول الموضوع. المطالبات القياسية: 'sub' (الموضوع/معرف المستخدم)، 'iat' (صدر في الطابع الزمني)، 'exp' (انتهاء الصلاحية)، 'nbf' (ليس قبل)، 'iss' (المصدر)، 'aud' (الجمهور). يمكن أن تتضمن المطالبات المخصصة الأدوار أو الأذونات أو أي بيانات أخرى.
-
فهم خوارزميات التوقيع
تستخدم JWTs التوقيع المتماثل (HS256 — سر مشترك) أو التوقيع غير المتماثل (RS256، ES256 — زوج المفاتيح العام/الخاص). التوقيع يمنع التلاعب: تغيير أي جزء من الرمز المميز يبطل التوقيع. يمكن فقط لحامل المفتاح السري/الخاص إنشاء رموز صالحة.
-
استخدم JWTs للمصادقة
بعد تسجيل الدخول، يقوم الخادم بإنشاء JWT ويرسله إلى العميل. يقوم العميل بتضمين JWT في رأس التفويض (الرمز المميز للحامل) للطلبات اللاحقة. يتحقق الخادم من التوقيع ويتحقق من انتهاء الصلاحية - لا حاجة للبحث في قاعدة البيانات.
أمثلة
JWT هيكل
مدخل: نموذجي JWT
الإخراج: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyMSIsImV4cCI6MTY5MzYxMjgwMH0.signature
رأس فك التشفير
مدخل: تم فك تشفير الجزء الأول
الإخراج: {"alg": "HS256", "typ": "JWT"}
الحمولة التي تم فك تشفيرها
مدخل: تم فك تشفير الجزء الثاني
الإخراج: {"sub": "user1", "name": "Alice", "iat": 1693526400, "exp": 1693612800}
المشاكل الشائعة
- فك التشفير مقابل التحقق - فك تشفير JWT (قراءة محتوياته) لا يثبت صحته. تحقق دائمًا من جانب خادم التوقيع باستخدام المفتاح السري قبل الثقة في المطالبات.
- تخزين JWTs في localStorage — وهذا يجعلها قابلة للوصول إلى JavaScript، مما يجعلها عرضة لهجمات XSS. قم بتخزين ملفات تعريف الارتباط httpOnly لتحسين الأمان.
- الرموز المميزة طويلة الأمد - في حالة سرقة الرمز المميز، فإنه يظل صالحًا حتى انتهاء الصلاحية. استخدم رموز الوصول قصيرة العمر (15-60 دقيقة) مع رموز التحديث للجلسات الطويلة.
- البيانات الحساسة في الحمولة — يمكن لأي شخص لديه الرمز المميز قراءة الحمولة (وهي Base64، وغير مشفرة). لا تضع أبدًا كلمات المرور أو بطاقات الائتمان أو الأسرار في الحمولة.
نصائح
- تحقق دائمًا من جانب خادم التوقيع JWT قبل الثقة في أي مطالبات - فك التشفير وحده لا يعد مصادقة.
- استخدم رموز الوصول قصيرة العمر (15-60 دقيقة) مع رموز التحديث للجلسات الطويلة لتقليل الضرر الناتج عن سرقة الرمز المميز.
- قم بتخزين ملفات JWTs في ملفات تعريف الارتباط httpOnly وSecure وSameSite بدلاً من localStorage لمنع هجمات XSS.
- استخدم وحدة فك الترميز JWT الخاصة بنا لفحص محتويات الرمز المميز لتصحيح الأخطاء - لا يغادر الرمز المميز متصفحك أبدًا.