كيف تعمل Authentication الحديثة (JWT – OAuth) بشكل عملي
ملخص سريع
كيف تعمل Authentication الحديثة (JWT - OAuth) بشكل عملي؟ في عالم تطوير الويب والتطبيقات الحديثة، لم يعد تسجيل الدخول (Login) مجرد إدخال اسم مستخدم وكلمة مرور فقط، بل أصبح هناك أنظمة متقدمة مثل JWT و OAuth لضمان الأمان، قابلية التوسع، وتجربة مستخدم أفضل. في هذا المقال سنشرح الموضوع بشكل عملي وبسيط من البداية حتى الفهم الكامل. ⸻ أولاً: ما هي Authentication؟ Authentication (المصادقة) هي عملية التحقق من هوية المستخدم. مثال بسيط: * تدخل Email + Password * النظام يتأكد أنك صاحب الحساب * يسمح لك بالدخول لكن المشكلة: كيف نحتفظ بحالة تسجيل الدخول بدون إعادة إدخال البيانات كل مرة؟ هنا يأتي دور JWT و OAuth. ⸻ أولاً: JWT (JSON Web Token) ما هو JWT؟ JWT هو توكن (Token) يتم إنشاؤه بعد تسجيل الدخول، ويستخدم لإثبات هوية المستخدم في كل طلب لاحق. بدل ما السيرفر يحتفظ بجلسة (Session)، يتم إرسال “بطاقة هوية رقمية” مع كل Request. ⸻ شكل الـ JWT يتكون من 3 أجزاء : Header.Payload.Signature 1. Header يحتوي على نوع التوكن وخوارزمية التشفير : { "alg": "HS256", "typ": "JWT" } 2. Payload يحتوي على بيانات المستخدم : { "userId": 123, "role": "admin", "exp": 1710000000 } ⚠️ مهم: البيانات هنا ليست مشفرة بل قابلة للقراءة، لذلك لا تضع كلمات مرور. ⸻ 3. Signature يتم إنشاؤها باستخدام secret key لحماية التوكن من التلاعب. ⸻ كيف يعمل JWT عملياً؟ الخطوات: 1. المستخدم يسجل دخول 2. السيرفر يتحقق من البيانات 3. السيرفر ينشئ JWT ويرسله للعميل 4. العميل يخزن التوكن (LocalStorage / Cookies) 5. في كل طلب API: * يتم إرسال التوكن في الهيدر: Authorization: Bearer TOKEN 6. السيرفر يتحقق من التوكن ويسمح أو يرفض الطلب ⸻ مميزات JWT * لا يحتاج Session على السيرفر (Stateless) * سريع و scalable * مناسب للـ APIs و Mobile Apps ⸻ عيوب JWT * صعب إلغاؤه قبل انتهاء صلاحيته * إذا تم سرقته يمكن استخدامه حتى ينتهي ⸻ ثانياً: OAuth 2.0 ما هو OAuth؟ OAuth هو نظام تفويض (Authorization) وليس تسجيل دخول مباشر. يعني يسمح لتطبيق باستخدام حسابك في تطبيق آخر بدون إعطائه كلمة المرور. ⸻ مثال عملي: عندما تدخل إلى موقع وتختار: * “Login with Google” * أو “Login with Facebook” هذا هو OAuth. ⸻ كيف يعمل OAuth عملياً؟ الأطراف: * User (المستخدم) * Client (التطبيق) * Authorization Server (مثل Google) * Resource Server (API) ⸻ الخطوات: 1. المستخدم يضغط “Login with Google” 2. يتم تحويله إلى Google 3. يسجل دخول على Google 4. Google يسأله: هل تسمح للتطبيق بالوصول؟ 5. المستخدم يوافق 6. Google يرسل Authorization Code للتطبيق 7. التطبيق يبدله بـ Access Token 8. يستخدم Access Token للوصول للبيانات ⸻ الفرق بين Access Token و Refresh Token * Access Token: قصير المدة (يستخدم للطلبات) * Refresh Token: طويل المدة (يستخدم لتجديد Access Token) ⸻ مميزات OAuth * أمان عالي (لا تشارك كلمة المرور) * تجربة مستخدم سهلة (Login سريع) * يستخدم مع Google / Facebook / GitHub ⸻ عيوب OAuth * معقد في التنفيذ مقارنة بـ JWT * يحتاج إعدادات Provider (Google/Facebook) الفرق بين JWT و OAuth الفرق بين JWT و OAuth JWT: * Authentication mechanism * يستخدم لتسجيل الدخول داخل النظام * يحتوي على بيانات المستخدم داخل التوكن * بسيط وسريع * مناسب للـ APIs OAuth: * Authorization framework * يستخدم لتسجيل الدخول عبر خدمات خارجية مثل Google و Facebook * لا يشارك كلمة المرور مع التطبيق * أكثر أمانًا * أكثر تعقيدًا في الإعداد كيف يتم استخدامهما معاً؟ في الواقع، كثير من الأنظمة الحديثة تستخدم الاثنين معاً: * OAuth لتسجيل الدخول (Google Login) * ثم إصدار JWT داخلي لإدارة الجلسات داخل التطبيق ⸻ مثال عملي (سيناريو واقعي) تطبيق تسوق إلكتروني: تسجيل دخول: * المستخدم يدخل بـ Google (OAuth) * النظام يحصل على بياناته بعد الدخول: * السيرفر يصدر JWT * يتم استخدام JWT في كل API: * إضافة منتج للسلة * إنشاء طلب * عرض الحساب ⸻ أفضل الممارسات (Best Practices) 1. لا تخزن JWT في LocalStorage إذا كان حساس جداً استخدم HttpOnly Cookies إن أمكن 2. ضع Expiration time مثلاً: * JWT: 15 دقيقة * Refresh Token: 7 أيام 3. استخدم HTTPS دائماً 4. لا تخزن بيانات حساسة داخل JWT ⸻ الخلاصة * JWT = طريقة لإثبات الهوية باستخدام توكن داخل التطبيق * OAuth = طريقة لتسجيل الدخول باستخدام حساب خارجي بدون مشاركة كلمة المرور * الاثنين أصبحوا أساس أي نظام Authentication حديث
جاهز للبدء؟ تواصل معنا
اضغط واتساب لإرسال رابط المقال والخدمة تلقائياً، أو راسلنا على البريد.