إبطال سياسة OAuth V2

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

رمز السياسة

نظرة عامة

يؤدي إلى إبطال رموز دخول OAuth2 المرتبطة برقم تعريف تطبيق المطوّر أو رقم تعريف المستخدم النهائي للتطبيق، أو كليهما.

استخدِم سياسة OAuthv2 لإنشاء رمز دخول خاص ببروتوكول OAuth 2.0. الرمز المميز الذي أنشأه Apigee بالتنسيق التالي:

{
  "issued_at" : "1421847736581",
  "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a",
  "scope" : "READ",
  "status" : "approved",
  "api_product_list" : "[PremiumWeatherAPI]",
  "expires_in" : "3599", //--in seconds
  "developer.email" : "tesla@weathersample.com",
  "organization_id" : "0",
  "token_type" : "BearerToken",
  "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP",
  "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL",
  "organization_name" : "myorg",
  "refresh_token_expires_in" : "0", //--in seconds
  "refresh_count" : "0"
}

يحتوي العنصر application_name على رقم تعريف تطبيق المطوّر المرتبط بالرمز المميّز.

لا تُدرِج Apigee رقم تعريف المستخدم النهائي في الرمز المميّز تلقائيًا. يمكنك ضبط Apigee لتضمين معرّف المستخدم النهائي من خلال إضافة العنصر <AppEndUser> إلى سياسة OAuthv2:

<OAuthV2 name="GenerateAccessTokenClient">
    <Operation>GenerateAccessTokenV/Operation>
    ...
    <AppEndUser>request.queryparam.app_enduser</AppEndUser>
</OAuthV2>

في هذا المثال، مرِّر رقم تعريف المستخدم النهائي إلى سياسة OAuthv2 في مَعلمة طلب بحث باسم app_enduser. يتم بعد ذلك تضمين رقم تعريف المستخدم النهائي في الرمز المميّز ضمن العنصر app_enduser:

{
 "issued_at" : "1421847736581",
 "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a",
 "scope" : "READ",
 "app_enduser" : "6ZG094fgnjNf02EK",
 "status" : "approved",
 "api_product_list" : "[PremiumWeatherAPI]",
 "expires_in" : "3599", //--in seconds
 "developer.email" : "tesla@weathersample.com",
 "organization_id" : "0",
 "token_type" : "BearerToken",
 "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP",
 "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL",
 "organization_name" : "myorg",
 "refresh_token_expires_in" : "0", //--in seconds
 "refresh_count" : "0"
}

الإبطال حسب رقم تعريف تطبيق المطوّر

يمكنك إبطال رموز دخول OAuth2 المرتبطة برقم تعريف تطبيق المطوِّر. تشتمل جميع رموز الدخول عبر OAuth2 التي أنشأتها Apigee على رقم تعريف تطبيق مطوّر البرامج المرتبط بالرمز المميز. ويمكنك بعد ذلك إبطال الرموز المميّزة استنادًا إلى رقم تعريف التطبيق هذا.

الإبطال حسب رقم تعريف المستخدم النهائي للتطبيق

يمكنك إبطال رموز دخول OAuth2 المرتبطة بمعرّف مستخدم نهائي لتطبيق معيّن. وهو الرمز المميّز المرتبط بمعرّف المستخدم الذي تم إصدار الرموز المميّزة له.

بشكلٍ تلقائي، لا يوجد حقل لمعرّف المستخدم في رمز الدخول عبر OAuth. ولتفعيل إبطال رموز دخول OAuth 2.0 بواسطة رقم تعريف المستخدم النهائي، عليك ضبط سياسة OAuthv2 لتضمين رقم تعريف المستخدم في الرمز المميّز، كما هو موضَّح أعلاه.

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

عيّنات

تستخدم النماذج التالية سياسة إبطال OAuth V2 لإبطال رموز دخول OAuth2.

رقم تعريف تطبيق المطوّر

لإبطال رموز الدخول حسب رقم تعريف تطبيق المطوّر، استخدِم العنصر <AppId> في السياسة.

يتوقع المثال التالي العثور على رقم تعريف تطبيق المطوّر لرمز الدخول في مَعلمة طلب بحث باسم app_id:

<RevokeOAuthV2 continueOnError="false" enabled="true" name="MyRevokeTokenPolicy">
  <DisplayName>Revoke OAuth v2.0-1</DisplayName>
  <AppId ref="request.queryparam.app_id"></AppId>
</RevokeOAuthV2>

نظرًا لرقم تعريف تطبيق المطوِّر، تعمل السياسة على إبطال رمز الدخول.

إلغاء المساهمة قبل الطابع الزمني

لإبطال رموز الدخول حسب رقم تعريف تطبيق المطوّر التي تم إنشاؤها قبل تاريخ ووقت محدّدَين، استخدِم العنصر <RevokeBeforeTimestamp> في السياسة. تحدّد <RevokeBeforeTimestamp> وقت حقبة التوقيت العالمي المنسّق (UTC) بالمللي ثانية. ويتم إبطال جميع الرموز المميّزة التي تمّ إصدارها قبل هذه الفترة.

