Node.js • المستوى الثالث • الدرس 4
العودة لفهرس المستوىالتوثيق وحماية المسارات بـ JWT (JSON Web Tokens)
أهداف الدرس العلمية
- فهم معمارية الـ Stateless Authentication باستخدام رموز JWT.
- توليد والتحقق من التوكن لحماية المسارات وواجهات APIs الخاصة.
- بنية JWT الثلاثية: Header.Payload.Signature.
- التحقق من التوقيع لمنع التلاعب + انتهاء الصلاحية.
1. ما هو JWT؟
هو معيار مفتوح مشفر (RFC 7519) يتيح نقل البيانات بين طرفين بأمان، ويُستخدم للتحقق من هويات المستعملين وصلاحياتهم في تطبيقات الويب والجوال.
bash
الجانب الأول: Header (Base64)
{ "alg": "HS256", "typ": "JWT" }
↓
الجانب الثاني: Payload (Base64)
{ "userId": 101, "role": "admin", "exp": 1730000000 }
↓
الجانب الثالث: Signature (HMAC-SHA256)
HMACSHA256(header.payload, SECRET_KEY)
╔═══════════════════════════════════════╗
║ eyJhbGciOi...eyJ1c2Vy...SflKxwRJ... ║
╚═══════════════════════════════════════╝2. لماذا JWT آمن؟
🔏 Signature
أي تعديل في Payload يُبطل التوقيع فوراً.
⏱️ Expiry (exp)
صلاحية محدودة زمنياً تمنع الاستخدام المستمر.
🔐 Secret Key
المفتاح السري موجود فقط على الخادم.
التطبيق العملي المباشر
تحدي الدرس الرابع: اكتشاف التلاعب وانتهاء الصلاحية
قم بالتعديل على الكود في المحرر أدناه:
- أضف خاصية
expإلىpayloadبقيمةnow + 3600. - أضف خاصية
iatإلىpayloadبقيمةnow. - أضف التحقق من انتهاء الصلاحية في
verifyToken. - أضف اختباراً لرمز منتهي الصلاحية بـ
expiresIn = -10. - أضف اختباراً لرمز مُعدَّل يدوياً (Tampered) واكتشف رفضه.
⏳ جارٍ تحميل المحرر التفاعلي...