إذا كنت تعمل مع واجهات برمجة التطبيقات (APIs)، فمن المحتمل أنك تعرف ما هو رأس تفويض HTTP. إنه وسيلة لإرسال بيانات الاعتماد إلى خادم لتوثيق الطلب. وغالبًا ما يُستخدم للوصول إلى الموارد المحمية أو تنفيذ إجراءات تتطلب إذنًا.
لكن هل تعرف كيفية استخدامه بفاعلية وأمان؟ في هذه المدونة، سنوضح لك كيفية استخدام رأس تفويض HTTP كالمحترفين، باستخدام أداة تُدعى Apidog.
بنهاية هذه المدونة، سيكون لديك فهم أفضل لرأس تفويض HTTP وكيفية استخدامه بثقة. لنبدأ!
ما هو رأس تفويض HTTP؟
رأس تفويض HTTP هو جزء من بروتوكول HTTP الذي يتيح لك إرسال بيانات الاعتماد إلى خادم لتوثيق طلب. عادة ما يتم تنسيقه على النحو التالي:
Authorization: <type> <credentials>
يشير <type>
إلى نظام التفويض، مثل Basic وBearer وDigest، وما إلى ذلك. وتشمل <credentials>
البيانات الفعلية التي يحتاجها الخادم للتحقق من هويتك، مثل اسم المستخدم وكلمة المرور، أو رمز، أو تجزئة، وما إلى ذلك.
يُستخدم رأس تفويض HTTP غالبًا للوصول إلى الموارد المحمية أو تنفيذ إجراءات تتطلب إذنًا. على سبيل المثال، قد تحتاج إلى إرسال رأس تفويض HTTP لـ:
- الوصول إلى ملف تعريف أو بيانات مستخدم على منصة وسائط التواصل الاجتماعي
- تحميل أو تنزيل ملفات من خدمة تخزين سحابية
- إجراء دفعة أو معاملة على موقع التجارة الإلكترونية
- إدارة أو مراقبة خادم أو جهاز على شبكة
- والعديد من الأمور الأخرى
تُعتبر رأس تفويض HTTP وسيلة بسيطة ومرنة لتوثيق الطلبات، لكنها تأتي أيضًا مع بعض التحديات والمخاطر. تحتاج إلى اختيار نظام التفويض الصحيح لواجهة برمجة التطبيقات الخاصة بك، وتوليد وإرسال رأس تفويض HTTP بشكل صحيح، ومعالجة الأخطاء والردود من الخادم، وتأمين رأس تفويض HTTP من الهجمات، وتوثيق رأس تفويض HTTP للمطورين الآخرين.

كيفية اختيار نظام التفويض الصحيح لواجهة برمجة التطبيقات الخاصة بك
هناك العديد من أنظمة التفويض التي يمكنك استخدامها مع رأس تفويض HTTP، مثل Basic وBearer وDigest وOAuth، وما إلى ذلك. لكل نظام مزاياه وعيوبه الخاصة، ويجب عليك اختيار النظام الذي يناسب احتياجات واجهة برمجة التطبيقات الخاصة بك ومتطلبات الأمان. إليك بعض العوامل التي يجب أن تأخذها بعين الاعتبار عند اختيار نظام تفويض لواجهة برمجة التطبيقات الخاصة بك:
- التعقيد: بعض أنظمة التفويض أبسط وأسهل في التنفيذ من غيرها. على سبيل المثال، Basic وBearer مباشرة جدًا وتتطلب فقط رأسًا واحدًا، بينما OAuth وDigest أكثر تعقيدًا وتتطلب خطوات ورؤوس متعددة. يجب عليك اختيار نظام تفويض سهل الفهم والاستخدام لكل من أنت ومستهلكي واجهة برمجة التطبيقات الخاصة بك.
- الأمان: بعض أنظمة التفويض أكثر أمانًا وقوة من غيرها. على سبيل المثال، Basic وBearer عرضة للاعتراض وهجمات إعادة الاستخدام، بينما OAuth وDigest أكثر مقاومة لهذه التهديدات. يجب عليك اختيار نظام تفويض يوفر حماية كافية لبيانات ووظائف واجهة برمجة التطبيقات الخاصة بك.
- الأداء: بعض أنظمة التفويض أكثر كفاءة وسرعة من غيرها. على سبيل المثال، Basic وBearer بلا حالة ولا تتطلب أي طلبات إضافية أو استعلامات قاعدة بيانات، بينما OAuth وDigest لديها حالة وقد تتطلب عبءًا إضافيًا. يجب عليك اختيار نظام تفويض يقلل من زمن الاستجابة واستخدام نطاق التردد لواجهة برمجة التطبيقات الخاصة بك.
- التوحيد القياسي: بعض أنظمة التفويض أكثر اعتمادًا ودعمًا من غيرها. على سبيل المثال، Basic وBearer شائعتان جدًا ومتوافقتان مع معظم عملاء وخوادم HTTP، بينما OAuth وDigest أكثر خصوصية وقد تتطلب مكتبات أو أدوات خاصة. يجب عليك اختيار نظام تفويض سهل الدمج والصيانة لواجهة برمجة التطبيقات الخاصة بك.
لمساعدتك على اختيار نظام التفويض الصحيح لواجهة برمجة التطبيقات الخاصة بك، إليك جدول يوضح الميزات الرئيسية والاختلافات بين بعض أنظمة التفويض الشائعة:
النظام | التعقيد | الأمان | الأداء | التوحيد القياسي |
---|---|---|---|---|
Basic | منخفض | منخفض | عالي | عالي |
Bearer | منخفض | متوسط | عالي | عالي |
Digest | متوسط | متوسط | متوسط | متوسط |
OAuth | عالي | عالي | منخفض | متوسط |
بالطبع، هذا الجدول ليس شاملًا وقد تكون هناك أنظمة تفويض أخرى غير مدرجة هنا. يجب عليك دائمًا القيام ببحثك واختبارك الخاص قبل اختيار نظام تفويض لواجهة برمجة التطبيقات الخاصة بك.

