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

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

يمكنك إعداد التحقُّق من مفتاح واجهة برمجة التطبيقات لواجهة برمجة تطبيقات من خلال إرفاق سياسة من النوع "التحقق من مفتاح واجهة برمجة التطبيقات". الإعداد الوحيد المطلوب لسياسة "التحقق من مفتاح واجهة برمجة التطبيقات" هو الموقع المتوقّع لمفتاح واجهة برمجة التطبيقات في طلب العميل. سيتحقق الخادم الوكيل لواجهة برمجة التطبيقات من الموقع الذي تحدده، ويستخرج مفتاح واجهة برمجة التطبيقات. إذا لم يكن مفتاح واجهة برمجة التطبيقات متوفّرًا في الموقع المتوقّع، سيظهر خطأ وسيتم رفض الطلب. يمكن العثور على مفاتيح واجهة برمجة التطبيقات في مَعلمة طلب بحث أو مَعلمة نموذج أو عنوان 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 للخادم الوكيل لواجهة برمجة التطبيقات لكي تتم حمايته على النحو التالي:

<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