تأمين واجهة برمجة تطبيقات من خلال اشتراط مفاتيح واجهة برمجة التطبيقات

يتم الآن عرض مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
المعلومات

المعلومات التي ستطّلع عليها

من خلال هذا البرنامج التعليمي، ستتعلّم ما يلي:

  • أنشئ خادمًا وكيلاً لواجهة برمجة التطبيقات يتطلب مفتاحًا لواجهة برمجة التطبيقات.
  • أضِف منتجًا لواجهة برمجة التطبيقات.
  • أضِف مطوّرًا وسجِّل تطبيقًا.
  • استدعِ واجهة برمجة التطبيقات باستخدام مفتاح واجهة برمجة التطبيقات.

من المهم حماية واجهة برمجة التطبيقات من الوصول غير المُصرح به. وإحدى الطرق المتاحة لتنفيذ ذلك هي باستخدام مفاتيح واجهة برمجة التطبيقات (التي تُعرف أيضًا باسم المفاتيح العامة أو مفاتيح المستهلك أو مفاتيح التطبيقات).

عندما يطلب التطبيق الوصول إلى واجهة برمجة التطبيقات، يجب أن يقدّم مفتاحًا صالحًا. في وقت التشغيل، تتحقّق سياسة "التحقّق من مفتاح واجهة برمجة التطبيقات" من أنّ مفتاح واجهة برمجة التطبيقات المقدَّم:

  • صالحة
  • لم يتم إبطاله
  • يتطابق مع مفتاح واجهة برمجة التطبيقات لمنتج واجهة برمجة التطبيقات الذي يعرض الموارد المطلوبة

إذا كان المفتاح صالحًا، سيتم السماح بالطلب. وإذا كان المفتاح غير صالح، سيؤدي الطلب إلى حدوث إخفاق في التفويض.

ستنشئ في هذا البرنامج التعليمي خادمًا وكيلاً لواجهة برمجة التطبيقات يتطلب مفتاحًا صالحًا لواجهة برمجة التطبيقات للوصول إليه.

المتطلبات

  • حساب Apigee Edge. إذا لم يكن لديك حساب بعد، يمكنك الاشتراك باستخدام الإرشادات الواردة في إنشاء حساب Apigee Edge.
  • متصفح ويب لإجراء طلب بيانات من واجهة برمجة التطبيقات.
  • (لا يتطلب قسم "الرصيد الإضافي") تثبيت cURL على جهازك لإجراء طلبات بيانات من واجهة برمجة التطبيقات من سطر الأوامر.

إنشاء خادم وكيل لواجهة برمجة التطبيقات

لمحة عن الاستهداف الوهمي

تتم استضافة خدمة mocktarget في Apigee، وتعرض بيانات بسيطة. ولا يتطلب أي مفتاح واجهة برمجة تطبيقات أو رمز دخول. يمكنك الوصول إلى هذه الصفحة في متصفح ويب. جربه بالنقر على ما يلي:

http://mocktarget.apigee.net

