توكنات الويب JSON (JWTs) هي وسيلة مضغوطة وآمنة عبر الإنترنت لتمثيل الادعاءات التي سيتم نقلها بين طرفين. وغالبًا ما تستخدم هذه الادعاءات لضمان سلامة المعلومات وموثوقيتها.
تستكشف هذه المقالة كيفية عمل توكنات الويب JWT. سنلقي نظرة على هيكل JWT، الذي يتكون من ثلاثة أجزاء مشفرة وموقعة رقميًا. ثم سنناقش حالات الاستخدام الشائعة لـ JWTs ونراجع بعض فوائد استخدامها،
هيكل توكن الويب JWT (مع مثال)
يتكون توكن الويب JSON (JWT) من ثلاثة أجزاء مفصولة بنقاط: الرأس، الحمولة، والتوقيع. الهيكل العام هو:
xxxxxxxxxx.yyyyyyyyyy.zzzzzzzzzz
الرأس:
- يتكون الرأس عادةً من جزئين: نوع التوكن، الذي هو JWT، والخوارزمية المستخدمة للتوقيع، مثل HMAC SHA256 أو RSA.
- مثال على الرأس (مشفر بتنسيق base64):
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
الحمولة:
- تحتوي الحمولة على ادعاءات. الادعاءات هي بيانات حول كيان (عادةً، المستخدم) وبيانات إضافية.
- هناك ثلاثة أنواع من الادعاءات: المسجلة، العامة، والخاصة.
- مثال على الحمولة (مشفر بتنسيق base64):
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ
التوقيع:
- لإنشاء جزء التوقيع، تحتاج إلى أخذ الرأس المشفر، والحمولة المشفرة، وسر، والخوارزمية المحددة في الرأس، وتوقيع ذلك.
- يستخدم التوقيع للتحقق من أن مرسل JWT هو ما يقوله، ولضمان أن الرسالة لم تتغير أثناء النقل.
- مثال على التوقيع:
HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
جمع كل ذلك معًا:
Header: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
Payload: eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ
Signature: HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
JWT المشفر:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwia
فوائد استخدام JWT:
تحتوي JWTs على كائنات JSON مشفرة وموقعة، مما يضمن السلامة والموثوقية دون الاعتماد على الجلسات الموجهة على الخادم.
بعض الفوائد الرئيسية التي تجعل JWTs مفيدة هي:
- حجم مضغوط بفضل التشفير الآمن عبر الإنترنت لتوفير الفضاء
- محتوى ذاتي مع جميع المعلومات اللازمة عن المستخدم لتجنب استعلامات قاعدة البيانات المفرطة
- توقيعات رقمية لأمان محصن والتحقق من الموثوقية
- طبيعة غير موجهة لتحسين القابلية للتوسع من خلال إزالة جلسات الخادم
- توافق شامل مع محللات JSON المتاحة في معظم اللغات
- قابلية للتوسع من خلال حقول بيانات مخصصة دون كسر الإطارات الحالية
JWT مقابل OAuth: الفرق بين JWT و OAuth
توكن الويب JWT (JSON Web Token) و OAuth مرتبطان ولكنهما يخدمان أغراضًا مختلفة في سياق المصادقة والتفويض في تطوير الويب. إليك مقارنة سريعة بين JWT و OAuth:
JWT (توكن الويب JSON):
- الغرض: JWT هو وسيلة مضغوطة ومستقلة لنقل المعلومات بين الأطراف بشكل آمن. يُستخدم عادةً للمصادقة وتبادل المعلومات.
- المحتوى: تحتوي JWT على ادعاءات حول كيان (عادةً، مستخدم) وغالبًا ما تُستخدم لمصادقة المستخدم. يمكن أن تشمل الادعاءات معرف المستخدم، والأدوار، والأذونات، ومعلومات أخرى ذات صلة. تُستخدم JWTs غالبًا لإنشاء أنظمة مصادقة غير موجهة.
- الاستخدام: تُرسل JWTs عادةً كجزء من رؤوس الطلبات في طلبات HTTP. تُستخدم لتمثيل هوية المستخدم وامتيازاته.
OAuth (التفويض المفتوح):
- الغرض: OAuth هو إطار عمل للتفويض، يسمح لتطبيق طرف ثالث بالوصول إلى موارد مستخدم على خادم آخر دون الكشف عن بيانات اعتماد المستخدم. لم يتم تصميم OAuth للمصادقة ولكنه للتفويض.
- الأدوار: يحدد OAuth أدوارًا مثل مالك المورد، العميل، خادم التفويض، وخادم المورد. يتيح السيناريوهات حيث يمكن للمستخدم منح الوصول إلى موارده (مثل الصور، جهات الاتصال) لتطبيق آخر دون مشاركة بيانات اعتماده.
- أنواع المنح: يقدم OAuth أنواع المنح (رمز التفويض، ضمني، بيانات اعتماد العميل، كلمة المرور، إلخ) لتحديد كيفية تنفيذ عملية التفويض.
- التوكنات: يشمل OAuth استخدام توكنات الوصول وتوكنات التحديث. تُستخدم توكنات الوصول للوصول إلى الموارد المحمية، ويمكن استخدام توكنات التحديث للحصول على توكن وصول جديد.
الاختلافات الرئيسية:
- الغرض: تُستخدم JWT أساسًا للمصادقة وتبادل المعلومات، بينما يعد OAuth إطارًا للتفويض.
- المحتوى: تحتوي JWT على ادعاءات حول مستخدم، بينما يركز OAuth على تحديد الأدوار والأذونات وإدارة الوصول إلى الموارد.
- الأدوار: تُستخدم JWT غالبًا لتمثيل هوية المستخدم، بينما يتضمن OAuth أدوارًا مثل مالك المورد، العميل، خادم التفويض، وخادم المورد.
- التوكنات: JWT هي نوع من التوكنات المستخدمة للمصادقة، بينما يقدم OAuth توكنات وصول وتوكنات تحديث لإدارة التفويض.
كيف يعمل JWT؟
تلعب توكنات الويب JSON (JWTs) دورًا رئيسيًا في المصادقة من خلال توفير وسيلة آمنة وفعالة للتحقق من هوية المستخدمين. يتضمن العملية عادةً الخطوات التالية:
- مصادقة المستخدم: يقوم المستخدمون بتسجيل الدخول باستخدام اسم المستخدم وكلمة المرور الخاصة بهم أو من خلال مقدمي خدمة خارجيين مثل Google أو Facebook. يقوم خادم المصادقة بالتحقق من بيانات الاعتماد ويصدر توكن ويب JSON (JWT) يشهد على هوية المستخدم.
- إنشاء JWT: يقوم موفر الهوية (IdP) بإنشاء JWT، موقعة إما بملح سري أو مفتاح خاص. تحتوي هذه JWT على معلومات أساسية للمستخدم، مثل معرف المستخدم، والأدوار، ووقت انتهاء الصلاحية.
- استخدام JWT: يقوم عميل المستخدم بتخزين JWT بشكل آمن التي تم الحصول عليها أثناء المصادقة. عند الوصول إلى الموارد المحمية، يتضمن العميل JWT في رأس تفويض HTTP.
- التحقق من التوكن: يقوم خادم المورد بفك تشفير والتحقق من موثوقية JWT باستخدام الملح السري المحدد أو المفتاح العام. يضمن هذا العملية سلامة وأصل التوكن.
JWT في Apidog
Apidog هو أداة لتطوير واختبار واجهة برمجة التطبيقات سهلة الاستخدام تتميز في إدارة توكنات الويب JSON (JWT). مع واجهته البديهية، يبسط Apidog عملية التعامل مع JWTs، مما يوفر دعمًا تلقائيًا لإنشاء التوكنات، والإدارة الديناميكية، والتضمين السلس في طلبات واجهة برمجة التطبيقات.

تقوم هذه الأداة بتنظيم جوانب JWT المتعلقة بتطوير واجهة برمجة التطبيقات، مما يسمح للمطورين بالتركيز على الاختبار الفعال والتكامل ضمن سير العمل الخاص بهم.