في هذا الدرس 8تصفّح المواضيع
تعمل المصادقة القياسية في بروتوكول وفق المواصفة عبر دورة التحدي والاستجابة () في ثلاث خطوات متتابعة:
- 1. طلب أولي بدون بيانات اعتماد: يرسل العميل طلباً لمورد محمي (مثل ) دون إرفاق حقل الرأس .
- 2. تحدي الخادم ( مع ): يرد الخادم برمز الحالة مرفقاً بحقل التحدي ؛ حيث يحدد مخطط المصادقة المطلوب (مثل أو )، ويحدد المعامل اسم المنطقة المحمية.
- 3. استجابة العميل بحقل الرأس : يعيد العميل إرسال الطلب مرفقاً بحقل الرأس ، فيتحقق الخادم منه ويرجع الاستجابة .
تأمل المخطط المعماري الآتي الذي يوضح دورة التحدي والاستجابة وآلية ترميز المصادقة الأساسية:
تُعدّ المصادقة الأساسية () أبسط مخطط قياسي في بروتوكول ، وتعمل عبر ثلاث خطوات محددة:
- 1. دمج اسم المستخدم وكلمة المرور بنقطتين رأسيتين: يجمع العميل اسم المستخدم متبوعاً بنقطتين رأسيتين () ثم كلمة المرور في نص واحد بترميز ؛ مثل .
- 2. تحويل النص إلى ترميز : تُحوّل بايتات النص إلى حروف القياسية فتصبح .
- 3. الإرسال في حقل الرأس : تُرسل القيمة مسبوقة بكلمة ومسافة واحدة: .
# 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 دقيقة).
تأمل المخطط المعماري الآتي الذي يقارن بين مصادقة الرمز الحامل () ومصادقة الجلسات عبر الكوكيز:
GET /api/v1/projects HTTP/1.1
Host: api.closetag.com
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI0MiIsInNjb3BlIjoicmVhZDpwcm9qZWN0cyJ9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Accept: application/json
يتعامل المطورون عند ربط الخدمات البرمجية مع مصطلحين شائعين هما مفاتيح الواجهة البرمجية () ورموز الوصول ()، ولكل منهما غرض معماري محدد:
- 1. مفتاح الواجهة البرمجية ( — تعريف التطبيق أو الخادم وحساب الحصة): هو مفتاح طويل الأجل يُنشأ من لوحة تحكم الخدمة (ويُرسل غالباً في حقل مثل أو ) لتعريف المشروع أو الخادم المتصل، وحساب حصة الاستخدام () في الاتصالات بين الخوادم ().
- 2. رمز الوصول ( — تمثيل المستخدم النهائي وصلاحياته المؤقتة): هو رمز ديناميكي قصير العمر يُولد لحظياً بعد مصادقة مستخدم محدد، ويحمل وقت انتهاء صلاحية دقيقاً () ونطاق صلاحيات مخصصاً ().
# 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. إلزامية التشفير التام (): لا ترسل أبداً كلمات مرور أو حقول أو رموز أو مفاتيح عبر اتصال غير مشفر.
- 2. منع وضع المفاتيح والرموز داخل معاملات الرابط (): إرسال المفتاح في الرابط مثل يفضحه في سجل المتصفح، وسجلات خادم الويب ()، وحقل الرأس ! أرسل بيانات الاعتماد دائماً داخل حقل الرأس .
- 3. تجنب حفظ الرموز الحساسة في بالمتصفح: لأن أي كود جافاسكريبت في الصفحة يستطيع قراءة بالكامل؛ لذا اعتمد في المتصفح على كوكيز محمية بـ أو احفظ الرمز المؤقت في ذاكرة التشغيل فقط.
- 4. تقييد معدل المحاولات وقصر عمر الرموز (): احمِ نقاط تسجيل الدخول من التخمين المتكرر عبر تحديد سقف للمحاولات وإرجاع الرمز .
جرّب المختبر الأمني التفاعلي الآتي لمقارنة الممارسات الآمنة والخاطئة عند نقل بيانات الاعتماد:
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
أتقنت في هذا الدرس أساسيات المصادقة في بروتوكول HTTP، بما يشمل الفرق الجوهري بين المصادقة () والتفويض ()، وآلية التحدي والاستجابة عبر حقلي الرأس و، والمصادقة الأساسية () وحقيقة أن ترميز علني وليس تشفيراً، ومصادقة الرمز الحامل ()، والفرق بين مفاتيح ورموز الوصول، والمقارنة بين الجلسات والرموز، والقواعد الذهبية لتأمين بيانات الاعتماد. الخطوة التالية: انتقل الآن إلى الدرس التالي أمان HTTPS وتشفير TLS () لنكتشف كيف تحمي الشهادات الرقمية ومصافحة جميع رسائل وكوكيز ورموز عبر الشبكة!
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات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
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 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 المشفرة حصراً.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
شغّل الأمر curl -v -u admin:Secret123 https://httpbin.org/basic-auth/admin/Secret123 في الطرفية ولاحظ كيف يبني الأمر حقل الرأس Authorization: Basic تلقائياً.
-
فك ترميز النص "YWRtaW46U2VjcmV0MTIz" عبر الدالة atob("YWRtaW46U2VjcmV0MTIz") في طرفية المتصفح لتتأكد بنفسك أن Base64 ليس تشفيراً.
-
نفّذ الأمر curl -i -H "Authorization: Bearer my_test_token_942" https://httpbin.org/bearer وقارن استجابة النجاح 200 مع استجابة التحدي 401 عند حذف الرأس.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.