يعرض الهدف Hello, Guest!. استخدِم مرجع /help للحصول على صفحة مساعدة لموارد واجهة برمجة التطبيقات الأخرى المتاحة.

  1. انتقِل إلى https://apigee.com/edge وسجِّل الدخول.
  2. بدِّل إلى المؤسسة التي تريدها بالنقر على اسم المستخدم في أعلى شريط التنقّل الجانبي لعرض قائمة الملف الشخصي للمستخدم، ثم اختيار المؤسسة من القائمة.

    تحديد مؤسسة في قائمة الملف الشخصي للمستخدم
  3. انقر على الخوادم الوكيلة لواجهة برمجة التطبيقات على الصفحة المقصودة لعرض قائمة الخوادم الوكيلة لواجهة برمجة التطبيقات.

    قائمة واجهات برمجة تطبيقات Edge
  4. انقر على + خادم وكيل.
    زر إنشاء خادم وكيل
  5. في صفحة إنشاء خادم وكيل، اختر الخادم الوكيل العكسي (الأكثر شيوعًا).
  6. في صفحة تفاصيل الخادم الوكيل، اضبط الخادم الوكيل على النحو التالي:
    في هذا الحقل افعل هذا
    اسم الخادم الوكيل إدخال: helloworld_apikey
    المسار الأساسي للمشروع

    تغيير إلى: /helloapikey

    "مسار المشروع الأساسي" هو جزء من عنوان URL المستخدَم لإرسال طلبات إلى الخادم الوكيل لواجهة برمجة التطبيقات.

    ملاحظة: للحصول على اقتراحات Apigee بشأن إصدارات واجهة برمجة التطبيقات، يمكنك الاطّلاع على تحديد الإصدارات في الكتاب الإلكتروني Web API Design: The Missing Link.

    واجهة برمجة التطبيقات الحالية

    إدخال: http://mocktarget.apigee.net

    تحدّد هذه العلامة عنوان URL المستهدف الذي يستدعيه Apigee Edge على طلب إلى الخادم الوكيل لواجهة برمجة التطبيقات.

    الوصف إدخال: hello world protected by API key
  7. انقر على التالي.
  8. في صفحة السياسات الشائعة، بالنسبة إلى الأمان: التفويض، اختَر مفتاح واجهة برمجة التطبيقات ثم انقر على التالي. سيؤدي هذا الإجراء إلى إضافة سياستين إلى الخادم الوكيل لواجهة برمجة التطبيقات.
  9. في صفحة المضيفين الافتراضيين، اختَر تلقائي وآمن ثم انقر على التالي. يتيح لك اختيار تلقائي طلب واجهة برمجة التطبيقات باستخدام http://. يؤدي اختيار آمن إلى السماح لك بطلب البيانات من واجهة برمجة التطبيقات باستخدام https://.
  10. في صفحة الملخّص، تأكَّد من اختيار بيئة النشر الاختبارية، ثم انقر على إنشاء ونشر.
  11. ستظهر لك إقرار بأنّه تم إنشاء الخادم الوكيل الجديد لواجهة برمجة التطبيقات ومنتج واجهة برمجة التطبيقات بنجاح، وأنّ الخادم الوكيل لواجهة برمجة التطبيقات قد تم تفعيله في بيئة الاختبار.
  12. انقر على تعديل الخادم الوكيل لعرض صفحة نظرة عامة للخادم الوكيل لواجهة برمجة التطبيقات.

الاطّلاع على السياسات

  1. في محرر الخادم الوكيل لواجهة برمجة التطبيقات، انقر على علامة التبويب تطوير. ستلاحظ إضافة سياستَين إلى مسار الطلب للخادم الوكيل لواجهة برمجة التطبيقات:
    • التحقّق من مفتاح واجهة برمجة التطبيقات: يتحقّق من طلب البيانات من واجهة برمجة التطبيقات للتأكّد من توفّر مفتاح صالح (مُرسَل كمَعلمة طلب بحث).
    • Remove Query Param apikey: هي سياسة AssignMessage تزيل مفتاح واجهة برمجة التطبيقات بعد أن يتم وضع علامة فيه حتى لا يتم تمريره وعرضه بدون داعٍ.
  2. انقر على رمز سياسة "التحقّق من مفتاح واجهة برمجة التطبيقات" في طريقة عرض التدفق، واطّلِع على إعدادات XML الخاصة بالسياسة في طريقة عرض الرموز السفلية. ويحدّد العنصر <APIKey> السياسة التي يجب أن يبحث فيها عن مفتاح واجهة برمجة التطبيقات عند إجراء طلب البيانات. يبحث Google عن المفتاح بشكل تلقائي كمعلَمة طلب بحث تُسمى apikey في طلب HTTP:

    <APIKey ref="request.queryparam.apikey" />
    

    ويُعدّ الاسم apikey عشوائيًا ويمكن أن يكون أي سمة تحتوي على مفتاح واجهة برمجة التطبيقات.

محاولة طلب بيانات من واجهة برمجة التطبيقات

