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

أساسيات المصادقة في HTTPHTTP Authentication Basics

أتقن أساسيات المصادقة في بروتوكول HTTP: الفرق بين المصادقة (401) والتفويض (403)، وآلية التحدي والاستجابة عبر WWW-Authenticate وAuthorization، والمصادقة الأساسية وحقيقة ترميز Base64، والرموز الحاملة (Bearer Tokens / JWT)، وقواعد تأمين بيانات الاعتماد.
أقسام الدرس
8
الأمثلة
4
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
15
محتوى الدرس
في هذا الدرس 8تصفّح المواضيع

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

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

المصطلح بالعربية المصطلح بالإنجليزية النطق التقني المعنى الهندسي المبسط
المصادقة (إثبات الهوية) أوثنتيكيشن التحقق من هوية المستخدم أو التطبيق للإجابة عن سؤال: مَن أنت؟ (ويقابله عند الفشل الرمز 401).
التفويض (منح الصلاحية) أوثورايزيشن التحقق مما إذا كان المستخدم المصادق عليه يملك صلاحية تنفيذ الإجراء المطلوب (ويقابله عند المنع الرمز 403).
تحدي المصادقة دبليو دبليو دبليو أوثنتيكيت حقل في رأس استجابة 401 يحدد نوع المصادقة المطلوبة (مثل Basic أو Bearer) والنطاق المحمي (realm).
حقل إرسال الاعتماد أوثورايزيشن هيدر حقل في رأس الطلب يرسله العميل حاملاً نوع المصادقة وبيانات الاعتماد (مثل Basic أو Bearer token).
ترميز Base64 بيس 64 إنكودينج تحويل البيانات الثنائية والنصية إلى 64 حرفاً قياسياً لأغراض النقل الآمن عبر البروتوكول، وهو ترميز علني قابل للعكس وليس تشفيراً.
الرمز الحامل بيرر توكن رمز أمني يمنح حامله حق الوصول للموارد المحمية عبر الحقل Authorization: Bearer

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

  • 1. المصادقة ( — الإجابة عن سؤال: «مَن أنت؟»): هي عملية التحقق من الهوية عبر بيانات اعتماد كاسم المستخدم وكلمة المرور أو رمز الوصول. وعندما يرسل العميل طلباً بدون إثبات هوية صالح، يرد الخادم برمز الحالة (والذي يعني تقنياً في بروتوكول : غير مصادق عليه) مرفقاً بحقل الرأس .
  • 2. التفويض ( — الإجابة عن سؤال: «ماذا يُسمح لك أن تفعل؟»): هي عملية فحص صلاحيات المستخدم بعد التحقق من هويته (كمنع حساب طالب عادي من فتح لوحة تحكم المشرف العام). وعندما يعرف الخادم هويتك بنجاح لكن صلاحياتك لا تسمح بالوصول، يرد برمز الحالة .
Shell
# 1. Missing or invalid identity -> 401 Unauthorized (AuthN failure)
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realm="CloseTag API"

# 2. Valid identity, but insufficient role permissions -> 403 Forbidden (AuthZ failure)
HTTP/1.1 403 Forbidden
Content-Type: application/problem+json

تعمل المصادقة القياسية في بروتوكول وفق المواصفة عبر دورة التحدي والاستجابة () في ثلاث خطوات متتابعة:

  1. 1. طلب أولي بدون بيانات اعتماد: يرسل العميل طلباً لمورد محمي (مثل ) دون إرفاق حقل الرأس .
  2. 2. تحدي الخادم ( مع ): يرد الخادم برمز الحالة مرفقاً بحقل التحدي ؛ حيث يحدد مخطط المصادقة المطلوب (مثل أو )، ويحدد المعامل اسم المنطقة المحمية.
  3. 3. استجابة العميل بحقل الرأس : يعيد العميل إرسال الطلب مرفقاً بحقل الرأس ، فيتحقق الخادم منه ويرجع الاستجابة .

تأمل المخطط المعماري الآتي الذي يوضح دورة التحدي والاستجابة وآلية ترميز المصادقة الأساسية:

