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

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

رمز السياسة

نظرة عامة

تُبطل هذه العملية رموز الوصول 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 معرّف تطبيق المطوّر المرتبط بالرمز. ويمكنك بعد ذلك إبطال الرموز المميّزة استنادًا إلى معرّف التطبيق هذا.

  • استخدِم Developer apps API للحصول على قائمة بمعرّفات التطبيقات لمطوّر معيّن.

  • يمكنك أيضًا استخدام Developer apps API للحصول على تفاصيل عن أحد التطبيقات.

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

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

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

للحصول على معرّف مستخدم نهائي للتطبيق، استخدِم Developer apps API.

نماذج

تستخدِم العيّنات التالية سياسة إبطال 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> تُحدِّد وقت بداية التوقيت العالمي المنسق بالملي ثانية. ويتم إبطال جميع الرموز المُصدَرة قبل ذلك الوقت.

يلغي المثال التالي رموز الوصول لتطبيق مطوّر تم إنشاؤه قبل 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 بالتوقيت العالمي المنسق.


مرجع العنصر

يصف مرجع العنصر العناصر والسمات الخاصة بسياسة RevokeOAuthV2.

<?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>

سمات <RevokeOAuthV2>

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

يصف الجدول التالي السمات الشائعة لجميع العناصر الرئيسية للسياسة:

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

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

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

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

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

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

خطأ اختياري
enabled

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

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

صحيح اختياري
async

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

خطأ منهي العمل به

عنصر <DisplayName>

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

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

لا ينطبق

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

التواجد في المنزل اختياري
النوع سلسلة

عنصر <AppId>

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

<AppId>appIdString</AppId>

or:

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

request.formparam.app_id (وهو تنسيق x-www-form-urlencoded محدّد في محتوى الطلب)

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

اختياري

النوع سلسلة
القيم الصالحة

إما متغيّر مسار يتضمّن سلسلة رقم تعريف تطبيق، أو سلسلة حرفية.

عنصر <Cascade>

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

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

خطأ

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

اختياري

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

عنصر <EndUserId>

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

<EndUserId>userIdString</EndUserId>

or:

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

request.formparam.enduser_id (وهو تنسيق x-www-form-urlencoded محدّد في محتوى الطلب)

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

اختياري

النوع سلسلة
القيم الصالحة

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

عنصر <RevokeBeforeTimestamp>

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

<RevokeBeforeTimestamp>timeStampString</RevokeBeforeTimestamp>

or:

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

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

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

اختياري

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

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

متغيّرات مسار الإحالة الناجحة

لا تضبط سياسة RevokeOAuthV2 متغيّرات عملية الربط.

مرجع الخطأ

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

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

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

رمز الخطأ رموز حالة 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>

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