في هذه الخطوة، ستجري طلبًا ناجحًا من واجهة برمجة التطبيقات للخدمة المستهدَفة مباشرةً، وبعد ذلك سيتم الاتصال بالخادم الوكيل لواجهة برمجة التطبيقات لمعرفة كيفية حمايته بموجب السياسات.

  1. تم الإجراء بنجاح

    في متصفِّح الويب، انتقِل إلى العنوان التالي. وهذه هي الخدمة المستهدفة التي تم ضبط الخادم الوكيل لواجهة برمجة التطبيقات لإعادة توجيه الطلب إليها، ولكنك ستصل إليها مباشرةً في الوقت الحالي:

    http://mocktarget.apigee.net
    

    من المفترَض أن يظهر لك هذا الرد الناجح: Hello, Guest!.

  2. تعذّر التحقق

    جرِّب الآن طلب الخادم الوكيل لواجهة برمجة التطبيقات:

    http://ORG_NAME-test.apigee.net/helloapikey
    

    مع استبدال ORG_NAME باسم مؤسسة Edge.

    وبدون سياسة "التحقّق من مفتاح واجهة برمجة التطبيقات"، ستحصل على الردّ نفسه الذي تلقّيته من الطلب السابق. في هذه الحالة، من المفترض أن تظهر لك استجابة الخطأ التالية:

    {"fault":{"faultstring":"Failed to resolve API Key variable request.queryparam.apikey","detail":{"errorcode":"steps.oauth.v2.FailedToResolveAPIKey"}}}
    

    ما يعني أنّك لم تضبط مفتاح واجهة برمجة تطبيقات صالحًا (كمَعلمة طلب بحث).

في الخطوات التالية، عليك إضافة منتج لواجهة برمجة التطبيقات.

إضافة منتج لواجهة برمجة التطبيقات

لإضافة منتج واجهة برمجة التطبيقات باستخدام واجهة مستخدم Apigee:

  1. اختَر النشر > منتجات واجهة برمجة التطبيقات.
  2. انقر على +منتج واجهة برمجة التطبيقات.
  3. أدخِل تفاصيل المنتج للمنتج في واجهة برمجة التطبيقات.

    الحقل الوصف
    الاسم الاسم الداخلي لمنتج واجهة برمجة التطبيقات. ولا تحدِّد أحرفًا خاصة في الاسم.
    ملاحظة: لا يمكنك تعديل الاسم بعد إنشاء المنتج من واجهة برمجة التطبيقات. على سبيل المثال، helloworld_apikey-Product.
    الاسم المعروض الاسم المعروض لمنتج واجهة برمجة التطبيقات يُستخدم الاسم المعروض في واجهة المستخدم، ويمكنك تعديله في أي وقت. في حال عدم تحديد قيمة السمة، سيتم استخدام قيمة "الاسم". يتم ملء هذا الحقل تلقائيًا باستخدام قيمة "الاسم"، ويمكنك تعديل محتواه أو حذفه. ويمكن أن يتضمّن الاسم المعروض رموزًا خاصة. مثلاً: helloworld_apikey-Product
    الوصف وصف منتج واجهة برمجة التطبيقات. مثلاً: Test product for tutorial
    البيئة البيئات التي سيسمح منتج واجهة برمجة التطبيقات بها بالوصول إليها. على سبيل المثال، test أو prod.
    إذن الوصول اختَر علني.
    الموافقة تلقائيًا على طلبات الوصول يمكنك تفعيل الموافقة التلقائية على الطلبات الرئيسية لمنتج واجهة برمجة التطبيقات هذا من أي تطبيق.
    الحصة تجاهل هذا الدليل التوجيهي.
    نطاقات OAuth المسموح بها تجاهل هذا الدليل التوجيهي.
  4. في قسم موارد واجهة برمجة التطبيقات، اختَر الخادم الوكيل لواجهة برمجة التطبيقات الذي أنشأته للتو. مثلاً: helloworld_apikey
  5. انقر على إضافة.
  6. في قسم المسارات، أضِف المسار "/".
  7. انقر على إضافة.
  8. انقر على حفظ.

في الخطوات التالية، ستحصل على مفتاح واجهة برمجة التطبيقات المطلوب.

إضافة مطوّر وتطبيق إلى مؤسستك

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

إنشاء مطور

لإنشاء مطور:

  1. اختَر نشر > المطوّرون في القائمة.
  2. انقر على + مطوّر برامج.
  3. أدخِل ما يلي في نافذة "مطوّر البرامج الجديد":

    في هذا الحقل enter
    الاسم Keyser
    اسم العائلة Soze
    اسم المستخدم keyser
    البريد الإلكتروني keyser@example.com
  4. انقر على إنشاء.

تسجيل تطبيق

