انتقل إلى محتوى الدرس
الدرس 86
دورة تكنولوجيا الويب

واجهات API والمصادقة والصلاحياتBuilding APIs Authentication and Authorization

تعرّف على كيفية بناء الخادم لواجهات RESTful API وتبادل بيانات JSON واختبارها بأداة Postman، والفرق بين المصادقة والترخيص، وتتبع الدخول عبر الجلسات ورموز JWT.
أقسام الدرس
8
الأمثلة
2
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
9
محتوى الدرس
في هذا الدرس 8تصفّح المواضيع

تعرّفنا في الفصول السابقة على كيفية انتقال الطلبات والاستجابات عبر بروتوكول وكيف تطلب الواجهة الأمامية البيانات في الخلفية دون تجميد الشاشة. والآن ننتقل إلى الضفة الأخرى من الجسر لنفهم: كيف يبني مطور الواجهة الخلفية واجهات برمجة التطبيقات () ويوفرها للمنصات المختلفة؟ وكيف يختبرها قبل وجود أي شاشة؟ وكيف يتحقق الخادم من هوية المستخدم () ويضبط حدود صلاحياته ()؟ في هذا الدرس سنكتسب تصوراً معمارياً واضحاً ومبسطاً لنقاط نهاية ، وأداة ، وآليتي تتبع الدخول عبر جلسات الخادم ورموز .

قبل الغوص في تفاصيل هذا الدرس، استعرض جدول المصطلحات الأساسية التالية:

المصطلح بالعربية المصطلح بالإنجليزية النطق التقني المعنى المبسط
نقطة نهاية البرمجة إيه بي آي إند بوينت مسار رابط محدد على الخادم (مثل /api/courses) مخصص لاستقبال طلبات معينة وإرجاع بيانات منظمة.
واجهة برمجة قياسية ريستفول إيه بي آي نمط معماري قياسي لتنظيم مسارات الخادم باستخدام طرق وأكواد حالة HTTP وتبادل البيانات بصيغة JSON.
المصادقة وإثبات الهوية أوثينتيكيشن عملية التحقق من هوية المستخدم للإجابة عن سؤال: من أنت؟ (عبر البريد وكلمة المرور أو رمز التحقق).
الترخيص وتحديد الصلاحيات أوثورايزيشن عملية فحص صلاحيات المستخدم بعد معرفة هويته للإجابة عن سؤال: ماذا يُسمح لك بفعله؟
جلسة الخادم سيرفر سيشن سجل يحفظه الخادم في ذاكرته أو قاعدة بياناته لتتبع المستخدم المسجل، ويربطه بمعرّف يُرسل في ملف Cookie.
رمز الويب الموقّع جيسون ويب توكن / جي دبليو تي بطاقة هوية رقمية مشفرة وموقّعة يصدرها الخادم ويحملها التطبيق ليرسلها في رأس الرسالة مع كل طلب.

في هندسة البرمجيات الحديثة، نادراً ما تكتفي الشركات بموقع ويب لأجهزة الحاسوب فقط؛ بل تحتاج المنصة نفسها إلى موقع ويب يعمل على المتصفح، وتطبيق آيفون ()، وتطبيق أندرويد (). فهل تبني الشركة ثلاث قواعد بيانات وثلاث واجهات خلفية منفصلة؟ بالطبع لا! بل يبني مطور الواجهة الخلفية واجهة برمجة تطبيقات () موحدة على الخادم:

  • عقل مركزي واحد يخدم كل الشاشات: بدلاً من أن يرسل الخادم صفحات جاهزة تصلح للمتصفح فقط، يوفّر الخادم نقاط وصول للبيانات الخام المنظمة؛ فتتحدث شاشة الموقع وتطبيق الآيفون وتطبيق الأندرويد جميعاً مع نفس الخادم ونفس قاعدة البيانات.
  • عقد عمل واضح بين فرق التطوير: يحدد مطور الواجهة الخلفية عنوان الرابط والحقول المطلوبة وشكل النتيجة؛ وبمجرد اعتماد هذا العقد، يعمل مطور الواجهة الأمامية ومطور الهواتف بالتوازي دون انتظار.
  • حراسة قاعدة البيانات: لا يُسمح لأي متصفح أو هاتف بالاتصال بقاعدة البيانات مباشرةً أبداً، بل يمر كل طلب عبر بوابة في الخادم أولاً.