كيفية استخدام رأس تفويض HTTP مع المصادقة الأساسية؟
المصادقة الأساسية هي واحدة من أبسط وأكثر أنواع رأس تفويض HTTP استخدامًا. تعمل عن طريق إرسال اسم المستخدم وكلمة المرور للطالب في نص عادي، مشفر باستخدام base64، إلى الخادم. يقوم الخادم بعد ذلك بفك تشفير بيانات الاعتماد ويتحقق مما إذا كانت تتطابق مع تلك المخزنة في قاعدة بياناته. إذا كانت متطابقة، يمنح الخادم الوصول إلى المورد المطلوب. إذا لم تكن كذلك، يرجع الخادم رسالة خطأ.
لاستخدام رأس تفويض HTTP مع المصادقة الأساسية، تحتاج إلى اتباع هذه الخطوات:
- قم بترميز اسم المستخدم وكلمة المرور باستخدام base64. يمكنك استخدام أي أداة أو مكتبة عبر الإنترنت للقيام بذلك. على سبيل المثال، إذا كان اسم المستخدم الخاص بك هو "alice" وكلمة المرور هي "secret"، فستكون السلسلة المشفرة باستخدام base64 "YWxpY2U6c2VjcmV0".
- أضف البادئة "Basic " للسلسلة المشفرة. هذا يشير إلى أنك تستخدم المصادقة الأساسية. على سبيل المثال، ستكون السلسلة النهائية "Basic YWxpY2U6c2VjcmV0".
- قم بتعيين قيمة رأس التفويض HTTP للسلسلة النهائية. على سبيل المثال، سيبدو رأس التفويض HTTP كالتالي:
Authorization: Basic YWxpY2U6c2VjcmV0
4. أرسل الطلب إلى الخادم. سيقوم الخادم بفك تشفير بيانات الاعتماد وتوثيق الطلب. على سبيل المثال، إذا كنت تستخدم curl، فسيكون الأمر كالتالي:
curl -H "Authorization: Basic YWxpY2U6c2VjcmV0" https://example.com/api
5. استلم الرد من الخادم. إذا كانت بيانات الاعتماد صحيحة، سيعود الخادم بالمورد المطلوب. إذا كانت بيانات الاعتماد غير صحيحة، سيرجع الخادم رسالة خطأ برمز الحالة 401 (غير مصرح به).
استخدام رأس تفويض HTTP مع المصادقة الأساسية بسيط وسهل، لكنه يحتوي أيضًا على بعض العيوب. العيب الرئيسي هو أن بيانات الاعتماد تُرسل في نص عادي، مما يعني أنه يمكن اعتراضها ومُسَاسها من قبل أي شخص يمكنه رؤية حركة مرور الشبكة.
لذا، يجب استخدام المصادقة الأساسية فقط عبر HTTPS، الذي يقوم بتشفير البيانات ومنع الاعتراض. عيب آخر هو أن المصادقة الأساسية لا تدعم أي شكل من أشكال إدارة الجلسات، مما يعني أنه يجب إرسال بيانات الاعتماد مع كل طلب، مما قد يكون غير فعال وغير آمن.
لذلك، ينبغي استخدام المصادقة الأساسية فقط للواجهات البرمجية البسيطة والبلا حالة، حيث تكون متطلبات الأمان منخفضة وتأثير الأداء ضئيلاً.