لتسجيل تطبيق مطوِّر:

  1. اختَر نشر > التطبيقات.
  2. انقر على + تطبيق.
  3. أدخل ما يلي في نافذة تطبيق جديد:

    p
    في هذا الحقل افعل هذا
    الاسم والاسم المعروض إدخال: keyser_app
    الشركة / المطوّر اختيار: Developer
    مطوّر البرامج اختيار: Keyser Soze (keyser@example.com)
    عنوان URL لمعاودة الاتصال والملاحظات اتركه فارغًا
  4. في القسم بيانات الاعتماد، اختَر أبدًا من قائمة انتهاء الصلاحية. لن تنتهي صلاحية بيانات اعتماد هذا التطبيق أبدًا.
  5. ضمن المنتجات، انقر على إضافة منتج.
  6. اختَر helloworld_apikey-Product.
  7. انقر على إضافة.
  8. انقر على إنشاء أعلاه وعلى يسار قسم تفاصيل التطبيق لحفظ عملك.

الحصول على مفتاح واجهة برمجة التطبيقات

للحصول على مفتاح واجهة برمجة التطبيقات:

  1. في صفحة التطبيقات (نشر > التطبيقات)، انقر على keyser_app.
  2. في صفحة keyser_app، انقر على عرض بجانب المفتاح في القسم Credentials (بيانات الاعتماد). في قسم المنتج، لاحظ أن المفتاح مرتبط بـ helloworld_apikey

    .
  3. اختَر المفتاح وانسخه. ستستخدمه في الخطوة التالية.

استدعاء واجهة برمجة التطبيقات باستخدام مفتاح

الآن بعد أن توفّر لديك مفتاح واجهة برمجة التطبيقات، يمكنك استخدامه لطلب الخادم الوكيل لواجهة برمجة التطبيقات. أدخِل ما يلي في متصفّح الويب. استبدِل اسم مؤسسة Edge بـ ORG_NAME، ومفتاح واجهة برمجة التطبيقات باسم API_KEY أدناه. تأكَّد من عدم وجود مسافات إضافية في مَعلمة طلب البحث.

http://ORG_NAME-test.apigee.net/helloapikey?apikey=API_KEY

الآن، عند الاتصال بالخادم الوكيل لواجهة برمجة التطبيقات، من المفترض أن يظهر لك هذا الرد: Hello, Guest!

تهانينا! لقد أنشأت خادمًا وكيلاً لواجهة برمجة التطبيقات وحمايته من خلال اشتراط تضمين مفتاح صالح لواجهة برمجة التطبيقات في الطلب.

بشكلٍ عام، ليس من الجيد ضبط مفتاح واجهة برمجة التطبيقات كمَعلمة طلب بحث. ننصحك بإدراجه في عنوان HTTP بدلاً من ذلك.

أفضل الممارسات: تمرير المفتاح في عنوان HTTP

في هذه الخطوة، عليك تعديل الخادم الوكيل للبحث عن مفتاح واجهة برمجة التطبيقات في عنوان يُسمى x-apikey.

  1. عدِّل الخادم الوكيل لواجهة برمجة التطبيقات. اختَر التطوير > الخوادم الوكيلة لواجهة برمجة التطبيقات > helloworld_apikey، وانتقل إلى عرض التطوير.
  2. اختَر السياسة التحقّق من مفتاح واجهة برمجة التطبيقات وعدِّل ملف XML الخاص بالسياسة لكي تظهر السياسة في header بدلاً من queryparam:

    <APIKey ref="request.header.x-apikey"/>
    
  3. احفظ الخادم الوكيل لواجهة برمجة التطبيقات لنشر التغيير.
  4. يمكنك إجراء طلب البيانات التالي من واجهة برمجة التطبيقات باستخدام cURL بهدف ضبط مفتاح واجهة برمجة التطبيقات على أنّه عنوان x-apikey. ولا تنسَ استبدال اسم مؤسستك.

    curl -v -H "x-apikey: API_KEY" http://ORG_NAME-test.apigee.net/helloapikey
    

ملاحظة: لإكمال التغيير بشكل كامل، عليك أيضًا ضبط سياسة AssignMessage لإزالة العنوان بدلاً من مَعلمة طلب البحث. مثال:

<Remove>
<Headers>
    <Header name="x-apikey"/>
</Headers>
</Remove>

مواضيع ذات صلة

في ما يلي بعض الموضوعات التي تتعلق مباشرةً بهذا البرنامج التعليمي:

وللتعمق أكثر، نجد أن حماية واجهات برمجة التطبيقات باستخدام مفاتيح واجهة برمجة التطبيقات ليست سوى جزء من القصة. وفي كثير من الأحيان، تتضمن حماية واجهة برمجة التطبيقات إجراءات أمان إضافية، مثل OAuth.

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