كيف ينظم مطور الواجهة الخلفية مئات المسارات البرمجية داخل الخادم دون فوضى؟ يعتمد المطورون على النمط المعماري القياسي REST ()، الذي يوظف طرق وأكواد حالة التي درستها سابقاً بشكل منظم وبديهي:

طريقة HTTP ومسار نقطة النهاية العملية المقابلة في الخادم كود الحالة القياسي عند النجاح
قراءة () قائمة الدورات التعليمية
إنشاء () دورة جديدة في قاعدة البيانات
تحديث () بيانات الدورة رقم
حذف () الدورة رقم أو

لاحظ كيف يبقى اسم المورد في الرابط واضحاً وثابتاً ()، بينما تحدد طريقة نوع العملية المطلوبة، ثم يرد الخادم بحمولة بيانات منظمة بصيغة كما في المثال الآتي:

JSON
{
  "status": "success",
  "course": {
    "id": 42,
    "title": "Web Technology Fundamentals",
    "published": true
  }
}

لنفترض أن مطور الواجهة الخلفية انتهى اليوم من برمجة نقطة النهاية لإضافة طلب شراء جديد، لكن مطور الواجهة الأمامية لم يبدأ بعد في تصميم شاشة سلة المشتريات! كيف يختبر مطور الخلفية عمله؟ كتابة الرابط في شريط عنوان المتصفح ترسل طلب فقط، ولا تتيح إرسال طلب محمّل ببيانات ورؤوس رسائل مخصصة.

لهذا السبب يعتمد مطورو الواجهة الخلفية يومياً على أداة اختبار الواجهات الشهيرة Postman (أو بدائلها الخفيفة مثل Insomnia وThunder Client):

  • إرسال أي نوع من طلبات بدون شاشة أمامية: يختار المطور داخل طريقة الطلب ( أو أو )، ويكتب عنوان نقطة النهاية وبيانات التجريبية ويضغط إرسال.
  • فحص كود الحالة وزمن الاستجابة: يعرض البرنامج فوراً كود الحالة الدقيق ( أو )، وزمن معالجة الطلب بالمللي ثانية، ورؤوس الرسالة، ونتيجة منسقة وملونة.
  • حفظ مجموعات الطلبات للفريق (): يحفظ مطور الخلفية جميع نقاط النهاية في مجلدات منظمة داخل ويشاركها مع فريق الواجهة الأمامية ليعرفوا طريقة استدعاء كل ميزة فوراً.

ليست جميع مسارات الخادم متاحة للعامة؛ فبينما يستطيع أي زائر تصفح قائمة الدورات العامة، لا يجوز لأحد فتح صفحة الحساب الشخصي أو تغيير كلمة المرور إلا بعد إثبات هويته. وهنا نصل إلى الركيزة الأولى من ركائز التحكم في الوصول داخل الخادم: المصادقة ( وتُختصر ).

تجيب المصادقة عن سؤال واحد محدد: «من أنت؟» وهي العملية التي يتحقق فيها خادم الواجهة الخلفية من صحة هوية الشخص الذي يحاول الدخول عبر إحدى وسائل الإثبات الآتية:

  • 1. شيء تعرفه (): مثل إدخال البريد الإلكتروني وكلمة المرور ومطابقتها داخل الخادم.
  • 2. شيء تملكه (): مثل رمز التحقق المؤقت لمرة واحدة () الذي يصل إلى هاتفك في المصادقة الثنائية ().
  • 3. تسجيل الدخول عبر مزود هوية موثوق: مثل تسجيل الدخول السريع بحساب Google أو GitHub الموثق.