كيفية استخدام رأس تفويض HTTP مع رمز الحامل
رمز الحامل هو نوع آخر شائع من رأس تفويض HTTP. يعمل عن طريق إرسال رمز، وهو سلسلة من الأحرف تمثل هوية وامتيازات الطالب، إلى الخادم. ثم يتحقق الخادم من صحة الرمز ويتحقق مما إذا كان يمنح الوصول إلى المورد المطلوب. إذا كان كذلك، فإن الخادم يعود بالمورد. إذا لم يكن كذلك، يرجع الخادم رسالة خطأ.
لاستخدام رأس تفويض HTTP مع رمز الحامل، تحتاج إلى اتباع هذه الخطوات:
- احصل على رمز من الخادم أو خدمة طرف ثالث. يمكن أن يتم توليد الرمز والتحقق من صحته باستخدام طرق ومعايير مختلفة، مثل JSON Web Token (JWT)، الذي يمثل طريقة مستقلة وآمنة لتشفير والتحقق من المطالبات. لاكتساب رمز، عادة ما تحتاج لتقديم بعض بيانات الاعتماد، مثل اسم المستخدم وكلمة المرور، أو مفتاح API، إلى الخادم أو الخدمة. ثم سيعيد الخادم أو الخدمة رمزًا يحتوي على المعلومات والامتيازات الخاصة بالطالب. على سبيل المثال، إذا كنت تستخدم JWT، فسيبدو الرمز كالتالي:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhbGljZSIsIm5hbWUiOiJBbGljZSBCb2IiLCJyb2xlIjoiYWRtaW4iLCJleHAiOjE2MjEwMjQwMDB9.6y0jZt7xg8GxhXUq3TJrcQ4aR7fZ0v0t5DLGJ4Z5C8k
يتكون الرمز من ثلاثة أجزاء، مفصولة بنقاط: الرأس، الحمولة، والتوقيع. يحتوي الرأس على الخوارزمية ونوع الرمز. تحتوي الحمولة على المطالبات، التي هي المعلومات والامتيازات الخاصة بالطالب. التوقيع هو نتيجة تطبيق الخوارزمية على الرأس والحمولة، باستخدام مفتاح سري. يضمن التوقيع سلامة وأصالة الرمز.
2. أضف البادئة "Bearer " إلى الرمز. هذا يشير إلى أنك تستخدم توثيق رمز الحامل.
3. قم بتعيين قيمة رأس التفويض HTTP إلى السلسلة النهائية.
4. أرسل الطلب إلى الخادم. سيقوم الخادم بفك تشفير والتحقق من صحة الرمز وتوثيق الطلب.
5. استلم الرد من الخادم. إذا كان الرمز صحيحًا، سيعود الخادم بالمورد المطلوب. إذا كان الرمز غير صحيح، سيعود الخادم برسالة خطأ برمز الحالة 401 (غير مصرح به) أو 403 (محظور).

