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

أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلىمستندات Apigee X.
info

يمكنك إعداد عملية التحقّق من مفتاح واجهة برمجة التطبيقات لواجهة برمجة تطبيقات من خلال إرفاق سياسة من النوع "التحقّق من مفتاح واجهة برمجة التطبيقات". الإعداد المطلوب الوحيد لسياسة "التحقّق من مفتاح واجهة برمجة التطبيقات" هو الموقع الجغرافي المتوقّع لمفتاح واجهة برمجة التطبيقات في طلب العميل. سيتحقّق خادم وكيل واجهة برمجة التطبيقات من الموقع الجغرافي الذي تحدّده، وسيستخرج مفتاح واجهة برمجة التطبيقات. إذا لم يكن مفتاح واجهة برمجة التطبيقات متوفرًا في الموقع الجغرافي المتوقّع، سيتم عرض خطأ وسيتم رفض الطلب. يمكن أن تكون مفاتيح واجهة برمجة التطبيقات في مَعلمة طلب بحث أو مَعلمة نموذج أو عنوان HTTP.

على سبيل المثال، يحدّد إعداد السياسة أدناه الموقع الجغرافي المتوقّع للمفتاح على أنّه مَعلمة طلب بحث باسم apikey. يجب أن يعرض الطلب الناجح مفتاح واجهة برمجة التطبيقات كمَعلمة طلب بحث مُلحقة بالطلب، مثلاً ?apikey=Y7yeiuhcbKJHD790

للتحقّق من مفاتيح واجهة برمجة التطبيقات، أنشئ السياسة التالية:

<VerifyAPIKey name="APIKeyValidation">
  <APIKey ref="request.queryparam.apikey"/>
</VerifyAPIKey>

يمكن إرفاق هذه السياسة بأي واجهة برمجة تطبيقات تحتاج إلى حمايتها.

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

تعمل خوادم وكلاء واجهة برمجة التطبيقات تلقائيًا على تمرير جميع عناوين HTTP ومعلمات طلب البحث المتوفّرة في الطلب. لذلك، بعد التحقّق من مفتاح واجهة برمجة التطبيقات، من المستحسن إزالته من الرسالة حتى لا يتم إرسال مفتاح واجهة برمجة التطبيقات عبر الشبكة إلى خدمة الخلفية. يمكنك إجراء ذلك باستخدام سياسة من النوع AssignMessage على النحو التالي:

<AssignMessage name="StripApiKey">
    <DisplayName>Remove Query Param</DisplayName>
    <Remove>
        <QueryParams>
            <QueryParam name="apikey"/>
        </QueryParams>
    </Remove>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="request"></AssignTo>
</AssignMessage>

إرفاق السياسة

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

أرفِق السياسات بنقطة نهاية الخادم الوكيل لخادم وكيل واجهة برمجة التطبيقات المطلوب حمايته على النحو التالي:

<ProxyEndpoint name="default">
  <PreFlow>
    <Request>
      <Step><Name>APIKeyValidation</Name></Step>
      <Step><Name>StripApiKey</Name></Step>
    </Request>
  </PreFlow>

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

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

بصفتك مشرفًا في مؤسستك، يمكنك استرداد مفتاح واجهة برمجة التطبيقات لأي تطبيق على النحو التالي:

$ curl https://api.enterprise.apigee.com/v1/o/{myorg}/developers/{developer_email}/apps/{app_name} -u email:password 

يوفّر ملف تعريف التطبيق الذي يتم عرضه لهذا الطلب مفتاح المستهلك (مفتاح واجهة برمجة التطبيقات) والرمز السري. قيمة مفتاح المستهلك هي القيمة التي تستخدمها لمفتاح واجهة برمجة التطبيقات في طلبك لواجهة برمجة التطبيقات المحمية.

على سبيل المثال، يؤدي الطلب الذي لا يتضمّن مفتاح واجهة برمجة التطبيقات إلى تعذُّر التفويض.

$ curl http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282

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

OAuth Failure : Could not resolve the app key with variable request.queryparam.apikey

عند تضمين مفتاح المستهلك للتطبيق كمَعلمة طلب بحث، تكون النتيجة المتوقّعة هي التفويض الناجح:

$ curl http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282&"apikey=PulSCqMnXGchW0pC0s5o9ngHVTWMeLqk"

النتيجة المتوقّعة هي استجابة ناجحة من خدمة الطقس.

يؤدي تعديل قيمة مفتاح واجهة برمجة التطبيقات في الطلب إلى تعذُّر التفويض:

$ curl http://{org_name}-test.apigee.net/weather?forecastrss?w=12797282&"apikey=PulSCqMnXGchW0"

النتائج:

OAuth Failure : Consumer Key is Invalid

تذكَّر أنّه يمكنك بصفتك مشرفًا لمؤسستك استرداد مفتاح المستهلك لأي تطبيق مسجَّل في مؤسسة:

$ curl https://api.enterprise.apigee.com/v1/o/{myorg}/developers/{developer_email}/apps/{app_name} -u email:password