يؤدي المثال التالي إلى إبطال رموز الدخول لتطبيق مطوّر برامج تم إنشاؤه قبل 1 تموز (يوليو) 2019:

<RevokeOAuthV2 continueOnError="false" enabled="true" name="MyRevokeTokenPolicy">
  <DisplayName>Revoke OAuth v2.0-1</DisplayName>
  <AppId ref="request.queryparam.app_id"></AppId>
  <RevokeBeforeTimestamp>1561939200000</RevokeBeforeTimestamp>
</RevokeOAuthV2>

يأخذ العنصر <RevokeBeforeTimestamp> عددًا صحيحًا 64 بت (طويل) يمثّل عدد المللي ثانية التي انقضت منذ منتصف الليل في 1 كانون الثاني (يناير) 1970 حسب التوقيت العالمي المنسَّق.


مرجع العنصر

يصف مرجع العنصر عناصر وسمات سياسة cancelOAuthV2.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RevokeOAuthV2 continueOnError="false" enabled="true" name="GetOAuthV2Info-1">
  <DisplayName>Get OAuth v2.0 Info 1</DisplayName>
  <AppId ref="variable"></AppId>
  <EndUserId ref="variable"></EndUserId>
  <RevokeBeforeTimestamp ref="variable"></RevokeBeforeTimestamp>
  <Cascade>false</Cascade>
</RevokeOAuthV2>

سمات <cancelOAuthV2>

<RevokeOAuthV2 continueOnError="false" enabled="true" name="Revoke-OAuth-v20-1">

يوضِّح الجدول التالي السمات الشائعة لجميع العناصر الرئيسية للسياسة:

السمة الوصف تلقائي التواجد في المنزل
name

الاسم الداخلي للسياسة وقد تحتوي قيمة السمة name على أحرف وأرقام ومسافات وواصلات وشرطات سفلية ونقاط. لا يمكن أن تتجاوز هذه القيمة 255 حرفًا.

ويمكنك اختياريًا استخدام العنصر <DisplayName> لتصنيف السياسة في محرِّر الخادم الوكيل لواجهة المستخدم الإدارية باستخدام اسم مختلف للغة طبيعية.

لا ينطبق مطلوبة
continueOnError

اضبط القيمة على false لعرض رسالة خطأ عند تعذُّر تنفيذ السياسة. وهو سلوك متوقّع لمعظم السياسات.

اضبط القيمة على true لمواصلة تنفيذ التدفق حتى بعد تعذُّر تنفيذ السياسة.

false إجراء اختياري
enabled

اضبط القيمة على true لفرض السياسة.

اضبط القيمة على false من أجل إيقاف السياسة. ولن يتم فرض السياسة حتى إذا ظلت مرتبطة بمسار.

صحيح إجراء اختياري
async

تم إيقاف هذه السمة نهائيًا.

false منهي العمل به

العنصر <DisplayName>

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

<DisplayName>Policy Display Name</DisplayName>
تلقائي

لا ينطبق

إذا لم تستخدم هذا العنصر، سيتم استخدام قيمة السمة name الخاصة بالسياسة.

التواجد في المنزل إجراء اختياري
Type سلسلة

عنصر <AppId>

تُحدِّد هذه السياسة رقم تعريف تطبيق المطوّر للرموز المميّزة المطلوب إبطالها. مرِّر متغيّرًا يتضمّن رقم تعريف التطبيق أو رقم تعريف تطبيقي حرفي.

<AppId>appIdString</AppId>

or:

<AppId ref="request.queryparam.app_id"></AppId>
تلقائي

request.formparam.app_id (تنسيق x-www-form-url مرمّز ومحدد في نص الطلب)

التواجد في المنزل

إجراء اختياري

Type سلسلة
القيم الصالحة

متغيّر تدفق يحتوي على سلسلة رقم تعريف التطبيق أو سلسلة حرفية

عنصر <Cascade>

إذا كان true وكان لديك رمز دخول مبهم وتقليدي، سيتم إبطال كل من رمز إعادة التحميل ورمز الدخول في حال تطابق <AppId> أو <EndUserId>. في حال false، سيتم إبطال رمز الدخول فقط ولن يتغير الرمز المميز لإعادة التحميل. ينطبق نفس السلوك على رموز الدخول المبهمة فقط.

<Cascade>false<Cascade>
تلقائي

false

التواجد في المنزل

إجراء اختياري

Type منطقي
القيم الصالحة true أو false

عنصر <EndUserId>

تُحدِّد هذه السياسة رقم تعريف المستخدم النهائي للرمز المميّز المطلوب إبطاله. مرِّر متغيّرًا يتضمّن رقم تعريف المستخدم أو سلسلة رمز مميّز حرفية.

<EndUserId>userIdString</EndUserId>

or:

<EndUserId ref="request.queryparam.access_token"></EndUserId>
تلقائي

