في اقتصاد اليوم القائم على تكنولوجيا المعلومات ، أصبحت واجهات برمجة تطبيقات الويب تستخدم بشكل متزايد من قبل جميع أنحاء العالم. من المحتمل أنك استهلكت أو أنشأت واجهات برمجة تطبيقات بنفسك. تتعامل واجهات برمجة التطبيقات مع كميات هائلة من البيانات – وهي واحدة من المخاوف الأساسية التي تبحث عنها مؤسسة خدمة البرامج على وجه التحديد لتأمين هذه البيانات. والفكرة هي أن البيانات يجب أن تكون مستقرة وآمنة ويمكن الوصول إليها من قبل المستخدمين المقصودين فقط. الوقت والسرعة والأداء مهم أيضا لواجهات برمجة التطبيقات. هنا في هذه المقالة ، سنناقش طرق مصادقة وتفويض واجهة برمجة التطبيقات المختلفة التي تستخدمها مؤسسات تكنولوجيا المعلومات على نطاق واسع في جميع أنحاء العالم.
المصادقة مقابل التفويض
إذا سبق لك العمل على واجهة برمجة تطبيقات، فسترى دائما رؤوس التخويل فقط، وليس رؤوس المصادقة. هل تساءلت يوما لماذا؟ ما عليك سوى استخدام أي أداة استنشاق للشبكة مثل Fiddler / Wireshark ، أو استخدام أدوات اختبار واجهة برمجة التطبيقات والتحقق من واجهة برمجة التطبيقات الخاصة بتطبيقك. سواء رأيت رؤوس واجهة برمجة التطبيقات أو نصها، سيجد طلب واجهة برمجة التطبيقات الخاص بك دائما تفويضا. لذلك ، قبل أن نوضح لماذا تحتوي واجهات برمجة التطبيقات على تفويض فقط وليس مصادقة ، دعنا نوضح أولا الفرق بين المصادقة والتفويض.
المصادقه
المصادقة ليست سوى التحقق من صحة المستخدم إذا كان الشخص المناسب لاستخدام هذه الخدمة. دعونا نوضح ذلك بشكل أكبر بمثال بسيط. لنفترض أنك تزور مطعما في مدينتك مع عائلتك. تفتح باب المطعم ويرحب بك المدير. لكنك لا تريد الجلوس في مكان عام لتناول الطعام في المطعم ، فأنت تريد الجلوس في غرفة خاصة مع العائلة ويجب أن يكون لديك حجز لذلك. يمكنك إخبار المدير ويؤكد أن لديك حجزا ، مما يسمح لك بالجلوس في القسم الخاص بالمطعم المخصص للعائلات. لذلك ، هذا ما أطلقنا عليه اسم المصادقة. لقد سمح لك مدير المطعم بالجلوس مع عائلتك في مكان خاص مع حجز صالح. يمكننا القول أن الحجز يسمى مفتاح المصادقة.
إذن
الآن ، يسمح لك بالدخول إلى الغرفة الخاصة ويمكنك استخدام الخدمات المحجوزة لرواد المطاعم الخاصة ، إلخ. أنت مخول للقيام بكل هذا ، ولكن إذا ذهبت إلى مطبخ المطعم وفتحت ثلاجته ، فقد يخبرك أنه غير مسموح لك بالدخول إلى هذا المجال. لذلك يسمى هذا التفويض. لذلك يسمح لك بالدخول ، ولكن بعد دخول المطعم ، لا يسمح لك بالدخول إلى بعض المناطق وغير مصرح لك بالوصول إلى بعض المناطق الأخرى. إذن هذا هو التفويض.
الآن عندما يتعلق الأمر بموقع ويب ، يمكن لأي شخص إدخال صفحة تسجيل دخول موقع ويب عام. نفس الشيء مثل أي شخص يمكن أن يدخل في مطعم. لن يوقفك أحد. عند تسجيل الدخول باستخدام اسم المستخدم وكلمة المرور لموقع الويب الخاص بك ، تتم مصادقتك ويمكنك الدخول إلى موقع الويب. بنفس الطريقة التي وصلت بها إلى طاولة خاصة محجوزة في مطعم باستخدام حجز. ولكن بعد الدخول ، وبعد المصادقة ، يمكنك الوصول إلى بعض الأقسام ، ولكن قد لا تتمكن من الوصول إلى بعض الأقسام الأخرى التي تشبه أقسام المشرف على موقع الويب. لذلك هذا هو الفرق الأساسي جدا بين المصادقة والتفويض.
الآن ، نعود إلى سؤالنا. نرى دائما التفويض في واجهة برمجة التطبيقات ، لماذا ذلك؟ إذا نظرت إلى واجهة برمجة التطبيقات ، فإنها تشير إلى نقطة نهاية حيث يتم توجيه هذا العنوان إلى وظيفة أو مورد معين في التطبيق. يمكننا أن نقول ، على سبيل المثال ، وحدة نمطية على الواجهة الخلفية للتطبيق. عندما تحاول بالفعل الوصول إلى مورد معين بمفرده في التطبيق ، فمن الأنسب أن تسميه تفويضا لك ، على الرغم من أنه ستكون هناك مصادقة للتحقق من هويتك. الخطوة الأولى هي المصادقة دائما.
أنواع مصادقة HTTP
نظرا لأننا غطينا الفرق بين المصادقة والتفويض، سنناقش الآن أنواعا مختلفة من مصادقة واجهة برمجة التطبيقات. تختلف طرق مصادقة واجهة برمجة التطبيقات بناء على التقنية التي يستخدمونها. المصادقة مهمة جدا لأنها ترتبط مباشرة بأمان النظام الخاص بك. هذا هو السبب في أن الأولوية تذهب دائما إلى مصادقة HTTP في أي نظام.
سنسلط الضوء على خمس آليات رئيسية لإضافة الأمان إلى واجهة برمجة التطبيقات – الأساسية ومفتاح واجهة برمجة التطبيقات وحاملها وOAuth1.0/OAuth 2.0 واتصال OpenID. سنحدد ما يفعلونه ، وكيف يعملون ، ومزايا وعيوب كل نهج. أخيرا ، سنوضح اختبار الحمل لواجهة برمجة التطبيقات التي تتطلب المصادقة باستخدام LoadView.
المصادقة الأساسية
نادرا ما تستخدم صناعة تكنولوجيا المعلومات مصادقة HTTP الأساسية في الوقت الحاضر ، لأنه من السهل جدا اختراقها ، ولكن هذه هي أسهل طريقة للتنفيذ. سترسل واجهات برمجة التطبيقات اسم مستخدم وكلمة مرور على طول النص. سيتم ترميز بيانات الاعتماد باستخدام طريقة تشفير مثل Base64 ؛ سيؤدي ذلك إلى تحويل اسم المستخدم وكلمة المرور إلى تنسيق مشفر للإرسال.
نظرا لأنه يستخدم الرأس لنقل بيانات الاعتماد ، فلا توجد تدابير أمنية معقدة أخرى. ولا حتى معرفات الجلسات أو ملفات تعريف الارتباط.
مثال على المصادقة الأساسية في رأس الطلب:
التفويض: الأساسية Cg4sOnOlY8KyPQ ==
مصادقة الملخص
تعد مصادقة الوصول إلى Digest أكثر تعقيدا وتقدما من المصادقة الأساسية. يستخدم Digest مجموعة من كلمة مرور المستخدم وسمات أخرى لإنشاء تجزئة MD5. سيتم إرسال هذا بعد ذلك إلى الخادم للمصادقة. إنها أكثر تقدما من آلية الأمان الأخرى لأنها ترسل بيانات الاعتماد كتجزئة. تم إنشاؤه في الأصل كجزء من RFC 2069 ، تمت إضافة تحسينات الأمان لاحقا في RFC 2617.
في مصادقة الملخص، يكون الخادم هو الذي يكتشف العميل الذي يحاول الوصول إلى المورد. سيقوم الخادم بإنشاء قيمة فريدة ، يشار إليها باسم “nonce”. في وقت لاحق، سيتم استخدام هذه القيمة الفريدة من قبل طالب الموارد لإنشاء تجزئة MD5، والتي سيتم التحقق منها بواسطة الخادم.
مفاتيح واجهة برمجة التطبيقات
تستخدم مفاتيح واجهة برمجة التطبيقات على نطاق واسع مقارنة بالمصادقة الأساسية في الوقت الحاضر. يمكنك رؤيته في تطبيقات الهاتف المحمول ، وكذلك تطبيقات الويب. تم إنشاء مفاتيح واجهة برمجة التطبيقات إلى حد ما لحل الثغرات الأمنية المرتبطة بالآلية الأساسية لواجهة برمجة التطبيقات. في مفتاح واجهة برمجة التطبيقات، يتم إنشاء قيمة فريدة من نوعها في جانب الخادم بمجرد المصادقة باستخدام اسم المستخدم وكلمة المرور. سيتم تعيينه للمستخدم. عادة ، يتم إنشاء هذه القيمة الفريدة استنادا إلى عنوان IP وسمات المستخدم المختلفة. في معظم الأحيان ، سيرسل المطورون مفتاح API في رأس التفويض.
مثال على مفتاح واجهة برمجة التطبيقات
api_key: d670d200234faf5480aa11529b01d732
هناك بالتأكيد الكثير من المزايا لاستخدام مفتاح API ، مقارنة بجميع آليات الأمان الأخرى. قبل كل شيء ، مفاتيح API بسيطة مع أمان أفضل. العيب هو أنه يمكن لأي شخص التقاط مفتاح الأمان هذا باستخدام أي من أدوات شم الشبكات. هذا يمكن أن يؤدي إلى مشاكل أمنية للتطبيق بأكمله.
حامل
الحامل يعني “الشخص أو الشيء الذي يحمل أو يحمل شيئا”. كما يوحي الاسم ، إنه نظام مصادقة HTTP يتضمن رموز الأمان. سيحصل حامل رمز الأمان المميز على إمكانية الوصول إلى وظائف أو عناوين URL معينة. عادة ما يتم إنشاء الرمز المميز لحامله بواسطة الخادم استجابة لطلب تسجيل دخول العميل. بمجرد حصول المستخدم على الرمز المميز لحامله من الخادم ، يجب عليه إرسال الرمز المميز مع رأس التفويض عند تقديم المزيد من الطلبات.
مثال على مصادقة الحامل
إذن:
حامل 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 باستخدام LoadView. يتيح لك LoadView القيام بهذه المهام بسهولة وكفاءة أكبر. توفر طريقة عرض التحميل خيارين لاختبار تحميل مصادقة واجهة برمجة التطبيقات:
مصادقة واجهة برمجة التطبيقات: الخيار الأول
إذا كان لديك حق الوصول إلى التطبيق ، فيمكننا الحصول على طلب واجهة برمجة التطبيقات باستخدام أي أداة شبكة. هذه هي أبسط طريقة. سنعرض عرضا توضيحيا سريعا لتكوين كل آلية من آليات مصادقة HTTP المذكورة أعلاه باستخدام LoadView
ملاحظة: يمكنك الحصول على تفاصيل طلب خادم API وتفاصيل بيانات الجسم من فريق التطوير الخاص بك أو التقاطها باستخدام أي أداة استنشاق الشبكة.
الخطوة 1: حدد نوع اختبار الحمل
قم بتسجيل الدخول إلى LoadView وضمن تحديد نوع اختبار التحميل، حدد HTTP/S.
الخطوة 2: تكوين واجهة برمجة التطبيقات الخاصة بك
ستطلب منك الشاشة التالية تكوين واجهة برمجة التطبيقات الخاصة بك. سنوضح لك هنا كيف يمكنك تكوين آليات مصادقة HTTP مختلفة في LoadView.
المصادقة الأساسية
مفاتيح واجهة برمجة التطبيقات
رمز الحامل
أووث 2.0
يعد OAuth 2.0 و Open ID Connect أكثر تعقيدا للتكوين. سأريكم عرضا توضيحيا ل OAuth 2.0. هناك طريقة سهلة للقيام بمصادقة OAuth 2.0 والتي سأشرحها بعد هذا القسم.
الخطوة 1: خادم مصادقة OAuth
تكوين تفاصيل خادم مصادقة OAuth.
الخطوة 2: بيانات الاعتماد
أدخل بيانات الاعتماد وانقر على تسجيل الدخول. يقوم خادم المصادقة بإعادة توجيه المستخدم إلى موقع الويب الخاص بك باستخدام رمز كمعلمة URL.
الخطوة 3: معلومات الخادم
يطلب خادم واجهة برمجة التطبيقات من خادم المصادقة معلومات المستخدم.
الخطوة 4: الوصول إلى الرمز المميز
تحدد خوادم API المستخدم وتستجيب باستخدام رمز مميز للوصول. ثم يرسل المستخدم رمز الوصول إلى خادم واجهة برمجة التطبيقات في كل طلب. يقوم خادم API بالتحقق من صحة التطبيق ومنحه حق الوصول.
مصادقة واجهة برمجة التطبيقات: الخيار الثاني
إذا لم يكن الخيار الأول ممكنا ، فيمكنك تسجيله باستخدام أداة تسجيل EveryStep Web Recorder . يمكنك الوصول إليه عبر الويب واستخدام المسجل أسهل وفعال. علاوة على ذلك ، لا تحتاج إلى تعلم آليات مصادقة مختلفة. سنوضح هنا كيفية إجراء اختبار التحميل باستخدام LoadView واستخدام مسجل الويب EveryStep. يستخدم التطبيق OAuth 2.0 للمصادقة.
الخطوة 1: تسجيل برنامج نصي جديد
قم بتسجيل الدخول إلى LoadView وضمن تحديد نوع اختبار التحميل، حدد تطبيقات الويب. أو ما عليك سوى فتح مسجل الويب EveryStep وإدخال عنوان URL الخاص بك وبدء التسجيل.
الخطوة 2: الانتقال إلى وظيفة تسجيل الدخول
هذا هو. لقد قمت بتسجيل مصادقة التطبيق ، بعد OAuth 2.0. أعد تشغيل البرنامج النصي المسجل وتأكد من أن كل شيء يعمل كما هو متوقع. أليس الأمر بسيطا؟ بمجرد الانتهاء من التسجيل ، يمكنك الانتقال إلى الخطوات التالية لتنفيذ اختبار التحميل الخاص بك.
الأفكار النهائية: تحميل واجهات برمجة تطبيقات الويب لاختبار التي تتطلب المصادقة
ربط آليات مصادقة HTTP ليست مهمة سهلة باستخدام أي أداة لاختبار الأداء. يجب أن يكون لديك خبرة عملية ومعرفة عميقة حول كيفية عمل تدفق المصادقة. أيضا ، من المهم جدا إجراء اختبار التحميل لوظيفة تسجيل الدخول الخاصة بك. إذا كانت وحدة تسجيل الدخول الخاصة بك غير قادرة على خدمة تحميل المستخدم المتزامن المتوقع ، فستكون خسارة كبيرة لعملك. تسجيل الدخول إلى التطبيق الخاص بك هو جزء مهم من وظائف التطبيق الخاص بك. إذا كنت تبحث عن حل جيد لاختبار الأداء من البداية إلى النهاية لواجهات برمجة تطبيقات الويب الخاصة بك ، فستحب بالتأكيد LoadView. المضي قدما ومحاولة ذلك اليوم!