بعد أن يتأكد الخادم من هويتك عبر المصادقة، تبدأ فوراً الخطوة الثانية المكملة لها: الترخيص وتحديد الصلاحيات ( وتُختصر ).

يجيب الترخيص عن سؤال حاسم: «ماذا يُسمح لك بفعله؟» فمجرد أن الطالب سجّل دخوله بنجاح بحسابه الصحيح في منصة تعليمية لا يعني أبداً أنه يملك صلاحية حذف الدورات أو تعديل درجات زملائه! ويضبط مطور الواجهة الخلفية هذه الصلاحيات عبر قاعدتين أساسيتين:

  • التحكم في الوصول المبني على الأدوار (): منح كل حساب دوراً وظيفياً واضحاً مثل زائر () أو طالب () أو مدرب () أو مدير نظام ()، ولكل دور قائمة عمليات مسموحة.
  • فحص ملكية المورد (): حتى بين المستخدمين الذين يحملون نفس الدور، يحق للطالب تعديل ملفه الشخصي هو فقط، ويرفض الخادم أي محاولة لتعديل ملف طالب آخر.

لكي لا يلتبس عليك الفرق بين المصادقة () والترخيص () أبداً، تذكّر تشبيه السفر عبر المطار:

  • المصادقة عند موظف الجوازات: إبراز جواز سفرك لإثبات أنك فعلاً الشخص المسجل بالاسم والصورة.
  • الترخيص عند بوابة الطائرة: فحص تذكرتك لمعرفة المقعد والدرجة المسموح لك بدخولها، ومنع أي راكب من دخول قمرة قيادة الطيار!
وجه المقارنة المصادقة (Authentication - AuthN) الترخيص والصلاحيات (Authorization - AuthZ)
السؤال الجوهري «من أنت؟» (إثبات الهوية) «ماذا يُسمح لك بالوصول إليه أو تعديله؟» (حدود الصلاحية)
ترتيب التنفيذ بالخادم تتم أولاً عند تسجيل الدخول أو وصول الطلب. تتم ثانياً بعد التأكد من هوية صاحب الطلب.
كود حالة HTTP عند الرفض (يجب تسجيل الدخول وإثبات الهوية أولاً). (هويتك معروفة، لكن دورك لا يملك صلاحية هذه العملية).

تأمل المخطط المعماري الآتي الذي يلخص تكامل نقاط نهاية مع خطوتي المصادقة والترخيص وآليتي تتبع الدخول:

مخطط معماري يوضح واجهات REST API والفرق بين المصادقة Authentication والترخيص Authorization وجلسات الخادم ورموز JWT

كما درست في فصل ، فإن البروتوكول عديم الحالة بطبيعته ()؛ أي أن الخادم ينسى من أنت فور انتهاء الاستجابة. فكيف يتذكرك الموقع أثناء تنقلك بين الصفحات دون أن يطلب كلمة المرور في كل ضغطة؟ الطريقة الكلاسيكية المعتمدة في مواقع الويب هي جلسات الخادم التفاعلية ():

  1. 1. التحقق عند تسجيل الدخول: ترسل بريدك وكلمة مرورك إلى الخادم فيتحقق من صحتهما.
  2. 2. إنشاء سجل الجلسة داخل الخادم: ينشئ الخادم في ذاكرته أو قاعدة بياناته سجلاً خاصاً بجلسة دخولك، ويرسل للمتصفح رقم الجلسة العشوائي فقط () داخل ملف تعريف ارتباط محمي ().
  3. 3. إرفاق الكوكي تلقائياً مع كل طلب: في كل ضغطة تالية، يرسل المتصفح ملف الكوكي تلقائياً ضمن رأس الرسالة، فيبحث الخادم عن رقم الجلسة في سجلاته ليعرف هويتك وصلاحياتك فوراً.