request.formparam.enduser_id (تنسيق x-www-form-url مرمّز ومحدد في نص الطلب)

التواجد في المنزل

إجراء اختياري

Type سلسلة
القيم الصالحة

إما متغيّر تدفق يحتوي على سلسلة رقم تعريف المستخدِم أو سلسلة حرفية.

عنصر <cancelWithTimestamp>

يمكنك إبطال الرموز المميّزة التي تم إصدارها قبل الطابع الزمني. يعمل هذا العنصر مع <AppId> و<EndUserId> للسماح لك بإبطال الرموز المميّزة قبل وقت محدّد. والقيمة التلقائية هي الوقت الذي يتم فيه تنفيذ السياسة.

<RevokeBeforeTimestamp>timeStampString</RevokeBeforeTimestamp>

or:

<RevokeBeforeTimestamp ref="request.queryparam.revoke_since_timestamp"></RevokeBeforeTimestamp>
تلقائي

الطابع الزمني الذي تمّ فيه تنفيذ السياسة.

التواجد في المنزل

إجراء اختياري

Type عدد صحيح 64 بت (طويل) يمثّل عدد المللي ثانية المنقضية منذ منتصف الليل في 1 كانون الثاني (يناير) 1970 حسب التوقيت العالمي المنسَّق.
القيم الصالحة

متغيّر تدفق يحتوي على طابع زمني أو طابع زمني حرفي. لا يمكن أن يكون الطابع الزمني في المستقبل ولا يمكن أن يكون قبل 1 كانون الثاني (يناير) 2014.

متغيّرات التدفق

لا تضبط سياسة cancelOAuthV2 متغيرات التدفق.

مرجع الخطأ

يصف هذا القسم رموز الأخطاء ورسائل الخطأ التي يتم عرضها ومتغيرات الأخطاء التي تضبطها Edge عندما تؤدي هذه السياسة إلى ظهور خطأ. هذه المعلومات مهمة لمعرفة ما إذا كنت تعمل على تطوير قواعد للأخطاء للتعامل معها. لمزيد من المعلومات، يمكنك الاطّلاع على المعلومات التي يجب معرفتها عن الأخطاء المتعلقة بالسياسات وأخطاء المعالجة.

أخطاء في وقت التشغيل

يمكن أن تحدث هذه الأخطاء عند تنفيذ السياسة. أسماء الأخطاء المعروضة أدناه هي السلاسل التي يتم تخصيصها للمتغيّر fault.name عند حدوث خطأ. راجِع القسم متغيّرات الأخطاء أدناه للحصول على مزيد من التفاصيل.

رمز الخطأ رموز حالة HTTP السبب
steps.oauth.v2.InvalidFutureTimestamp 500 لا يمكن أن يكون الطابع الزمني في المستقبل.
steps.oauth.v2.InvalidEarlyTimestamp 500 لا يمكن أن يكون الطابع الزمني قبل 1 كانون الثاني (يناير) 2014.
steps.oauth.v2.InvalidTimestamp 500 الطابع الزمني غير صالح.
steps.oauth.v2.EmptyAppAndEndUserId 500 لا يمكن أن يكون الحقلان AppdId وEndUserId فارغًا.

أخطاء النشر

يمكنك الرجوع إلى الرسالة التي تم الإبلاغ عنها في واجهة المستخدم للاطّلاع على معلومات عن أخطاء النشر.

متغيرات الخطأ

ويتم ضبط هذه المتغيّرات عندما تؤدي هذه السياسة إلى ظهور خطأ في وقت التشغيل.

المتغيرات المكان مثال
fault.name="fault_name" fault_name هو اسم الخطأ، كما هو موضَّح في جدول أخطاء وقت التشغيل أعلاه. اسم الخطأ هو الجزء الأخير من رمز الخطأ. fault.name Matches "IPDeniedAccess"
oauthV2.policy_name.failed policy_name هو اسم السياسة التي حدّدها المستخدم التي أدت إلى حدوث الخطأ. oauthV2.GetTokenInfo.failed = true
oauthV2.policy_name.fault.name policy_name هو اسم السياسة التي حدّدها المستخدم التي أدت إلى حدوث الخطأ. oauthV2.GetToKenInfo.fault.name = invalid_client-invalid_client_id
oauthV2.policy_name.fault.cause policy_name هو اسم السياسة التي حدّدها المستخدم التي أدت إلى حدوث الخطأ. oauthV2.GetTokenInfo.cause = ClientID is Invalid

مثال على الردّ على الخطأ

{
   "fault":{
      "faultstring":"Timestamp is in the future.",
      "detail":{
         "errorcode":"steps.oauth.v2.InvalidFutureTimestamp"
      }
   }
}

مثال لقاعدة خطأ

<FaultRule name="RevokeOAuthV2 Faults">
    <Step>
        <Name>AM-InvalidTimestamp</Name>
    </Step>
    <Condition>(fault.name = "InvalidFutureTimestamp")</Condition>
</FaultRule>

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