مخطط يوضح آلية التحدي والاستجابة في مصادقة HTTP (رموز 401 وحقول WWW-Authenticate وAuthorization) والفرق بين ترميز Base64 والتشفير

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

  1. 1. دمج اسم المستخدم وكلمة المرور بنقطتين رأسيتين: يجمع العميل اسم المستخدم متبوعاً بنقطتين رأسيتين () ثم كلمة المرور في نص واحد بترميز ؛ مثل .
  2. 2. تحويل النص إلى ترميز : تُحوّل بايتات النص إلى حروف القياسية فتصبح .
  3. 3. الإرسال في حقل الرأس : تُرسل القيمة مسبوقة بكلمة ومسافة واحدة: .
Shell
# curl -u admin:Secret123 automatically builds the Basic Authorization header:
curl -i -u admin:Secret123 https://api.closetag.com/v1/StagingStatus

GET /v1/StagingStatus HTTP/1.1
Host: api.closetag.com
Authorization: Basic YWRtaW46U2VjcmV0MTIz

من أخطر المفاهيم الخاطئة لدى المبتدئين رؤية السلسلة النصية والاعتقاد بأنها «مشفرة». والحقيقة الهندسية الحاسمة هي أن هو نظام ترميز علني () وليس تشفيراً () إطلاقاً!

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

جرّب المحاكي التفاعلي الآتي لاختبار دورة التحدي والاستجابة، وفك ترميز ، والفرق بين الرمزين و:

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

  • لماذا سُمّي «الرمز الحامل» ()؟ تشبه كلمة عبارة «لحامله» على الشيكات المصرفية أو تذاكر الدخول؛ أي أن مجرّد حيازة هذا الرمز وتقديمه في حقل الرأس يمنح حامله صلاحية الوصول.
  • الرموز العشوائية الغامضة مقابل رموز الموقعة: قد يكون رمز سلسلة عشوائية تُفحص في قاعدة بيانات الخادم ()، أو رمز ويب مهيكل وموقع رقمياً () يتكون من ثلاثة أجزاء مفصولة بنقاط ().
  • عمر صلاحية قصير (): لتقليل المخاطر في حال تسرب الرمز، تُصدر رموز الوصول () بمدة صلاحية قصيرة جداً (مثل 5 إلى 15 دقيقة).

تأمل المخطط المعماري الآتي الذي يقارن بين مصادقة الرمز الحامل () ومصادقة الجلسات عبر الكوكيز:

مخطط يقارن بين مصادقة الرمز الحامل Bearer Token للواجهات البرمجية ومصادقة الجلسات عبر الكوكيز لتطبيقات المتصفح
Shell
GET /api/v1/projects HTTP/1.1
Host: api.closetag.com
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI0MiIsInNjb3BlIjoicmVhZDpwcm9qZWN0cyJ9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Accept: application/json

يتعامل المطورون عند ربط الخدمات البرمجية مع مصطلحين شائعين هما مفاتيح الواجهة البرمجية () ورموز الوصول ()، ولكل منهما غرض معماري محدد:

  • 1. مفتاح الواجهة البرمجية ( — تعريف التطبيق أو الخادم وحساب الحصة): هو مفتاح طويل الأجل يُنشأ من لوحة تحكم الخدمة (ويُرسل غالباً في حقل مثل أو ) لتعريف المشروع أو الخادم المتصل، وحساب حصة الاستخدام () في الاتصالات بين الخوادم ().
  • 2. رمز الوصول ( — تمثيل المستخدم النهائي وصلاحياته المؤقتة): هو رمز ديناميكي قصير العمر يُولد لحظياً بعد مصادقة مستخدم محدد، ويحمل وقت انتهاء صلاحية دقيقاً () ونطاق صلاحيات مخصصاً ().
Shell
# Server-to-Server request using a custom X-API-Key header:
GET /v1/weather?city=Riyadh HTTP/1.1
Host: api.weather.example
X-API-Key: wk_live_4891a2b3c4d5e6f7
Accept: application/json

عند تصميم معمارية نظام جديد، متى تختار مصادقة الجلسات بالكوكيز (التي درسناها في الدرس السابق) ومتى تختار مصادقة الرموز الحاملة في حقل الرأس؟ يوضح الجدول الآتي المقارنة الهندسية الحاسمة:

المعيار المعماري مصادقة الجلسات (Session Cookies) مصادقة الرموز (Bearer Tokens)
حقل النقل في HTTP تلقائياً عبر حقلي Set-Cookie وCookie. برمجياً عبر حقل الرأس Authorization: Bearer.
البيئة الأنسب للاستخدام تطبيقات الويب في المتصفح وتطبيقات الصفحة الواحدة لنفس النطاق. تطبيقات الهواتف الذكية، وأدوات سطر الأوامر، والواجهات العابرة للنطاقات.
الحماية من سرقة XSS عالية جداً مع تفعيل HttpOnly (لا يقرؤها كود JS). معرضة للخطر إذا خُزنت في localStorage داخل المتصفح.
التعرض لهجمات CSRF تتطلب تفعيل SameSite ورموز CSRF لأن المتصفح يرسل الكوكي تلقائياً. محصنة طبيعياً ضد CSRF لأن المتصفح لا يرفق حقل Authorization تلقائياً.
الإبطال الفوري عن بُعد فوري ولحظي بحذف السجل من ذاكرة الخادم (Redis). رموز JWT عديمة الحالة تبقى صالحة حتى انتهاء وقتها ما لم تُفحص بقائمة حظر.

التزم دائماً بهذه القواعد الذهبية الأربع عند تصميم أو فحص أنظمة المصادقة عبر بروتوكول :

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

جرّب المختبر الأمني التفاعلي الآتي لمقارنة الممارسات الآمنة والخاطئة عند نقل بيانات الاعتماد:

خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

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

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

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

مشاركة

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

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

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

المصطلحات12

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

0 / 12 مفهومةأول بطاقة، أول خطوة
01 Authentication (AuthN) المصادقة وإثبات الهوية (Authentication)
عملية التحقق من هوية المستخدم أو التطبيق المتصل، وعند غيابها أو فشلها يرجع الخادم رمز الحالة 401.
للمراجعة
02 Authorization (AuthZ) التفويض ومنح الصلاحيات (Authorization)
عملية التحقق مما إذا كان المستخدم المصادق عليه يملك صلاحية الوصول للمورد المطلوب، وعند المنع يرجع الخادم الرمز 403.
للمراجعة
03 WWW-Authenticate Header حقل تحدي المصادقة (WWW-Authenticate)
حقل في رأس الاستجابة يرسله الخادم مع رمز الحالة 401 لتحديد مخطط المصادقة المطلوب والنطاق المحمي (realm).
للمراجعة
04 Authorization Request Header حقل إرسال بيانات الاعتماد (Authorization)
حقل قياسي في رأس الطلب يرسله العميل لتقديم إثبات هويته متضمناً اسم مخطط المصادقة متبوعاً ببيانات الاعتماد أو الرمز.
للمراجعة
05 HTTP Basic Authentication المصادقة الأساسية (HTTP Basic Auth)
مخطط مصادقة قياسي يرسل اسم المستخدم وكلمة المرور مدمجين بنقطتين رأسيتين ومرمزين بصيغة Base64 داخل حقل Authorization.
للمراجعة
06 Base64 Encoding ترميز Base64 القياسي
صيغة لتحويل البايتات إلى حروف نصية قياسية لأغراض النقل؛ وهي ترميز علني قابل للعكس الفوري وليست تشفيراً.
للمراجعة
07 Bearer Token Authentication مصادقة الرمز الحامل (Bearer Token)
مخطط مصادقة قياسي يقدم فيه العميل رمز وصول أمنياً عبر حقل الرأس Authorization: Bearer للوصول للموارد المحمية.
للمراجعة
08 JSON Web Token (JWT) رمز الويب بصيغة JSON (JWT)
رمز مدمج موقع رقمياً يتكون من ثلاثة أجزاء مفصولة بنقاط (الرأس والحمولة والتوقيع) ويُستخدم بكثرة كرمز Bearer.
للمراجعة
09 API Key مفتاح الواجهة البرمجية (API Key)
مفتاح سري يُمنح للتطبيق أو الخادم المتصل لتعريف المشروع وحساب حصة الاستخدام وتطبيق حدود المعدل.
للمراجعة
10 Protection Space (Realm) النطاق المحمي (Authentication Realm)
معامل نصي داخل حقل الرأس WWW-Authenticate يصف اسم المنطقة المحمية التي يطلب الخادم بيانات الاعتماد لدخولها.
للمراجعة
11 401 Unauthorized vs 403 Forbidden الفرق بين الرمزين 401 و403
يشير الرمز 401 إلى غياب أو خطأ إثبات الهوية (المصادقة)، بينما يشير الرمز 403 إلى عدم كفاية الصلاحيات رغم ثبوت الهوية (التفويض).
للمراجعة
12 407 Proxy Authentication Required مصادقة الخادم الوسيط (407 Proxy Auth)
رمز الحالة الذي يرجعه الخادم الوسيط (Proxy) عندما يشترط مصادقة العميل عبر حقلي Proxy-Authenticate وProxy-Authorization.
للمراجعة

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

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