بينما تعمل ملفات الكوكيز وجلسات الخادم بكفاءة عالية مع مواقع الويب التقليدية، تفضّل تطبيقات الهواتف الذكية () والواجهات المعتمدة على أسلوباً ثانياً يُعرف باسم المصادقة عديمة الحالة عبر الرموز ():

  • بطاقة هوية رقمية موقّعة: بدلاً من حفظ ملف جلسة لكل مستخدم في ذاكرة الخادم، يُصدر الخادم عند تسجيل الدخول رمزاً نصياً مدمجاً () يحتوي على رقم المستخدم ودوره ووقت انتهاء الصلاحية، ومختوماً بتوقيع رقمي سري خاص بالخادم.
  • الإرسال في رأس الرسالة (): يحتفظ التطبيق بالرمز ويرسله مع كل طلب إلى واجهة داخل رأس الرسالة بصيغة .
  • فحص التوقيع الرياضي فوراً: بمجرد وصول الطلب، يفحص الخادم سلامة الختم الرقمي للرمز ليتأكد أنه صادر منه ولم يتلاعب أحد ببياناته.

شاهد في المثال التوضيحي الآتي كيف يُرسل الرمز في رأس الرسالة وكيف تبدو بياناته الداخلية:

Shell
GET /api/orders/my-list HTTP/1.1
Host: api.closetag.test
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjo3fQ.sig
Accept: application/json
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

تعرّفنا في هذا الدرس على كيفية بناء الخادم لواجهات RESTful APIs الموحدة التي تزود مواقع الويب وتطبيقات الهواتف ببيانات JSON، وكيف يختبر المطور نقاط النهاية بأداة Postman قبل وجود واجهة أمامية، والفرق الجوهري بين المصادقة («من أنت؟» — ) والترخيص والصلاحيات («ماذا يحق لك فعله؟» — )، وآليتي تتبع تسجيل الدخول عبر جلسات الخادم ورموز . الخطوة التالية: انتقل الآن إلى الدرس الخامس (أساسيات أمان الواجهة الخلفية) لنكتشف كيف يحمي الخادم نفسه وبياناته من المدخلات الخبيثة، وكيف يجزّئ كلمات المرور ويمنع ثغرات حقن وتجاوز الصلاحيات !

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات8

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 8 مفهومةأول بطاقة، أول خطوة
01 RESTful API واجهة برمجة التطبيقات القياسية RESTful API
نمط معماري قياسي لتصميم واجهات البرمجة يوظف طرق وأكواد حالة HTTP ومسارات الموارد الواضحة مع تبادل البيانات بصيغة JSON.
للمراجعة
02 API Endpoint نقطة نهاية البرمجة (API Endpoint)
مسار رابط محدد على خادم الواجهة الخلفية يستقبل طلبات معينة ويعيد استجابة بيانات منظمة.
للمراجعة
03 Postman أداة اختبار الواجهات Postman
أداة هندسية تتيح لمطور الواجهة الخلفية إرسال طلبات HTTP تجريبية وفحص استجابات JSON وأكواد الحالة دون الحاجة لوجود شاشة أمامية.
للمراجعة
04 Authentication (AuthN) المصادقة وإثبات الهوية (Authentication)
عملية التحقق من هوية المستخدم للإجابة عن سؤال «من أنت؟» عبر كلمة المرور أو رموز التحقق الثنائي.
للمراجعة
05 Authorization (AuthZ) الترخيص وتحديد الصلاحيات (Authorization)
عملية فحص صلاحيات المستخدم بعد إثبات هويته للإجابة عن سؤال «ماذا يُسمح لك بفعله؟» حسب دوره وملكيته للمورد.
للمراجعة
06 Role-Based Access Control (RBAC) التحكم في الوصول المبني على الأدوار (RBAC)
نموذج تنظيم الصلاحيات عبر إسناد أدوار محددة للمستخدمين (مثل طالب أو مدرب أو مدير) وربط العمليات المسموحة بكل دور.
للمراجعة
07 Stateful Server Session جلسة الخادم التفاعلية (Server Session)
آلية لتتبع تسجيل الدخول يحفظ فيها الخادم بيانات الجلسة لديه، ويسلّم المتصفح معرّف الجلسة داخل ملف Cookie محمي.
للمراجعة
08 JSON Web Token (JWT) رمز الويب الموقّع (JWT)
رمز رقمي مدمج وموقّع يصدره الخادم ويرسله التطبيق في رأس الرسالة مع كل طلب لإثبات الهوية دون حفظ جلسة في ذاكرة الخادم.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 REST REST
Representational State Transfer
النمط المعماري القياسي لبناء واجهات برمجة التطبيقات عبر بروتوكول HTTP.
للمراجعة
02 JWT JWT
JSON Web Token
معيار قياسي لتمرير بيانات الهوية الموقّعة رقمياً بين العميل والخادم بصيغة JSON.
للمراجعة
03 RBAC RBAC
Role-Based Access Control
تقييد الوصول والعمليات في النظام بناءً على الدور الوظيفي المسند لحساب المستخدم.
للمراجعة
04 MFA MFA
Multi-Factor Authentication
المصادقة متعددة العوامل التي تطلب من المستخدم تقديم وسيلتي إثبات أو أكثر عند تسجيل الدخول.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/3مهام منجزة
  1. اكتب أزواج طريقة HTTP ومسار الرابط الأربعة (GET وPOST وPUT وDELETE) لإدارة مورد الكتب (/api/books) مع تحديد كود الحالة المتوقع لكل عملية.

  2. تنقّل بين الحالات 2 و3 و4 في المحاكي التفاعلي، واشرح بأسلوبك لماذا أرجع الخادم كود 401 في الحالة الثانية بينما أرجع كود 403 في الحالة الثالثة.

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

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

