المدونة
ما هو JWT وكيف يعمل؟ الدليل الكامل للمبتدئين
تعرّف على JWT (JSON Web Token)، وكيف يعمل، ومكوناته، ولماذا يُستخدم في مصادقة المستخدمين داخل تطبيقات الويب الحديثة.

ما هو JWT وكيف يعمل؟
إذا سبق لك العمل على تطبيقات الويب الحديثة، فمن المحتمل أنك سمعت بمصطلح JWT أو JSON Web Token. يُعد JWT أحد أكثر الطرق شيوعًا لنقل المعلومات بشكل آمن بين العميل (Client) والخادم (Server). ويُستخدم على نطاق واسع في المصادقة (Authentication)، والتفويض (Authorization)، وحماية واجهات برمجة التطبيقات (APIs).
في هذا الدليل ستتعرف على ماهية JWT، وكيف يعمل، وما هي مكوناته، ولماذا أصبح معيارًا أساسيًا في تطوير تطبيقات الويب الحديثة.
ما هو JWT؟
JWT (JSON Web Token) هو معيار مفتوح (RFC 7519) يسمح بنقل المعلومات بشكل آمن على هيئة كائن JSON مضغوط.
يتم توقيع كل JWT رقميًا، مما يسمح للطرف المستقبل بالتحقق من أن محتوى الرمز لم يتم تعديله.
وعلى عكس المصادقة التقليدية المعتمدة على الجلسات (Sessions)، يقوم JWT بتخزين بيانات المصادقة داخل الرمز نفسه بدلاً من حفظها على الخادم.
مكونات JWT
يتكون JWT من ثلاثة أجزاء يفصل بينها نقطة.
xxxxx.yyyyy.zzzzz
1. Header
يحتوي الـ Header على معلومات حول نوع الرمز وخوارزمية التوقيع.
مثال:
{
"alg": "HS256",
"typ": "JWT"
}
بعد ذلك يتم ترميز الـ Header باستخدام Base64Url.
2. Payload
يحتوي الـ Payload على بيانات المستخدم (Claims).
مثال:
{
"userId": 15,
"email": "john@example.com",
"role": "admin"
}
وقد يتضمن:
- معرف المستخدم
- اسم المستخدم
- البريد الإلكتروني
- الدور
- الصلاحيات
- تاريخ انتهاء الصلاحية
من المهم معرفة أن الـ Payload غير مشفر، لذلك يمكن لأي شخص فك ترميزه وقراءة محتواه.
3. Signature
يُستخدم التوقيع (Signature) للتحقق من أن الرمز لم يتم تعديله.
ويتم إنشاؤه باستخدام:
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret
)
ولا يعرف المفتاح السري (Secret Key) إلا الخادم فقط.
كيف يعمل JWT؟
عادةً تمر عملية المصادقة بالخطوات التالية:
- يقوم المستخدم بتسجيل الدخول.
- يتحقق الخادم من بيانات تسجيل الدخول.
- ينشئ الخادم JWT.
- يُرسل الرمز إلى العميل.
- يقوم العميل بحفظ JWT.
- يرسل العميل الرمز مع كل طلب لاحق.
- يتحقق الخادم من التوقيع.
- إذا كان الرمز صالحًا، يتم السماح بالوصول.
وبذلك لا يحتاج الخادم إلى تخزين جلسات المستخدمين.
أين يُستخدم JWT؟
يستخدم JWT في العديد من الحالات، مثل:
- مصادقة المستخدمين
- REST APIs
- تطبيقات React وVue وAngular
- تطبيقات الهواتف المحمولة
- OAuth 2.0
- بنية الخدمات المصغرة (Microservices)
- بوابات API
مزايا JWT
من أهم مزايا JWT:
- مصادقة بدون حالة (Stateless)
- حجم صغير للرمز
- سرعة التحقق
- سهولة الاستخدام بين الخدمات المختلفة
- مناسب لتطبيقات الهواتف
- سهل التوسع
JWT أم Sessions؟
| JWT | Sessions |
|---|---|
| يُخزن لدى العميل | تُخزن على الخادم |
| Stateless | Stateful |
| مناسب لواجهات API | مناسب للمواقع التقليدية |
| سهل التوسع | يحتاج إلى تخزين الجلسات |
ويعتمد الاختيار بينهما على متطلبات المشروع.
هل JWT آمن؟
نعم، إذا تم استخدامه بالشكل الصحيح.
أفضل الممارسات:
- استخدام HTTPS دائمًا.
- تحديد وقت انتهاء صلاحية الرمز.
- عدم تخزين البيانات الحساسة داخل Payload.
- استخدام خوارزميات توقيع قوية.
- تغيير المفتاح السري بشكل دوري.
- التحقق من التوقيع في كل طلب.
الأخطاء الشائعة
من أكثر الأخطاء التي يقع فيها المطورون:
- تخزين كلمات المرور داخل JWT.
- عدم تحديد تاريخ انتهاء الصلاحية.
- عدم التحقق من التوقيع.
- استخدام مفاتيح سرية ضعيفة.
- إرسال الرموز عبر HTTP بدلاً من HTTPS.
مثال على JWT
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJ1c2VySWQiOjE1LCJyb2xlIjoiYWRtaW4ifQ.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
ورغم أن هذه السلسلة تبدو عشوائية، إلا أنها تتكون من Header وPayload وSignature.
الخلاصة
يُعد JWT من أكثر تقنيات المصادقة استخدامًا في تطوير الويب الحديث. فهو يتيح نقل المعلومات بين العميل والخادم بطريقة آمنة وفعالة دون الحاجة إلى تخزين الجلسات.
إذا كنت تطور REST APIs أو تطبيقات SPA أو تطبيقات الهواتف المحمولة، فإن فهم كيفية عمل JWT يُعد مهارة أساسية. وعند استخدام HTTPS والتحقق الصحيح من التوقيع واتباع أفضل ممارسات الأمان، يصبح JWT حلًا قويًا وآمنًا وقابلًا للتوسع للمصادقة والتفويض.