كيفية استخدام رأس تفويض HTTP مع المصادقة الملخصة
تعتبر المصادقة الملخصة نوعًا متقدمًا وأكثر أمانًا من رأس تفويض HTTP مقارنة بالمصادقة الأساسية. تعمل عن طريق إرسال تجزئة، وهي نتيجة تطبيق دالة رياضية على مجموعة من الأحرف، للبيانات الاعتمادية وبعض المعلومات الأخرى، مثل nonce وtimestamp، إلى الخادم. ثم يقوم الخادم بحساب نفس التجزئة باستخدام نفس المعلومات ومقارنتها بتلك التي أرسلها الطالب. إذا تطابقت، يمنح الخادم الوصول إلى المورد المطلوب. إذا لم تتطابق، يرجع الخادم رسالة خطأ.
لاستخدام رأس تفويض HTTP مع المصادقة الملخصة، تحتاج إلى اتباع هذه الخطوات:
- استقبل تحديًا من الخادم. التحدي هو رسالة تحتوي على بعض المعلومات التي يستخدمها الخادم للتحقق من بيانات الاعتماد، مثل nonce ومجال وqop. يتم إرسال التحدي من قبل الخادم عندما يحاول الطالب الوصول إلى مورد محمي دون توثيق، أو ببيانات اعتماد غير صالحة. يتم إرسال التحدي مع رمز الحالة 401 (غير مصرح به) ورأس يسمى WWW-Authenticate.
- احسب التجزئة للبيانات الاعتمادية والتحدي. تتم حساب التجزئة باستخدام دالة رياضية تسمى MD5، والتي تنتج رقمًا سداسي عشري مكونًا من 32 رقمًا من أي إدخال.
تتكون التجزئة من ثلاثة أجزاء: HA1 وHA2 والاستجابة. HA1 هو تجزئة اسم المستخدم، والمجال، وكلمة المرور. HA2 هو تجزئة طريقة HTTP وURI للطلب. الاستجابة هي تجزئة HA1 وnonce وعدد nonce وnonce العميل وqop وHA2. عدد nonce هو رقم يشير إلى عدد المرات التي تم استخدام nonce فيها. nonce العميل هو سلسلة عشوائية تم إنشاؤها بواسطة الطالب.
كيفية إرسال رأس تفويض HTTP باستخدام Apidog
بمجرد اختيار نظام تفويض لواجهة برمجة التطبيقات الخاصة بك، تحتاج إلى توليد وإرسال رأس تفويض HTTP مع طلباتك. يمكن القيام بذلك بسهولة باستخدام Apidog، وهي أداة قائمة على الويب تساعدك في اختبار وتصحيح وتوثيق واجهات برمجة التطبيقات الخاصة بك. تتيح لك Apidog:
- إنشاء وحفظ طلبات واجهة برمجة التطبيقات المتعددة مع معلمات ورؤوس وجسم مختلف
- إرسال واستقبال طلبات واستجابات واجهة برمجة التطبيقات في الوقت الحقيقي
- عرض وتحليل حالة استجابة واجهة برمجة التطبيقات ورؤوسها وجسمها
- التحقق من صحة وتنسيق جسم استجابة واجهة برمجة التطبيقات باستخدام JSON وXML وHTML، إلخ.
- إنشاء ومشاركة وثائق واجهة برمجة التطبيقات مع مطورين آخرين.
لاستخدام Apidog، تحتاج إلى اتباع هذه الخطوات:
- انقر على زر "طلب جديد".

2. اختر طريقة HTTP التي تريد استخدامها وأدخل عنوان URL لواجهة برمجة التطبيقات التي تريد الوصول إليها.

3. انقر على علامة التبويب "الرؤوس" وأضف رأس التفويض HTTP وAuth لتعديل نوع التفويض الخاص بك.


4. انقر على زر "إرسال" وتحقق من رمز حالة الاستجابة والرؤوس والجسم. إذا كان الرمز ساريًا، يجب أن يكون رمز الحالة 200 (حسنًا) ويجب أن يحتوي الجسم على المورد المطلوب. إذا كان الرمز غير صالح، يجب أن يكون رمز الحالة 401 (غير مصرح به) أو 403 (محظور) ويجب أن يحتوي الجسم على رسالة خطأ.