الاختصارات5

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

0 / 5 مفهومةأول بطاقة، أول خطوة
01 AuthN AuthN
Authentication
اختصار هندسي لمفهوم المصادقة والتحقق من الهوية (مَن أنت؟).
للمراجعة
02 AuthZ AuthZ
Authorization
اختصار هندسي لمفهوم التفويض وفحص الصلاحيات الممنوحة للهوية.
للمراجعة
03 JWT JWT
JSON Web Token
معيار قياسي مفتوح (RFC 7519) لتمثيل بيانات الاعتماد الموقعة رقمياً بصيغة JSON مدمجة.
للمراجعة
04 OAuth OAuth
Open Authorization Framework (OAuth 2.0)
إطار العمل القياسي العالمي للتفويض وإصدار رموز الوصول المحددة الصلاحيات (Bearer Access Tokens).
للمراجعة
05 HSTS HSTS
HTTP Strict Transport Security
سياسة أمان النقل الصارم التي تلزم المتصفح بالتواصل مع الخادم عبر اتصالات HTTPS المشفرة حصراً.
للمراجعة

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

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

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

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

0/3مهام منجزة
  1. شغّل الأمر curl -v -u admin:Secret123 https://httpbin.org/basic-auth/admin/Secret123 في الطرفية ولاحظ كيف يبني الأمر حقل الرأس Authorization: Basic تلقائياً.

  2. فك ترميز النص "YWRtaW46U2VjcmV0MTIz" عبر الدالة atob("YWRtaW46U2VjcmV0MTIz") في طرفية المتصفح لتتأكد بنفسك أن Base64 ليس تشفيراً.

  3. نفّذ الأمر curl -i -H "Authorization: Bearer my_test_token_942" https://httpbin.org/bearer وقارن استجابة النجاح 200 مع استجابة التحدي 401 عند حذف الرأس.

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

مساحة التحدي

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

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

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

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

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

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

ما الفرق الهندسي الدقيق بين رمز الحالة 401 Unauthorized ورمز الحالة 403 Forbidden في بروتوكول HTTP؟

02

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

03

أيّ رمز حالة وحقل رأس يُستخدمان عندما يطلب الخادم الوسيط (Forward Proxy) مصادقة العميل بدلاً من الخادم النهائي؟

04

كيف يصيغ عميل HTTP قيمة الاعتماد في مخطط المصادقة الأساسية (HTTP Basic Authentication)؟

05

لماذا يُعدّ إرسال المصادقة الأساسية (Basic Auth) عبر اتصال HTTP غير مشفر (http://) ثغرة أمنية خطيرة؟

06

ما الصيغة القياسية الصحيحة لإرسال رمز حامل (Bearer Token) داخل رأس طلب HTTP وفق المواصفة RFC 6750؟

07

لماذا يُحظر وضع كلمات مرور أو بيانات سرية حساسة داخل حمولة (Payload) رمز JWT الموقع قياسياً؟

08

ما الفرق المعماري الأساسي بين مفتاح الواجهة البرمجية الثابت (API Key) ورمز الوصول الديناميكي (Bearer Access Token)؟

09

لماذا تتمتع مصادقة الرموز عبر حقل الرأس (Authorization: Bearer) بحصانة طبيعية ضد هجمات تزوير الطلبات (CSRF) مقارنةً بمصادقة الكوكيز؟

10

أيّ آلية مصادقة تتيح الإبطال الفوري واللحظي من جهة الخادم بخطوة واحدة دون انتظار انتهاء وقت الرمز أو بناء قائمة حظر؟

11

لماذا يُحظر تماماً تمرير مفاتيح API أو رموز Bearer داخل معاملات الرابط URL (مثل GET /api/orders?token=secret123)؟

12

كيف تتعامل الخوادم الوسيطة وشبكات CDN المخبأة افتراضياً مع طلبات HTTP التي تحتوي على حقل الرأس "Authorization" وفق المواصفة RFC 9111؟