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

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

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

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

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

نماذج

تستخدِم العيّنات التالية سياسة Revoke 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 بالتوقيت العالمي المتفق عليه.


مرجع العنصر

يصف مرجع العنصر عناصر وسمات سياسة 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 لتسمية السياسة في أداة تعديل وكيل واجهة مستخدم الإدارة باسم مختلف بلغة طبيعية.

<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 عند حدوث خطأ. يُرجى الاطّلاع على قسم &quot;متغيرات الخطأ&quot; أدناه لمعرفة المزيد من التفاصيل.

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

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