10أسئلة 2أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي10 أسئلة تنتظرك
01

لماذا تبني الشركات الحديثة واجهة برمجة تطبيقات (API) موحدة في الخادم بدلاً من ربط الموقع وتطبيقات الهاتف بقاعدة البيانات مباشرة؟

02

في واجهات RESTful API القياسية، أي زوج من طريقة HTTP وكود الحالة يمثّل إنشاء سجل جديد في الخادم؟

03

كيف تساعد أداة مثل Postman مطور الواجهة الخلفية أثناء بناء المشروع؟

04

ما السؤال الجوهري الذي تجيب عنه عملية المصادقة (Authentication) داخل خادم الواجهة الخلفية؟

05

بعد أن يسجل المستخدم دخوله بنجاح، ما العملية التي تفحص هل دوره (طالب مقابل مدير) يسمح له بحذف دورة تدريبية؟

06

أرسل طالب مسجل الدخول فعلاً طلباً لحذف مورد مخصص لمديري النظام (Admin) فقط؛ فما كود حالة HTTP الصحيح الذي يعيده الخادم؟

07

كيف تحافظ جلسات الخادم التفاعلية (Stateful Server Sessions) على بقاء المستخدم مسجلاً للدخول عبر الطلبات المتتالية؟

08

في المصادقة عبر رموز JWT المحمولة، كيف يتأكد الخادم أن المستخدم لم يزوّر رقم حسابه أو يرقّي دوره داخل الرمز؟

09

صواب أم خطأ: لا يجوز أبداً وضع كلمات المرور أو الأسرار الحساسة داخل حمولة رمز JWT القياسي لأن بياناته مرمّزة بـ Base64Url ويمكن قراءتها لمن يحمل الرمز.

10

صواب أم خطأ: في أمان الواجهة الخلفية، تسبق المصادقة (Authentication) عملية الترخيص (Authorization) دائماً لأن الخادم يجب أن يعرف من أنت أولاً قبل فحص صلاحيات دورك.