في الاقتصاد القائم على تكنولوجيا المعلومات اليوم ، أصبحت واجهات برمجة تطبيقات الويب مستخدمة بشكل متزايد من قبل جميع أنحاء العالم. ربما تكون قد استهلكت أو أنشأت واجهات برمجة التطبيقات بنفسك. تتعامل واجهات برمجة التطبيقات مع كميات هائلة من البيانات – أحد الاهتمامات الأساسية التي تبحث عنها مؤسسة خدمات البرمجيات على وجه التحديد لتأمين هذه البيانات. الفكرة هي أن البيانات يجب أن تكون مستقرة وآمنة ويمكن الوصول إليها من قبل المستخدمين المقصودين فقط. الوقت والسرعة والأداء مهمة أيضا لواجهات برمجة التطبيقات. هنا في هذه المقالة ، سنناقش طرق مصادقة وترخيص API المختلفة التي تستخدمها مؤسسات تكنولوجيا المعلومات على نطاق واسع في جميع أنحاء العالم.
المصادقة مقابل التفويض
إذا سبق لك العمل على واجهة برمجة تطبيقات ، فسترى دائما رؤوس التفويض فقط ، وليس رؤوس المصادقة. هل تساءلت يوما لماذا؟ ما عليك سوى استخدام أي أداة استنشاق للشبكة مثل Fiddler / Wireshark ، أو استخدام أدوات اختبار واجهة برمجة التطبيقات والتحقق من واجهة برمجة تطبيقات التطبيق الخاص بك. سواء رأيت رؤوس واجهة برمجة التطبيقات أو نصها، سيجد طلب واجهة برمجة التطبيقات دائما التفويض. لذا ، قبل أن نوضح سبب امتلاك واجهات برمجة التطبيقات للتفويض فقط وليس المصادقة ، دعنا أولا نوضح الفرق بين المصادقة والتخويل.
المصادقه
المصادقة ليست سوى التحقق من صحة المستخدم إذا كان الشخص المناسب لاستخدام هذه الخدمة. دعنا نوضح ذلك بمثال بسيط. لنفترض أنك تزور مطعما في مدينتك مع عائلتك. تفتح باب المطعم ويرحب بك المدير. لكنك لا تريد الجلوس في مكان عام لتناول الطعام في المطعم ، فأنت تريد الجلوس في غرفة خاصة مع العائلة ويجب أن يكون لديك حجز لذلك. يمكنك إخبار المدير ويؤكد أن لديك حجزا ، مما يسمح لك بالجلوس في القسم الخاص بالمطعم المخصص للعائلات. لذلك ، هذا ما نسميه بالمصادقة. لقد سمح لك مدير المطعم بالجلوس مع عائلتك في مكان خاص مع حجز صالح. يمكننا القول أن الحجز يسمى مفتاح المصادقة.
إذن
الآن ، يسمح لك بالدخول إلى الغرفة الخاصة ويمكنك استخدام الخدمات المحجوزة لرواد المطعم الخاصين ، وما إلى ذلك. أنت مخول للقيام بكل هذا ، ولكن إذا ذهبت إلى مطبخ المطعم وفتحت ثلاجته ، فقد يخبرك أنه غير مسموح لك في هذه المنطقة. وهذا ما يسمى التفويض. لذلك يسمح لك بالدخول ، ولكن بعد دخول المطعم ، لا يسمح لك بالذهاب إلى بعض المناطق وغير مصرح لك بالوصول إلى منطقة أخرى. إذن هذا هو التفويض.
الآن عندما يتعلق الأمر بموقع ويب ، يمكن لأي شخص الدخول إلى صفحة تسجيل الدخول إلى موقع ويب عام. تماما مثل أي شخص يمكنه الدخول إلى مطعم. لا أحد سيوقفك. عند تسجيل الدخول باستخدام اسم المستخدم وكلمة المرور لموقع الويب الخاص بك ، تتم مصادقتك ويمكنك الدخول إلى موقع الويب. بنفس الطريقة التي وصلت بها إلى طاولة خاصة محجوزة في مطعم باستخدام الحجز. ولكن بعد الدخول ، وبعد المصادقة ، يمكنك الوصول إلى بعض الأقسام ، ولكن قد لا تتمكن من الوصول إلى بعض الأقسام الأخرى التي تشبه أقسام المسؤول في موقع الويب. لذلك هذا فرق أساسي جدا بين المصادقة والتخويل.
والآن، نعود إلى السؤال. نرى دائما تفويضا في واجهة برمجة التطبيقات ، لماذا هو كذلك؟ إذا نظرت إلى واجهة برمجة التطبيقات ، فإنها تشير إلى نقطة نهاية حيث يعالج ذلك وظيفة أو موردا معينا في التطبيق. يمكننا القول ، على سبيل المثال ، وحدة نمطية في النهاية الخلفية للتطبيق. عندما تحاول بالفعل الوصول إلى مورد معين بمفرده في التطبيق ، فمن الأنسب أن تسميه تفويضا لك ، على الرغم من أنه ستكون هناك مصادقة للتحقق من هويتك. الخطوة الأولى هي دائما المصادقة.
أنواع مصادقات HTTP
نظرا لأننا غطينا الفرق بين المصادقة والتخويل ، فسنناقش الآن أنواعا مختلفة من مصادقة واجهة برمجة التطبيقات. تتنوع طرق مصادقة واجهة برمجة التطبيقات بناء على التقنية التي يستخدمونها. تعتبر المصادقة مهمة جدا لأنها مرتبطة مباشرة بأمان نظامك. هذا هو السبب في أن الأولوية تذهب دائما إلى مصادقة HTTP في أي نظام.
سنسلط الضوء على خمس آليات رئيسية لإضافة الأمان إلى واجهة برمجة التطبيقات – Basic و API Key و Bearer و OAuth1.0 / OAuth 2.0 و OpenID connect. سنحدد ما يفعلونه ، وكيف يعملون ، ومزايا وعيوب كل نهج. أخيرا ، سنعرض اختبار الحمل لواجهة برمجة التطبيقات التي تتطلب المصادقة باستخدام LoadView.
المصادقة الأساسية
نادرا ما تستخدم صناعة تكنولوجيا المعلومات مصادقة HTTP الأساسية في الوقت الحاضر ، لأنه من السهل جدا اختراقها ، ولكن هذه هي أسهل طريقة للتنفيذ. سترسل واجهات برمجة التطبيقات اسم مستخدم وكلمة مرور على طول الجسم. سيتم ترميز بيانات الاعتماد بطريقة التشفير مثل Base64 ؛ سيؤدي هذا إلى تحويل اسم المستخدم وكلمة المرور إلى تنسيق مشفر للإرسال.
نظرا لأنه يستخدم الرأس لنقل بيانات الاعتماد ، فلا توجد تدابير أمنية معقدة أخرى. ولا حتى معرفات الجلسة أو ملفات تعريف الارتباط.
مثال على المصادقة الأساسية في رأس طلب:
التفويض: أساسي Cg4sOnOlY8KyPQ ==
مصادقة الملخص
تعد مصادقة الوصول إلى الملخص أكثر تعقيدا وتقدما من المصادقة الأساسية. يستخدم الملخص مزيجا من كلمة مرور المستخدم والسمات الأخرى لإنشاء تجزئة MD5. سيتم بعد ذلك إرسال هذا إلى الخادم للمصادقة. إنها أكثر تقدما من آلية الأمان الأخرى لأنها ترسل بيانات الاعتماد كتجزئة. تم إنشاؤه في الأصل كجزء من RFC 2069 ، وأضيفت تحسينات الأمان لاحقا في RFC 2617.
في مصادقة الملخص ، يكون الخادم هو الذي يكتشف العميل الذي يحاول الوصول إلى المورد. سيقوم الخادم بإنشاء قيمة فريدة ، يشار إليها باسم “nonce”. في وقت لاحق ، سيتم استخدام هذه القيمة الفريدة بواسطة طالب المورد لإنشاء تجزئة MD5 ، والتي سيتم التحقق منها بواسطة الخادم.
مفاتيح واجهة برمجة التطبيقات
تستخدم مفاتيح API على نطاق واسع مقارنة بالمصادقة الأساسية في الوقت الحاضر. يمكنك رؤيته في تطبيقات الهاتف المحمول ، وكذلك تطبيقات الويب. تم إنشاء مفاتيح API إلى حد ما لحل الثغرات الأمنية المرتبطة بآلية API الأساسية. في مفتاح واجهة برمجة التطبيقات، يتم إنشاء قيمة فريدة في جانب الخادم بمجرد المصادقة باستخدام اسم المستخدم وكلمة المرور. سيتم تعيينه للمستخدم. عادة ، يتم إنشاء هذه القيمة الفريدة بناء على عنوان IP وسمات المستخدم المختلفة. في معظم الأحيان ، سيرسل المطورون مفتاح واجهة برمجة التطبيقات في رأس التفويض.
مثال على مفتاح واجهة برمجة التطبيقات
api_key: d670d200234faf5480aa11529b01d732
هناك بالتأكيد الكثير من مزايا استخدام مفتاح API ، مقارنة بجميع آليات الأمان الأخرى. قبل كل شيء ، مفاتيح API بسيطة مع أمان أفضل. العيب هو أنه يمكن لأي شخص التقاط مفتاح الأمان هذا باستخدام أي من أدوات استنشاق الشبكات. يمكن أن يؤدي هذا إلى مشكلات أمنية للتطبيق بأكمله.
حامل
الحامل يعني “شخص أو شيء يحمل أو يحمل شيئا”. كما يوحي الاسم ، إنه نظام مصادقة HTTP يتضمن رموز الأمان. سيحصل حامل رمز الأمان على حق الوصول إلى وظائف أو عناوين URL معينة. عادة ما يتم إنشاء الرمز المميز للحامل بواسطة الخادم استجابة لطلب تسجيل دخول العميل. بمجرد حصول المستخدم على الرمز المميز للحامل من الخادم ، يجب عليه إرسال الرمز المميز مع رأس التفويض عند تقديم طلبات أخرى.
مثال على مصادقة الحامل
إذن:
Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiNmUyZTU0NjUtNTRjZi00ZTU2LTk2NDEtNDU4Njg0YjVjNWQyIiwiZXhwIjoxNTkzOTY3ODQ0LCJpc3MiOiJodHRwOlxcd3d3LnNvdWxib29rLm1lIiwiYXVkIjoiaHR0cDpcXHd3dy5zb3VsYm9vay5tZSJ9.adcAYn8U5tn68EVGUGPLYBKcGC8Ohgxm7p45tDnpXVc
تم إنشاؤه في الأصل كجزء من OAuth2.0 في RFC-6750. هناك بالتأكيد الكثير من المزايا لاستخدام الرموز المميزة لحاملها مقارنة بجميع آليات الأمان الأخرى. الرموز المميزة لحاملها أفضل من حيث الأمان.
OAuth 1.0 وOAuth 2.0
OAuth هو بروتوكول أكثر أمانا للتفويض. يوفر OAuth البساطة مع توفير تدفق التخويل للتطبيقات. يستخدم المستخدمون OAuth بشكل عام لتسجيل الدخول إلى مواقع الويب التابعة لجهات خارجية باستخدام حسابات Google و Microsoft و Facebook و Slack الخاصة بهم ، على سبيل المثال ، دون الكشف عن بيانات الاعتماد الخاصة بهم.
يشتبه في وجود ثغرات أمنية في OAuth 1.0 ولم يعد مدعوما. يتميز OAuth 2.0 بميزات أمان متقدمة وهو الأفضل لتحديد حساب المستخدم الشخصي والمصادقة. يسمح OAuth 2.0 للمستخدمين بمشاركة سماتهم المحددة مع أحد التطبيقات ، مع الحفاظ على سرية بيانات الاعتماد والمعلومات الأخرى الخاصة بهم. كان OAuth 1.0 أكثر تعقيدا وأقل أمانا من OAuth 2.0. أكبر تغيير في OAuth2.0 هو أنه ليست هناك حاجة لتوقيع كل مكالمة باستخدام تجزئة ذات مفتاح.
في الأساس ، يتكون OAuth من رمزين مميزين للقيام بالتحقق. رمز مصادقة ورمز مميز للجلسة. تعمل رموز المصادقة مثل بروتوكولات أمان مفتاح API ، حيث يقوم التطبيق بالمصادقة للوصول إلى بيانات المستخدم. يتم استخدام الرموز المميزة للجلسة للحفاظ على جلسة عمل المستخدم واسترداد رمز مصادقة جديد في حالة انتهاء صلاحية الرمز المميز للجلسة. يجمع OAuth 2.0 بين المصادقة والتخويل للسماح بمزيد من الأمان للتطبيق.
في OAuth، سيصل المستخدم إلى التطبيق باستخدام بيانات الاعتماد. سيطلب التطبيق بعد ذلك رمزا مميزا للمصادقة. سيرسل مقدم الطلب هذا الطلب إلى خادم مصادقة ، مما سيسمح بهذه المصادقة إذا كانت بيانات الاعتماد صحيحة. يمكن التحقق من رمز المصادقة هذا في أي وقت، بشكل مستقل عن المستخدم. هذا سيجعل OAuth آلية أكثر أمانا من مصادقات HTTP الأخرى. أحد العيوب الرئيسية ل OAuth هو تعقيد التنفيذ. يجب أن يكون لديك معرفة جيدة في تدفق OAuth لدمجه مع التطبيق الخاص بك.
أوبن إند كونكت
يعد OpenID Connect امتدادا لبروتوكول OAuth 2.0. يتحقق من هوية العميل بناء على المصادقة التي يقوم بها خادم التفويض. بالإضافة إلى ذلك ، يمكنه الحصول على معلومات ملف تعريف المستخدم حول العميل. يعمل OpenID connect في الواقع على حل الكثير من عيوب OAuth 2.0 ويوفر حلا أفضل للمستخدمين النهائيين والمطورين.
ما هو أفضل بروتوكول مصادقة يمكن استخدامه؟
مصادقة HTTP الأساسية هي الأسهل للتنفيذ في التطبيق الخاص بك ، ولكنها أيضا غير آمنة على الإطلاق. يتم ترميز بيانات الاعتماد ، ولكن يتم إرسالها كنص عادي. تعمل مصادقة الملخص على تحسين المصادقة الأساسية عن طريق إرسال البيانات بتنسيق مجزأ. لكن تجزئة خوارزمية MD5 ليست معقدة على الإطلاق ويمكن اختراقها بسهولة بالغة. مفاتيح API وحاملها متشابهان تقريبا ويوفران أمانا أفضل من أعلاه.
يضمن بروتوكول OAuth عدم تمكن أي متسللين من الحصول على معلومات العميل. حتى التطبيق لا يمكنه الحصول على بيانات اعتماد ملف تعريف العميل والمعلومات الخاصة. ينشئ OpenID Connect بروتوكولات للتطبيقات للوصول إلى سمات العميل باستخدام واجهة برمجة تطبيقات RESTful. يعمل OpenID Connect على توسيع تدفق الرمز المميز لتخويل OAuth 2.0 من خلال تقديم رموز مميزة جديدة. في الأساس ، يتم تحقيق OpenID Connect كامتداد ل OAuth 2.0.
استخدام LoadView لاختبار واجهة برمجة تطبيقات تتطلب المصادقة
في هذا القسم ، سنقوم بتنفيذ مصادقة HTTP API باستخدام LoadView. يتيح لك LoadView القيام بهذه المهام بسهولة وكفاءة أكبر. يوفر عرض التحميل خيارين لاختبار تحميل مصادقة واجهة برمجة التطبيقات:
مصادقة واجهة برمجة التطبيقات: الخيار الأول
إذا كان لديك حق الوصول إلى التطبيق ، فيمكننا الحصول على طلب واجهة برمجة التطبيقات باستخدام أي أداة شبكة. هذه هي أبسط طريقة. سنعرض عرضا سريعا لتكوين كل آلية من آليات مصادقة HTTP المذكورة أعلاه باستخدام LoadView
ملاحظة: يمكنك الحصول على تفاصيل طلب خادم واجهة برمجة التطبيقات وتفاصيل بيانات الجسم من فريق التطوير الخاص بك أو التقاطها باستخدام أي أداة استنشاق للشبكة.
الخطوة 1: حدد نوع اختبار الحمل
قم بتسجيل الدخول إلى LoadView وضمن تحديد نوع اختبار التحميل ، حدد HTTP / S.
الخطوة 2: تكوين واجهة برمجة التطبيقات الخاصة بك
ستطلب منك الشاشة التالية تكوين واجهة برمجة التطبيقات الخاصة بك. سنوضح لك هنا كيف يمكنك تكوين آليات مصادقة HTTP مختلفة في LoadView.
المصادقة الأساسية
مفاتيح واجهة برمجة التطبيقات
الرمز المميز لحامله
OAuth 2.0
يعد تكوين OAuth 2.0 وOpen ID Connect أكثر تعقيدا. سأعرض لك عرضا توضيحيا ل OAuth 2.0. هناك طريقة سهلة للقيام بمصادقة OAuth 2.0 والتي سأشرحها بعد هذا القسم.
الخطوة 1: خادم مصادقة OAuth
تكوين تفاصيل خادم مصادقة OAuth.
الخطوة 2: بيانات الاعتماد
أدخل بيانات الاعتماد وانقر فوق تسجيل الدخول. يعيد خادم المصادقة توجيه المستخدم إلى موقع الويب الخاص بك باستخدام رمز كمعلمة URL.
الخطوة 3: معلومات الخادم
يطلب خادم واجهة برمجة التطبيقات من خادم المصادقة معلومات المستخدم.
الخطوة 4: رمز الوصول
تحدد خوادم واجهة برمجة التطبيقات المستخدم وتستجيب برمز مميز للوصول. ثم يرسل المستخدم رمز الوصول إلى خادم واجهة برمجة التطبيقات عند كل طلب. يتحقق خادم API من صحة التطبيق ويمنح حق الوصول إليه.
مصادقة واجهة برمجة التطبيقات: الخيار الثاني
إذا لم يكن الخيار الأول ممكنا ، فيمكنك تسجيله باستخدام أداة تسجيل EveryStep Web Recorder . يمكنك الوصول إليه عبر الويب واستخدام المسجل أسهل وفعال. علاوة على ذلك ، لا تحتاج إلى تعلم آليات مصادقة مختلفة. سنوضح هنا كيفية إجراء اختبار الحمل باستخدام LoadView واستخدام مسجل الويب EveryStep. يستخدم التطبيق OAuth 2.0 للمصادقة.
الخطوة 1: تسجيل برنامج نصي جديد
قم بتسجيل الدخول إلى LoadView وضمن تحديد نوع اختبار التحميل ، حدد تطبيقات الويب. أو فقط افتح مسجل الويب EveryStep ، وأدخل عنوان URL الخاص بك ، وابدأ التسجيل.
الخطوة 2: انتقل إلى وظيفة تسجيل الدخول
هذا هو. لقد سجلت مصادقة التطبيق، باستخدام OAuth 2.0. أعد تشغيل البرنامج النصي المسجل وتأكد من أن كل شيء يعمل كما هو متوقع. أليس الأمر بسيطا؟ بمجرد الانتهاء من التسجيل ، يمكنك الانتقال إلى الخطوات التالية لتنفيذ اختبار التحميل الخاص بك.
الأفكار النهائية: تحميل اختبار واجهات برمجة تطبيقات الويب التي تتطلب المصادقة
إن ربط آليات مصادقة HTTP ليس بالمهمة السهلة باستخدام أي أداة اختبار أداء. يجب أن يكون لديك خبرة عملية ومعرفة عميقة حول كيفية عمل تدفق المصادقة. أيضا ، من المهم جدا إجراء اختبار الحمل لوظيفة تسجيل الدخول الخاصة بك. إذا لم تكن وحدة تسجيل الدخول الخاصة بك قادرة على خدمة حمل المستخدم المتزامن المتوقع ، فستكون خسارة كبيرة لعملك. يعد تسجيل الدخول إلى التطبيق جزءا مهما من وظائف التطبيق الخاص بك. إذا كنت تبحث عن حل جيد لاختبار الأداء من البداية إلى النهاية لواجهات برمجة تطبيقات الويب الخاصة بك ، فستحب بالتأكيد LoadView. انطلق وجربها اليوم!