تحقق من رمز حالة الاستجابة والرؤوس والجسم. إذا كان الرمز ساريًا، يجب أن يكون رمز الحالة 200 (حسنًا) ويجب أن يحتوي الجسم على المورد المطلوب. إذا كان الرمز غير صالح، يجب أن يكون رمز الحالة 401 (غير مصرح به) أو 403 (محظور) ويجب أن يحتوي الجسم على رسالة خطأ.
كما ترى، تجعل Apidog من السهل جدًا ومريحًا توليد وإرسال رأس تفويض HTTP مع طلبات واجهة برمجة التطبيقات الخاصة بك. يمكنك أيضًا استخدام Apidog لاختبار وتصحيح جوانب أخرى من واجهة برمجة التطبيقات الخاصة بك، مثل المعلمات والرؤوس وجسم الطلبات والاستجابات.
كيفية التعامل مع الأخطاء والتحديات الشائعة مع رأس تفويض HTTP
عند استخدام رأس تفويض HTTP لتوثيق طلبات واجهة برمجة التطبيقات الخاصة بك، قد تواجه بعض الأخطاء والتحديات التي تحتاج إلى التعامل معها بشكل صحيح. بعض الأخطاء والتحديات الشائعة هي:
بيانات الاعتماد غير صحيحة أو مفقودة:
واحدة من أكثر الأخطاء شيوعًا مع رأس تفويض HTTP هي عندما تكون بيانات الاعتماد غير صحيحة أو مفقودة. يمكن أن يحدث هذا عندما يدخل المستخدم اسم مستخدم أو كلمة مرور خاطئة، أو إذا انتهى صلاحية الرمز أو تم إلغاؤه، أو إذا كانت التجزئة غير صحيحة أو تم العبث بها، أو إذا كان الرأس مشوهًا أو مفقودًا.
للتعامل مع هذا الخطأ، يجب دائمًا التحقق من رمز حالة الاستجابة ورأس WWW-Authenticate من الخادم.
إذا كان رمز الحالة 401 (غير مصرح به)، فهذا يعني أن الخادم يتطلب توثيقًا ويقدم تحديًا يشير إلى الأنظمة والمعلمات المدعومة. يجب عليك بعد ذلك مطالبة المستخدم ببيانات الاعتماد الصحيحة، أو الحصول على رمز جديد، وإعادة محاولة الطلب مع رأس التفويض المناسب.
إذا كان رمز الحالة 403 (محظور)، فهذا يعني أن الخادم يرفض بيانات الاعتماد أو الرمز، ولا يسمح بالوصول إلى المورد. يجب عليك بعد ذلك إبلاغ المستخدم بالسبب والإجراءات المحتملة، مثل الاتصال بالمسؤول أو طلب إذن جديد.
هجمات إعادة الاستخدام:
تحدي شائع آخر مع رأس تفويض HTTP هو عندما يتم إعادة استخدام بيانات الاعتماد أو الرمز من قبل مهاجم يعترض الطلب أو الاستجابة. يمكن أن يهدد ذلك الأمن وسلامة واجهة برمجة التطبيقات والبيانات. لمنع هذا التحدي، يجب عليك دائمًا استخدام HTTPS، الذي يقوم بتشفير البيانات ويمنع الاعتراض.
يجب أيضًا استخدام أنظمة تتضمن nonce، timestamp، وتوقيع، مثل المصادقة الملخصة وJWT، والتي تجعل بيانات الاعتماد أو الرمز فريدة وقابلة للتحقق. يجب عليك أيضًا استخدام أنظمة لها وقت انتهاء وآلية إلغاء، مثل OAuth 2.0، والتي تحد من صلاحية واستخدام بيانات الاعتماد أو الرمز.
الأداء وقابلية التوسع:
تحدٍ شائع آخر مع رأس تفويض HTTP هو عندما تؤثر عملية التوثيق على أداء وقابلية توسيع واجهة برمجة التطبيقات والخادم. يمكن أن يحدث هذا عندما يكون نظام التوثيق معقدًا ويتطلب عمليات حسابية ضخمة، مثل التجزئة، التشفير، والتوقيع، أو عندما تتطلب التوثيق طلبات واستجابات متعددة، مثل الحصول على الرموز وتجديدها.
للتغلب على هذا التحدي، يجب عليك دائمًا اختيار نظام التوثيق الصحيح لواجهة برمجة التطبيقات الخاصة بك، بناءً على متطلبات الأمان، الوظائف، وتجربة المستخدم. يجب عليك أيضًا تحسين عملية التوثيق، مثل تخزين بيانات الاعتماد أو الرمز في الذاكرة المؤقتة، واستخدام خوارزميات ومكتبات فعالة، وتقليل الأعباء الشبكية.
التوثيق والتواصل:
تحدٍ شائع آخر مع رأس تفويض HTTP هو عندما لا يتم توثيق نظام التوثيق بشكل جيد ولا يتم التواصل مع المستخدمين ومطوري واجهة برمجة التطبيقات. هذا يمكن أن يؤدي إلى الارتباك والأخطاء والإحباط.
لتجنب هذا التحدي، يجب عليك دائمًا توثيق والتواصل حول نظام التوثيق لواجهة برمجة التطبيقات الخاصة بك، مثل النوع، التنسيق، المعلمات، الأخطاء، وأمثلة على رأس التفويض.
الخاتمة
يعتبر رأس تفويض HTTP وسيلة قوية ومرنة لتأمين واجهات برمجة التطبيقات الخاصة بك وتوفير التوثيق والتفويض لعملائك. من خلال اتباع أفضل الممارسات والنصائح التي نوقشت في هذه المقالة، يمكنك ضمان أن واجهات برمجة التطبيقات الخاصة بك قوية وموثوقة ومتوافقة مع المعايير والمواصفات.
يمكنك أيضًا استخدام أدوات وإطارات عمل متنوعة، مثل Apidog، لتصميم وتصحيح وتطوير، وتخيل، واختبار واجهات برمجة التطبيقات الخاصة بك باستخدام رأس تفويض HTTP. تساعدك Apidog في ربط دورة حياة واجهة برمجة التطبيقات بالكامل وتنفيذ أفضل الممارسات للتطوير القائم على تصميم واجهة برمجة التطبيقات.