سياسة OAuthV2

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

الأدوات المستخدمة

‫OAuthV2 هي سياسة متعدّدة الأوجه لتنفيذ عمليات نوع منح OAuth 2.0. هذه هي السياسة الأساسية المستخدَمة لضبط نقاط نهاية OAuth 2.0 على Apigee Edge.

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

العيّنات

VerifyAccessToken

VerifyAccessToken

يتحقّق إعداد سياسة OAuthV2 هذا (باستخدام عملية VerifyAccessToken) من أنّ رمز الدخول الذي تم إرساله إلى Apigee Edge صالح. عندما يتم تشغيل عملية هذه السياسة، يبحث Edge عن رمز مميّز صالح للوصول في الطلب. إذا كان رمز الدخول صالحًا، يُسمح بتنفيذ الطلب. إذا كانت غير صالحة، يتم إيقاف جميع عمليات المعالجة ويتم عرض رسالة خطأ في الرد.

<OAuthV2 async="false" continueOnError="false" enabled="true" name="OAuth-v20-2">
    <DisplayName>OAuth v2.0 2</DisplayName>
    <Operation>VerifyAccessToken</Operation>
    <AccessTokenPrefix>Bearer</AccessTokenPrefix> <!-- Optional, default is Bearer -->
</OAuthV2>

ملاحظة: لا تتوافق سوى رموز OAuth 2.0 المميزة لحاملها. لا تتوافق الرموز المميزة لرمز مصادقة الرسائل (MAC).

على سبيل المثال:

$ curl -H "Authorization: Bearer ylSkZIjbdWybfsUQe9BqP0LH5Z" http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282

يقبل Edge تلقائيًا رموز الدخول في العنوان Authorization مع البادئة Bearer. يمكنك تغيير هذا الإعداد التلقائي باستخدام العنصر <AccessToken>.

GenerateAccessToken

إنشاء رموز الدخول

للاطّلاع على أمثلة توضّح كيفية طلب رموز الدخول لكل نوع من أنواع منح الأذونات المتوافقة، راجِع مقالة طلب رموز الدخول ورموز التفويض. يتضمّن الموضوع أمثلة على هذه العمليات:

GenerateAuthorizationCode

إنشاء رمز تفويض

للاطّلاع على أمثلة توضّح كيفية طلب رموز التفويض، يُرجى الاطّلاع على طلب رمز تفويض.

RefreshAccessToken

إعادة تحميل رمز دخول

للاطّلاع على أمثلة توضّح كيفية طلب رموز دخول باستخدام رمز مميز لإعادة التحميل، يُرجى الاطّلاع على إعادة تحميل رمز دخول.

الرمز المميز لتدفق الرد

إنشاء رمز دخول في مسار الرد

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

أولاً، لنلقِ نظرة على نموذج السياسة:

<OAuthV2 enabled="true" continueOnError="false" async="false" name="generateAccessToken">
    <Operation>GenerateAccessToken</Operation>
    <AppEndUser>Doe</AppEndUser>
    <UserName>jdoe</UserName>
    <PassWord>jdoe</PassWord>
    <GrantType>grant_type</GrantType>
    <ClientId>a_valid_client_id</ClientId>
    <SupportedGrantTypes>
        <GrantType>password</GrantType>
    </SupportedGrantTypes>
</OAuthV2>

إذا وضعت هذه السياسة في مسار الرد، ستتعذّر العملية بسبب ظهور الخطأ 401 UnAuthorized حتى إذا تم تحديد مَعلمات تسجيل الدخول الصحيحة في السياسة. لحلّ هذه المشكلة، عليك ضبط عنوان طلب التفويض.

يجب أن يحتوي عنوان Authorization على مخطط وصول أساسي مع client_id:client_secret بترميز Base64.

يمكنك إضافة هذا العنوان باستخدام سياسة JavaScript يتم وضعها قبل سياسة OAuthV2 مباشرةً، على النحو التالي. يجب ضبط المتغيّرَين "local_clientid" و "local_secret" مسبقًا وتوفيرهما في مسار العمل:

var client_id = context.getVariable("local_clientid");
var client_secret = context.getVariable("local_secret");
context.setVariable("request.header.Authorization","Basic "+CryptoJS.enc.Base64.stringify(CryptoJS.enc.Latin1
                                      .parse(client_id + ':' + client_secret)));

راجِع أيضًا ترميز بيانات اعتماد المصادقة الأساسية.

مرجع العنصر

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

سياسة النموذج الموضّحة أدناه هي أحد الإعدادات المحتملة العديدة. يوضّح هذا النموذج سياسة OAuthV2 تم إعدادها لعملية GenerateAccessToken. ويتضمّن عناصر مطلوبة واختيارية. يُرجى الرجوع إلى أوصاف العناصر في هذا القسم لمعرفة التفاصيل.

<OAuthV2 name="GenerateAccessToken">
  <!-- This policy generates an OAuth 2.0 access token using the client_credentials grant type -->
  <Operation>GenerateAccessToken</Operation>
  <!-- This is in millseconds, so expire in an hour -->
  <ExpiresIn>3600000</ExpiresIn>
  <SupportedGrantTypes>
    <GrantType>client_credentials</GrantType>
  </SupportedGrantTypes>
  <GrantType>request.queryparam.grant_type</GrantType>
  <GenerateResponse/>
</OAuthV2>

سمات <OAuthV2>

<OAuthV2 async="false" continueOnError="false" enabled="true" name="MyOAuthPolicy">

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

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

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

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

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

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

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

خطأ اختياري
enabled

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

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

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

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

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

&lt;DisplayName&gt; عنصر

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

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

لا ينطبق

إذا لم تستخدم هذا العنصر، سيتم ضبط قيمة السمة name للسياسة على النحو التالي: استخدام البيانات المختلفة.

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

العنصر <AccessToken>

<AccessToken>request.header.access_token</AccessToken>

تتوقّع الدالة VerifyAccessToken تلقائيًا إرسال رمز الدخول في العنوان Authorization. يمكنك تغيير هذا الإعداد التلقائي باستخدام هذا العنصر. على سبيل المثال، يشير request.queryparam.access_token إلى أنّه يجب توفير رمز الدخول كمعلَمة طلب بحث باسم access_token.

مثال يتم فيه تحديد <AccessToken>request.header.access_token</AccessToken>:

curl https://myorg-myenv.apigee.net/oauth2/validate -H "access_token:Rft3dqrs56Blirls56a"
مثال يتم فيه تحديد <AccessToken>request.queryparam.access_token</AccessToken>:

curl "https://myorg-myenv.apigee.net/oauth2/validate?access_token:Rft3dqrs56Blirls56a"

القيمة التلقائية:

لا ينطبق

الظهور:

اختياري

النوع: سلسلة
يُستخدَم مع العمليات التالية:
  • VerifyAccessToken

العنصر <AccessTokenPrefix>

<AccessTokenPrefix>Bearer</AccessTokenPrefix>

تتوقّع الدالة VerifyAccessToken تلقائيًا إرسال رمز الدخول في عنوان Authorization كرمز Bearer. على سبيل المثال:

-H "Authorization: Bearer Rft3dqrs56Blirls56a"

في الوقت الحالي، Bearer هو البادئة الوحيدة المتاحة.

القيمة التلقائية:

الحامل

الظهور:

اختياري

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

الحامل

يُستخدَم مع العمليات التالية:
  • VerifyAccessToken

عنصر <AppEndUser>

<AppEndUser>request.queryparam.app_enduser</AppEndUser>

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

على سبيل المثال، يشير request.queryparam.app_enduser إلى أنّه يجب توفير AppEndUser كمعلَمة طلب بحث، مثل ?app_enduser=ntesla@theramin.com. لطلب AppEndUser في عنوان HTTP، مثلاً، اضبط هذه القيمة على request.header.app_enduser.

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

القيمة التلقائية:

لا ينطبق

الظهور:

اختياري

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

أي متغير تدفّق يمكن للسياسة الوصول إليه في وقت التشغيل

يُستخدَم مع أنواع الأذونات التالية:
  • authorization_code
  • ضمني
  • كلمة المرور
  • client_credentials

<Attributes/Attribute>

<Attributes>
    <Attribute name="attr_name1" ref="flow.variable" display="true|false">value1</Attribute>
    <Attribute name="attr_name2" ref="flow.variable" display="true|false">value2</Attribute>
</Attributes>

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

يتيح لك هذا العنصر تحديد قيمة في متغيّر تدفّق أو من سلسلة حرفية. إذا حدّدت متغيّرًا وسلسلة، سيتم استخدام القيمة المحدّدة في متغيّر التدفق. إذا تعذّر تحليل المتغيّر، سيتم استخدام السلسلة التلقائية.

لمزيد من المعلومات عن استخدام هذا العنصر، راجِع تخصيص الرموز المميّزة ورموز التفويض.

عرض السمات المخصّصة أو إخفاؤها في الرد

تذكَّر أنّه في حال ضبط عنصر GenerateResponse لهذه السياسة على true، سيتم عرض تمثيل JSON الكامل للرمز المميز في الردّ، بما في ذلك أي سمات مخصّصة تحدّدها. في بعض الحالات، قد تحتاج إلى إخفاء بعض سماتك المخصّصة أو جميعها في الردّ حتى لا تظهر لتطبيقات العميل.

تظهر السمات المخصّصة في الردّ تلقائيًا. إذا أردت إخفاءها، يمكنك ضبط المَعلمة display على false. على سبيل المثال:

<Attributes>
    <Attribute name="employee_id" ref="employee.id" display="false"/>
    <Attribute name="employee_name" ref="employee.name" display="false"/>
</Attributes>

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

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

لإخفاء السمات المخصّصة في هذه الحالات، يمكنك اتّخاذ أحد الإجراءَين التاليَين:

  • أعِد ضبط السمات المخصّصة بشكل صريح في سياسة الرمز المميز لإعادة التحميل واضبط عرضها على "خطأ". في هذه الحالة، قد تحتاج إلى استرداد القيم المخصّصة الأصلية من رمز الدخول الأصلي باستخدام سياسة GetOAuthV2Info.
  • استخدِم سياسة JavaScript للمعالجة اللاحقة لاستخراج أي سمات مخصّصة لا تريد ظهورها في الردّ يدويًا.

راجِع أيضًا تخصيص الرموز المميّزة ورموز التفويض.

القيمة التلقائية:

N/A

الظهور:

اختياري

القيم الصالحة:
  • name - اسم السمة
  • ref: قيمة السمة يمكن أن تأتي من متغيّر في التدفق.
  • display - (اختياري) تتيح لك تحديد ما إذا كانت السمات المخصّصة ستظهر في الرد أم لا. إذا كانت القيمة true، ستظهر السمات المخصّصة في الرد (إذا كانت القيمة GenerateResponse مفعّلة أيضًا). إذا كانت القيمة false، لن يتم تضمين السمات المخصّصة في الرد. القيمة التلقائية هي true. اطّلِع على عرض السمات المخصّصة أو إخفاؤها في الرد.
يُستخدَم مع أنواع الأذونات التالية:
  • authorization_code
  • ضمني
  • كلمة المرور
  • client_credentials
  • refresh_token
  • يمكن استخدامه أيضًا مع عملية GenerateAuthorizationCode.

العنصر <ClientId>

<ClientId>request.formparam.client_id</ClientId>

في عدة حالات، يجب أن يرسل تطبيق العميل معرّف العميل إلى خادم التفويض. يحدّد هذا العنصر أنّ Apigee يجب أن يبحث عن معرّف العميل في متغيّر التدفق request.formparam.client_id. لا يمكن ضبط ClientId على أي متغيّر آخر. راجِع أيضًا طلب رموز مميّزة للوصول ورموز تفويض.

القيمة التلقائية:

request.formparam.client_id (a x-www-form-urlencoded and specified in the request body)

الظهور:

اختياري

النوع: سلسلة
القيم الصالحة: متغيّر التدفق: request.formparam.client_id
يُستخدَم مع أنواع الأذونات التالية:
  • authorization_code
  • كلمة المرور
  • ضمني
  • client_credentials

يمكن استخدامه أيضًا مع عملية GenerateAuthorizationCode.

العنصر <Code>

<Code>request.queryparam.code</Code>

في مسار نوع إذن التفويض، يجب أن يرسل العميل رمز تفويض إلى خادم التفويض (Apigee Edge). يتيح لك هذا العنصر تحديد المكان الذي يجب أن يبحث فيه Edge عن رمز التفويض. على سبيل المثال، يمكن إرسالها كمعلَمة طلب بحث أو عنوان HTTP أو معلَمة نموذج (الإعداد التلقائي).

يشير المتغيّر request.queryparam.auth_code إلى أنّه يجب توفير رمز التفويض كمعلَمة طلب بحث، مثل ?auth_code=AfGlvs9. لطلب رمز التفويض في عنوان HTTP، مثلاً، اضبط هذه القيمة على request.header.auth_code. راجِع أيضًا طلب رموز الدخول ورموز التفويض.

القيمة التلقائية:

request.formparam.code (a x-www-form-urlencoded and specified in the request body)

الظهور:

اختياري

النوع: سلسلة
القيم الصالحة: أي متغيّر في التدفق يمكن للسياسة الوصول إليه في وقت التشغيل
يُستخدَم مع أنواع الأذونات التالية: authorization_code

عنصر <ExpiresIn>

<ExpiresIn>10000</ExpiresIn>

يفرض وقت انتهاء صلاحية رموز الدخول ورموز التفويض بالملّي ثانية. (بالنسبة إلى رموز التحديث، استخدِم <RefreshTokenExpiresIn>.) قيمة وقت انتهاء الصلاحية هي قيمة من إنشاء النظام بالإضافة إلى قيمة <ExpiresIn>. إذا تم ضبط <ExpiresIn> على -1، تنتهي صلاحية الرمز المميز أو الرمز وفقًا لأقصى مدة انتهاء صلاحية لرمز الدخول عبر OAuth. في حال عدم تحديد <ExpiresIn>، يطبّق النظام قيمة تلقائية تم ضبطها على مستوى النظام.

يمكن أيضًا ضبط وقت انتهاء الصلاحية في وقت التشغيل باستخدام قيمة تلقائية مبرمَجة أو من خلال الإشارة إلى متغيّر تدفّق. على سبيل المثال، يمكنك تخزين قيمة انتهاء صلاحية الرمز المميّز في خريطة قيم مفاتيح، واستردادها، وتعيينها لمتغيّر، والإشارة إليها في السياسة. على سبيل المثال: kvm.oauth.expires_in.

باستخدام Apigee Edge للسحابة الإلكترونية العامة، يحتفظ Edge بالكيانات التالية في ذاكرة التخزين المؤقت لمدة 180 ثانية على الأقل بعد الوصول إلى الكيانات.

  • رموز الدخول عبر OAuth وهذا يعني أنّه قد ينجح استخدام رمز مميّز تم إبطاله لمدة تصل إلى ثلاث دقائق، إلى أن تنتهي مدة صلاحية الحد الأقصى لذاكرته المؤقتة.
  • كيانات خدمة إدارة المفاتيح (KMS) (التطبيقات والمطوّرون ومنتجات واجهة برمجة التطبيقات)
  • سمات مخصّصة لرموز OAuth المميزة وعناصر KMS

يحدّد المقطع التالي متغيّر تدفّق وقيمة تلقائية أيضًا. يُرجى العِلم أنّ قيمة المتغيّر في التدفق لها الأولوية على القيمة التلقائية المحدّدة.

<ExpiresIn ref="kvm.oauth.expires_in">
    3600000 <!--default value in milliseconds-->
</ExpiresIn>

لا يتيح Edge طريقة لفرض انتهاء صلاحية الرمز المميز بعد إنشائه. إذا كنت بحاجة إلى فرض انتهاء صلاحية الرمز المميّز (على سبيل المثال، استنادًا إلى شرط معيّن)، يمكنك الاطّلاع على حلّ محتمل في منشور &quot;منتدى Apigee&quot; هذا.

يتم تلقائيًا إزالة رموز الدخول المميزة المنتهية الصلاحية من نظام Apigee Edge بعد 3 أيام من انتهاء صلاحيتها. اطّلِع أيضًا على إبطال رموز الدخول.

السحابة الإلكترونية الخاصة: عند تثبيت Edge for Private Cloud، يتم ضبط القيمة التلقائية من خلال السمة conf_keymanagement_oauth_auth_code_expiry_time_in_millis. لضبط هذه السمة، اتّبِع الخطوات التالية:

  1. افتح ملف message-processor.properties في محرِّر. إذا لم يكن الملف متوفّرًا، أنشِئه باتّباع الخطوات التالية:
    vi /opt/apigee/customer/application/message-processor.properties
  2. اضبط السمة على النحو المطلوب:
    conf_keymanagement_oauth_auth_code_expiry_time_in_millis=3600000
  3. تأكَّد من أنّ ملف الخصائص يملكه المستخدم "apigee":
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
  4. أعِد تشغيل "معالج الرسائل".
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

القيمة التلقائية:

في حال عدم تحديدها، يطبّق النظام قيمة تلقائية تم ضبطها على مستوى النظام.

الظهور:

اختياري

النوع: عدد صحيح
القيم الصالحة:
يُستخدَم مع أنواع الأذونات التالية:
  • authorization_code
  • ضمني
  • كلمة المرور
  • client_credentials
  • refresh_token

يُستخدَم أيضًا مع عملية GenerateAuthorizationCode.

العنصر <ExternalAccessToken>

<ExternalAccessToken>request.queryparam.external_access_token</ExternalAccessToken>

تُعلم هذه السمة Apigee Edge بمكان العثور على رمز دخول خارجي (أي رمز دخول لم يتم إنشاؤه بواسطة Apigee Edge).

يشير المتغيّر request.queryparam.external_access_token إلى أنّه يجب توفير رمز الدخول الخارجي كمعلَمة طلب بحث، مثل ?external_access_token=12345678. لطلب رمز الدخول الخارجي في عنوان HTTP، مثلاً، اضبط هذه القيمة على request.header.external_access_token. يُرجى الاطّلاع أيضًا على استخدام الرموز المميزة لبروتوكول OAuth التابع لجهات خارجية.

العنصر <ExternalAuthorization>

<ExternalAuthorization>true</ExternalAuthorization>

إذا كانت قيمة هذا العنصر هي false أو لم يكن العنصر متوفّرًا، يتحقّق Edge من صحة client_id وclient_secret بشكل عادي من خلال مخزن تفويض Apigee Edge. استخدِم هذا العنصر عندما تريد العمل مع رموز OAuth المميزة التابعة لجهات خارجية. للحصول على تفاصيل حول استخدام هذا العنصر، يُرجى الاطّلاع على استخدام الرموز المميزة لبروتوكول OAuth التابعة لجهات خارجية.

القيمة التلقائية:

خطأ

الظهور:

اختياري

النوع: منطقي
القيم الصالحة: صواب أم خطأ
يُستخدَم مع أنواع الأذونات التالية:
  • authorization_code
  • كلمة المرور
  • client_credentials

العنصر <ExternalAuthorizationCode>

<ExternalAuthorizationCode>request.queryparam.external_auth_code</ExternalAuthorizationCode>

تحدّد هذه السمة المكان الذي يمكن فيه العثور على رمز مصادقة خارجي (أي رمز مصادقة لم يتم إنشاؤه بواسطة Apigee Edge).

يشير المتغيّر request.queryparam.external_auth_code إلى أنّه يجب توفير رمز المصادقة الخارجي كمَعلمة طلب بحث، مثل ?external_auth_code=12345678. لطلب رمز المصادقة الخارجية في عنوان HTTP، مثلاً، اضبط هذه القيمة على request.header.external_auth_code. يُرجى الاطّلاع أيضًا على استخدام الرموز المميزة لبروتوكول OAuth التابع لجهات خارجية.

العنصر <ExternalRefreshToken>

<ExternalRefreshToken>request.queryparam.external_refresh_token</ExternalRefreshToken>

تُستخدَم لتحديد المكان الذي يمكن أن يعثر فيه Apigee Edge على رمز مميز خارجي لإعادة التحميل (أي رمز مميز لإعادة التحميل لم يتم إنشاؤه بواسطة Apigee Edge).

يشير العنصر المتغيّر request.queryparam.external_refresh_token إلى أنّه يجب توفير رمز مميّز لإعادة التحميل من مصدر خارجي كمَعلمة طلب بحث، مثل ?external_refresh_token=12345678. لفرض استخدام الرمز المميز لإعادة التحميل الخارجي في عنوان HTTP، مثلاً، اضبط هذه القيمة على request.header.external_refresh_token. يُرجى الاطّلاع أيضًا على استخدام الرموز المميزة لبروتوكول OAuth التابع لجهات خارجية.

العنصر <GenerateResponse>

<GenerateResponse enabled='true'/>

إذا تم ضبطها على true، ستنشئ السياسة ردًا وتعرضه. على سبيل المثال، بالنسبة إلى GenerateAccessToken، قد يكون الردّ على النحو التالي:

{
  "issued_at" : "1467841035013",
  "scope" : "read",
  "application_name" : "e31b8d06-d538-4f6b-9fe3-8796c11dc930",
  "refresh_token_issued_at" : "1467841035013",
  "status" : "approved",
  "refresh_token_status" : "approved",
  "api_product_list" : "[Product1, nhl_product]",
  "expires_in" : "1799",
  "developer.email" : "edward@slalom.org",
  "token_type" : "BearerToken",
  "refresh_token" : "rVSmm3QaNa0xBVFbUISz1NZI15akvgLJ",
  "client_id" : "Adfsdvoc7KX5Gezz9le745UEql5dDmj",
  "access_token" : "AnoHsh2oZ6EFWF4h0KrA0gC5og3a",
  "organization_name" : "cerruti",
  "refresh_token_expires_in" : "0",
  "refresh_count" : "0"
}

إذا كانت القيمة false، لن يتم إرسال أي رد. بدلاً من ذلك، يتم ملء مجموعة من متغيّرات التدفق بقيم ذات صلة بوظيفة السياسة. على سبيل المثال، يتم ملء متغيّر التدفق المسمّى oauthv2authcode.OAuthV2-GenerateAuthorizationCode.code برمز المصادقة الذي تم إنشاؤه حديثًا. يُرجى العِلم أنّ قيمة expires_in يتم التعبير عنها بالثواني في الرد.

القيمة التلقائية:

خطأ

الظهور:

اختياري

النوع: سلسلة
القيم الصالحة: صواب أم خطأ
يُستخدَم مع أنواع الأذونات التالية:
  • ضمني
  • كلمة المرور
  • client_credentials
  • refresh_token
  • يمكن أيضًا استخدامها مع عملية GenerateAuthorizationCode.

العنصر <GenerateErrorResponse>

<GenerateErrorResponse enabled='true'/>

في حال ضبطها على true، ستنشئ السياسة ردًا وتعرضه إذا تم ضبط السمة ContinueOnError على "صحيح". إذا كانت القيمة false (القيمة التلقائية)، لن يتم إرسال أي استجابة. بدلاً من ذلك، يتمّ ملء مجموعة من متغيّرات التدفق بقيم ذات صلة بوظيفة السياسة.

القيمة التلقائية:

خطأ

الظهور:

اختياري

النوع: سلسلة
القيم الصالحة: صواب أم خطأ
يُستخدَم مع أنواع الأذونات التالية:
  • ضمني
  • كلمة المرور
  • client_credentials
  • refresh_token
  • يمكن أيضًا استخدامها مع عملية GenerateAuthorizationCode.

<GrantType>

<GrantType>request.queryparam.grant_type</GrantType>

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

على سبيل المثال، يشير request.queryparam.grant_type إلى أنّه يجب توفير كلمة المرور كمعلَمة طلب بحث، مثل ?grant_type=password. لطلب نوع الإذن في عنوان HTTP، مثلاً، اضبط هذه القيمة على request.header.grant_type. راجِع أيضًا طلب رموز مميّزة للوصول ورموز تفويض.

القيمة التلقائية:

request.formparam.grant_type (a x-www-form-urlencoded and specified in the request body)

الظهور:

اختياري

النوع: سلسلة
القيم الصالحة: متغيّر، كما هو موضّح أعلاه
يُستخدَم مع أنواع الأذونات التالية:
  • authorization_code
  • كلمة المرور
  • ضمني
  • client_credentials
  • refresh_token

عنصر <Operation>

<Operation>GenerateAuthorizationCode</Operation>

عملية OAuth 2.0 التي تنفّذها السياسة

القيمة التلقائية:

إذا لم يتم تحديد <Operation>، سيبحث Edge في قائمة <SupportedGrantTypes>. ولن تنجح إلا العمليات التي تستخدم أنواع الأذونات هذه. بعبارة أخرى، يمكنك حذف <Operation> إذا حدّدت <GrantType> في قائمة <SupportedGrantTypes>. إذا لم يتم تحديد أي من <Operation> أو <SupportedGrantTypes>، سيكون نوع منح الإذن التلقائي هو authorization_code. أي أنّ طلبات نوع المنح authorization_code ستنجح، ولكن ستتعذّر جميع الطلبات الأخرى.

الظهور:

اختياري

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

العنصر <PassWord>

<PassWord>request.queryparam.password</PassWord>

يتم استخدام هذا العنصر مع نوع منح الإذن بكلمة المرور فقط. باستخدام نوع منح كلمة المرور، يجب توفير بيانات اعتماد المستخدم (كلمة المرور واسم المستخدم) لسياسة OAuthV2. يتم استخدام العنصرَين <PassWord> و<UserName> لتحديد المتغيرات التي يمكن أن يعثر فيها Edge على هذه القيم. في حال عدم تحديد هذه العناصر، تتوقّع السياسة العثور على القيم (تلقائيًا) في مَعلمات النموذج التي تحمل الاسمَين username وpassword. إذا لم يتم العثور على القيم، ستعرض السياسة خطأً. يمكنك استخدام العنصرَين <PassWord> و<UserName> للإشارة إلى أي متغيّر تدفق يحتوي على بيانات الاعتماد.

على سبيل المثال، يمكنك تمرير كلمة المرور في طلب رمز مميّز باستخدام مَعلمة طلب البحث وتعيين العنصر على النحو التالي: <PassWord>request.queryparam.password</PassWord>. لطلب كلمة المرور في عنوان HTTP، اضبط هذه القيمة على request.header.password.

لا تفعل سياسة OAuthV2 أي شيء آخر باستخدام قيم بيانات الاعتماد هذه، بل يتحقّق Edge ببساطة من توفّرها. يقع على مطوّر واجهة برمجة التطبيقات مسؤولية استرداد قيم الطلب وإرسالها إلى موفّر خدمة تحديد الهوية قبل تنفيذ سياسة إنشاء الرمز المميز.

راجِع أيضًا طلب رموز الدخول ورموز التفويض.

القيمة التلقائية:

request.formparam.password (a x-www-form-urlencoded and specified in the request body)

الظهور:

اختياري

النوع: سلسلة
القيم الصالحة: أي متغير تدفّق متاح للسياسة في وقت التشغيل
يُستخدَم مع أنواع الأذونات التالية: كلمة المرور

العنصر <RedirectUri>

<RedirectUri>request.queryparam.redirect_uri</RedirectUri>

تحدّد هذه السمة المكان الذي يجب أن يبحث فيه Edge عن المَعلمة redirect_uri في الطلب.

لمحة عن معرّفات الموارد المنتظمة (URI) الخاصة بإعادة التوجيه

يتم استخدام معرّفات الموارد المنتظمة لإعادة التوجيه مع رمز التفويض وأنواع منح الإذن الضمني. يحدّد معرّف الموارد المنتظم لإعادة التوجيه الخادم المفوّض (Edge) الذي سيتم إرسال رمز التفويض إليه (لنظام منح رمز التفويض) أو رمز الدخول (لنظام المنح الضمني). من المهم معرفة الحالات التي تكون فيها هذه المَعلمة مطلوبة والحالات التي تكون فيها اختيارية وكيفية استخدامها:

  • (مطلوب) إذا تم تسجيل عنوان URL لبرنامج معالجة ردّ الاتصال مع تطبيق المطوّر المرتبط بمفاتيح العميل الخاصة بالطلب، وإذا كان redirect_uri متوفّرًا في الطلب، يجب أن يتطابق العنوانان تمامًا. في حال عدم التطابق، سيتم عرض رسالة خطأ. للحصول على معلومات حول تسجيل تطبيقات المطوّرين على Edge وتحديد عنوان URL لبرنامج معالجة، راجِع تسجيل التطبيقات وإدارة مفاتيح واجهة برمجة التطبيقات.

  • (اختياري) في حال تسجيل عنوان URL لبرنامج معالجة، ولم يتم تضمين redirect_uri في الطلب، يعيد Edge التوجيه إلى عنوان URL لبرنامج المعالجة المسجَّل.
  • (مطلوبة) إذا لم يتم تسجيل عنوان URL لبرنامج معالجة، يجب إدخال redirect_uri. يُرجى العِلم أنّه في هذه الحالة، سيقبل متصفّح Edge أي عنوان URL. يمكن أن تتسبّب هذه الحالة في حدوث مشكلة أمنية، لذلك يجب استخدامها فقط مع تطبيقات العميل الموثوق بها. إذا لم تكن تطبيقات العميل موثوقة، فإنّ أفضل ممارسة هي دائمًا اشتراط تسجيل عنوان URL لبرنامج معالجة.

يمكنك إرسال هذه المَعلمة في مَعلمة طلب بحث أو في عنوان. يشير المتغيّر request.queryparam.redirect_uri إلى أنّه يجب أن يكون RedirectUri متوفّرًا كمعلَمة طلب بحث، مثل ?redirect_uri=login.myapp.com. لفرض استخدام RedirectUri في عنوان HTTP، مثلاً، اضبط هذه القيمة على request.header.redirect_uri. راجِع أيضًا طلب رموز الدخول ورموز التفويض.

القيمة التلقائية:

request.formparam.redirect_uri (a x-www-form-urlencoded and specified in the request body)

الظهور:

اختياري

النوع: سلسلة
القيم الصالحة: أي متغير تدفّق يمكن الوصول إليه في السياسة أثناء وقت التشغيل
يُستخدَم مع أنواع الأذونات التالية:
  • authorization_code
  • ضمني

يُستخدَم أيضًا مع عملية GenerateAuthorizationCode.

العنصر <RefreshToken>

<RefreshToken>request.queryparam.refreshtoken</RefreshToken>

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

يشير المتغيّر request.queryparam.refreshtoken إلى أنّه يجب أن تظهر الرمز المميز لإعادة التحميل كمعلَمة طلب بحث، مثل ?refresh_token=login.myapp.com. لطلب RefreshToken في عنوان HTTP، مثلاً، اضبط هذه القيمة على request.header.refresh_token. راجِع أيضًا طلب رموز الدخول ورموز التفويض.

القيمة التلقائية:

request.formparam.refresh_token (a x-www-form-urlencoded and specified in the request body)

الظهور:

اختياري

النوع: سلسلة
القيم الصالحة: أي متغير تدفّق يمكن الوصول إليه في السياسة أثناء وقت التشغيل
يُستخدَم مع أنواع الأذونات التالية:
  • refresh_token

العنصر <RefreshTokenExpiresIn>

<RefreshTokenExpiresIn>1000</RefreshTokenExpiresIn>

يفرض وقت انتهاء صلاحية رموز الدخول المميز بالمللي ثانية. قيمة وقت انتهاء الصلاحية هي قيمة من إنشاء النظام بالإضافة إلى القيمة <RefreshTokenExpiresIn>. إذا تم ضبط قيمة <RefreshTokenExpiresIn> على -1، تنتهي صلاحية رمز إعادة التحميل وفقًا للمدة القصوى لانتهاء صلاحية رمز إعادة تحميل OAuth. في حال عدم تحديد <RefreshTokenExpiresIn>، يطبّق النظام قيمة تلقائية تم ضبطها على مستوى النظام. يُرجى التواصل مع فريق دعم Apigee Edge للحصول على مزيد من المعلومات حول إعدادات النظام التلقائية.

يمكن أيضًا ضبط وقت انتهاء الصلاحية في وقت التشغيل باستخدام قيمة تلقائية مبرمَجة أو من خلال الإشارة إلى متغيّر تدفّق. على سبيل المثال، يمكنك تخزين قيمة انتهاء صلاحية الرمز المميّز في خريطة قيم مفاتيح، واستردادها، وتعيينها لمتغيّر، والإشارة إليها في السياسة. على سبيل المثال، kvm.oauth.expires_in.

يحدّد المقطع التالي متغيّر تدفّق وقيمة تلقائية أيضًا. يُرجى العِلم أنّ قيمة المتغيّر flow لها الأولوية على القيمة التلقائية المحدّدة.

<RefreshTokenExpiresIn ref="kvm.oauth.expires_in">
    3600000 <!--default value in milliseconds-->
</RefreshTokenExpiresIn>

السحابة الإلكترونية الخاصة: عند تثبيت Edge for Private Cloud، يتم ضبط القيمة التلقائية من خلال السمة conf_keymanagement_oauth_refresh_token_expiry_time_in_millis. لضبط هذه السمة، اتّبِع الخطوات التالية:

  1. افتح ملف message-processor.properties في محرِّر. إذا لم يكن الملف متوفّرًا، أنشِئه باتّباع الخطوات التالية:
    vi /opt/apigee/customer/application/message-processor.properties
  2. اضبط السمة على النحو المطلوب:
    conf_keymanagement_oauth_refresh_token_expiry_time_in_millis=3600000
  3. تأكَّد من أنّ ملف الخصائص يملكه المستخدم "apigee":
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
  4. أعِد تشغيل "معالج الرسائل".
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

القيمة التلقائية:

‫63072000000 مللي ثانية (عامان) (اعتبارًا من 5 أغسطس 2024)

الظهور:

اختياري

النوع: عدد صحيح
القيم الصالحة:
يُستخدَم مع أنواع الأذونات التالية:
  • authorization_code
  • كلمة المرور
  • refresh_token

عنصر <ResponseType>

<ResponseType>request.queryparam.response_type</ResponseType>

يُعلم هذا العنصر Edge بنوع الإذن الذي يطلبه تطبيق العميل. ويتم استخدامها فقط مع مسارات رمز التفويض ونوع منح الإذن الضمني.

يبحث Edge تلقائيًا عن قيمة نوع الاستجابة في مَعلمة طلب بحث response_type. إذا أردت إلغاء هذا السلوك التلقائي، استخدِم العنصر <ResponseType> لضبط متغيّر سير عمل يحتوي على قيمة نوع الاستجابة. على سبيل المثال، إذا ضبطت هذا العنصر على request.header.response_type، سيبحث Edge عن نوع الاستجابة المطلوب تمريره في عنوان الطلب. راجِع أيضًا طلب رموز مميّزة للوصول ورموز تفويض.

القيمة التلقائية:

request.formparam.response_type (a x-www-form-urlencoded and specified in the request body)

الظهور:

اختيارية: استخدِم هذا العنصر إذا أردت إلغاء السلوك التلقائي.

النوع: سلسلة
القيم الصالحة: إما code (لنوع منح الإذن برمز التفويض) أو token (لنوع منح الإذن الضمني)
يُستخدَم مع أنواع الأذونات التالية:
  • ضمني
  • يُستخدَم أيضًا مع عملية GenerateAuthorizationCode.

العنصر <ReuseRefreshToken>

<ReuseRefreshToken>true</ReuseRefreshToken>

عند ضبطها على true، تتم إعادة استخدام الرمز المميّز الحالي لإعادة التحميل إلى أن تنتهي صلاحيته. إذا كانت قيمة false، سيصدر Apigee Edge رمزًا مميّزًا جديدًا لإعادة التحميل عند تقديم رمز مميّز صالح لإعادة التحميل.

القيمة التلقائية:

false

الظهور:

اختياري

النوع: قيمة منطقية
القيم الصالحة:

true أو false

يُستخدَم مع نوع الإذن:
  • refresh_token

العنصر <Scope>

<Scope>request.queryparam.scope</Scope>

إذا كان هذا العنصر متوفّرًا في إحدى سياستي GenerateAccessToken أو GenerateAuthorizationCode، يتم استخدامه لتحديد النطاقات التي سيتم منح الرمز المميّز أو الرمز لها. يتم عادةً تمرير هذه القيم إلى السياسة في الطلب من تطبيق عميل. يمكنك ضبط العنصر لقبول متغيّر سير العمل، ما يتيح لك اختيار طريقة تمرير النطاقات في الطلب. في المثال التالي، يشير request.queryparam.scope إلى أنّه يجب أن يكون النطاق متوفّرًا كمعلَمة طلب بحث، مثل ?scope=READ. لطلب النطاق في عنوان HTTP، مثلاً، اضبط هذه القيمة على request.header.scope.

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

<Scope>A B</Scope>

اطّلِع أيضًا على العمل مع نطاقات OAuth2 وطلب رموز الدخول ورموز التفويض.

القيمة التلقائية:

ما مِن نطاق

الظهور:

اختياري

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

إذا تم استخدامها مع سياسات Generate*، تكون متغيّرًا في سير العمل.

في حال استخدامها مع VerifyAccessToken، تكون قائمة بأسماء النطاقات (سلاسل) مفصولة بمسافات.

يُستخدَم مع أنواع الأذونات التالية:
  • authorization_code
  • ضمني
  • كلمة المرور
  • client_credentials
  • يمكن استخدامها أيضًا مع عمليتَي GenerateAuthorizationCode وVerifyAccessToken.

العنصر <State>

<State>request.queryparam.state</State>

في الحالات التي يجب أن يرسل فيها تطبيق العميل معلومات الحالة إلى خادم التفويض، يتيح لك هذا العنصر تحديد المكان الذي يجب أن تبحث فيه Edge عن قيم الحالة. على سبيل المثال، يمكن إرسالها كمَعلمة طلب بحث أو في عنوان HTTP. تُستخدَم قيمة الحالة عادةً كإجراء أمان لمنع هجمات CSRF.

على سبيل المثال، يشير request.queryparam.state إلى أنّه يجب أن تكون الحالة موجودة كمعلَمة طلب بحث، مثل ?state=HjoiuKJH32. لفرض تضمين الولاية في عنوان HTTP، مثلاً، اضبط هذه القيمة على request.header.state. راجِع أيضًا طلب رموز مميّزة للوصول ورموز تفويض.

القيمة التلقائية:

ما مِن ولايات

الظهور:

اختياري

النوع: سلسلة
القيم الصالحة: أي متغيّر في التدفق يمكن للسياسة الوصول إليه في وقت التشغيل
يُستخدَم مع أنواع الأذونات التالية:
  • الكل
  • يمكن استخدامه أيضًا مع عملية GenerateAuthorizationCode

العنصر <StoreToken>

 <StoreToken>true</StoreToken>

اضبط هذا العنصر على true عندما يكون العنصر <ExternalAuthorization> true. يخبر العنصر <StoreToken> Apigee Edge بتخزين رمز الدخول الخارجي. وإلا لن يتم الاحتفاظ بها.

القيمة التلقائية:

خطأ

الظهور:

اختياري

النوع: منطقي
القيم الصالحة: صواب أم خطأ
يُستخدَم مع أنواع الأذونات التالية:
  • authorization_code
  • كلمة المرور
  • client_credentials

العنصر <SupportedGrantTypes>/<GrantType>

<SupportedGrantTypes>
    <GrantType>authorization_code</GrantType>
    <GrantType>client_credentials</GrantType>
    <GrantType>implicit</GrantType>
    <GrantType>password</GrantType>
</SupportedGrantTypes>

تحدّد هذه السمة أنواع الأذونات التي توفّرها نقطة نهاية رمز OAuth المميز على Apigee Edge. يمكن أن تتيح نقطة النهاية أنواعًا متعددة من منح الأذونات (أي يمكن ضبط نقطة نهاية واحدة لتوزيع رموز الدخول لأنواع متعددة من منح الأذونات). لمزيد من المعلومات عن نقاط النهاية، يُرجى الاطّلاع على التعرّف على نقاط نهاية OAuth. يتم تمرير نوع الإذن في طلبات الرمز المميّز في المَعلمة grant_type.

في حال عدم تحديد أي أنواع أذونات متوافقة، سيكون نوعا الأذونات المسموح بهما هما authorization_code وimplicit فقط. راجِع أيضًا العنصر <GrantType> (وهو عنصر ذو مستوى أعلى يُستخدَم لتحديد المكان الذي يجب أن يبحث فيه Apigee Edge عن المَعلمة grant_type التي يتم تمريرها في طلب العميل. سيحرص Edge على أن تتطابق قيمة المَعلمة grant_type مع أحد أنواع منح الإذن المتاحة).

القيمة التلقائية:

رمز التفويض والضمني

الظهور:

مطلوب

النوع: سلسلة
القيم الصالحة:
  • client_credentials
  • authorization_code
  • كلمة المرور
  • ضمني

العنصر <Tokens>/<Token>

يُستخدَم مع عمليتَي ValidateToken وInvalidateToken. راجِع أيضًا الموافقة على رموز الدخول وإبطالها. يحدّد العنصر <Token> متغيّر التدفق الذي يحدّد مصدر الرمز المميّز المطلوب إبطاله. إذا كان من المتوقّع أن يرسل المطوّرون رموز الدخول كمعلَمات طلب بحث تحمل الاسم access_token، على سبيل المثال، استخدِم request.queryparam.access_token.

العنصر <UserName>

<UserName>request.queryparam.user_name</UserName>

يتم استخدام هذا العنصر مع نوع منح الإذن بكلمة المرور فقط. باستخدام نوع منح كلمة المرور، يجب توفير بيانات اعتماد المستخدم (كلمة المرور واسم المستخدم) لسياسة OAuthV2. يتم استخدام العنصرَين <PassWord> و<UserName> لتحديد المتغيرات التي يمكن أن يعثر فيها Edge على هذه القيم. في حال عدم تحديد هذه العناصر، تتوقّع السياسة العثور على القيم (تلقائيًا) في مَعلمات النموذج التي تحمل الاسمَين username وpassword. إذا لم يتم العثور على القيم، ستعرض السياسة خطأً. يمكنك استخدام العنصرَين <PassWord> و<UserName> للإشارة إلى أي متغيّر تدفق يحتوي على بيانات الاعتماد.

على سبيل المثال، يمكنك تمرير اسم المستخدم في مَعلمة طلب بحث وضبط العنصر <UserName> على النحو التالي: <UserName>request.queryparam.username</UserName>.لطلب اسم المستخدم في عنوان HTTP، اضبط هذه القيمة على request.header.username.

لا تفعل سياسة OAuthV2 أي شيء آخر باستخدام قيم بيانات الاعتماد هذه، بل يتحقّق Edge ببساطة من توفّرها. يقع على مطوّر واجهة برمجة التطبيقات مسؤولية استرداد قيم الطلب وإرسالها إلى موفّر خدمة تحديد الهوية قبل تنفيذ سياسة إنشاء الرمز المميز.

راجِع أيضًا طلب رموز الدخول ورموز التفويض.

القيمة التلقائية:

request.formparam.username (a x-www-form-urlencoded and specified in the request body)

الظهور:

اختياري

النوع: سلسلة
القيم الصالحة: أي إعداد متغيّر
يُستخدَم مع أنواع الأذونات التالية: كلمة المرور

التحقّق من صحة رموز الدخول

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

على سبيل المثال، لضمان الموافقة على جميع الطلبات المرسَلة إلى واجهة برمجة تطبيقات، تفرض السياسة التالية التحقّق من صحة رمز الدخول:

<OAuthV2 name="VerifyOAuthAccessToken">
  <Operation>VerifyAccessToken</Operation>
</OAuthV2>

يتم ربط السياسة بمورد واجهة برمجة التطبيقات المطلوب حمايته. لضمان التحقّق من جميع الطلبات الموجّهة إلى واجهة برمجة التطبيقات، أرفِق السياسة بطلب PreFlow الخاص بـ ProxyEndpoint، على النحو التالي:

<PreFlow>
  <Request>
    <Step><Name>VerifyOAuthAccessToken</Name></Step>
  </Request>
</PreFlow>

يمكن استخدام العناصر الاختيارية التالية لتجاوز الإعدادات التلقائية لعملية VerifyAccessToken.

الاسم الوصف
النطاق

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

<OAuthV2 name="ValidateOauthScopePolicy">
  <Operation>VerifyAccessToken</Operation>
  <Scope>READ WRITE</Scope>
</OAuthV2>
AccessToken المتغيّر الذي يُتوقّع أن يكون رمز الدخول فيه. على سبيل المثال request.queryparam.accesstoken. بشكلٍ تلقائي، من المتوقّع أن يقدّم التطبيق رمز الدخول في عنوان HTTP الخاص بالتفويض، وذلك وفقًا لمواصفات OAuth 2.0. استخدِم هذا الإعداد إذا كان من المتوقّع أن يتم عرض رمز الدخول في موقع غير عادي، مثل مَعلمة طلب بحث أو عنوان HTTP باسم آخر غير "تفويض".

راجِع أيضًا تأكيد رموز الدخول وطلب رموز الدخول ورموز التفويض.

تحديد مواقع متغيّرات الطلب

بالنسبة إلى كل نوع من أنواع منح الإذن، تضع السياسة افتراضات بشأن الموقع الجغرافي أو المعلومات المطلوبة في رسائل الطلبات. تستند هذه الافتراضات إلى مواصفات OAuth 2.0. إذا كانت تطبيقاتك بحاجة إلى الانحراف عن مواصفات OAuth 2.0، يمكنك تحديد المواقع الجغرافية المتوقّعة لكل مَعلمة. على سبيل المثال، عند التعامل مع رمز تفويض، يمكنك تحديد موقع رمز التفويض ومعرّف العميل ومعرّف الموارد المنتظم (URI) الخاص بإعادة التوجيه والنطاق. ويمكن تحديدها كعناوين HTTP أو مَعلمات طلب البحث أو مَعلمات النموذج.

يوضّح المثال أدناه كيف يمكنك تحديد موقع مَعلمات رمز التفويض المطلوب كعناوين HTTP:

  ...
  <GrantType>request.header.grant_type</GrantType>
  <Code>request.header.code</Code>
  <ClientId>request.header.client_id</ClientId>
  <RedirectUri>request.header.redirect_uri</RedirectUri>
  <Scope>request.header.scope</Scope>
  ...

أو، إذا كان ذلك ضروريًا لدعم قاعدة تطبيقات العملاء، يمكنك الجمع بين العناوين ومَعلمات طلب البحث:

  ...
  <GrantType>request.header.grant_type</GrantType>
  <Code>request.header.code</Code>
  <ClientId>request.queryparam.client_id</ClientId>
  <RedirectUri>request.queryparam.redirect_uri</RedirectUri>
  <Scope>request.queryparam.scope</Scope>
  ...

يمكن ضبط موقع جغرافي واحد فقط لكل مَعلمة.

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

يتم ملء متغيرات التدفق المحددة في هذا الجدول عند تنفيذ سياسات OAuth المعنية، وبالتالي تكون متاحة للسياسات أو التطبيقات الأخرى التي يتم تنفيذها في تدفق خادم وكيل API.

عملية VerifyAccessToken

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

المتغيّرات الخاصة بالرمز المميّز

المتغيّرات الوصف
organization_name اسم المؤسسة التي يتم فيها تنفيذ الخادم الوكيل.
developer.id معرّف المطوّر المرتبط بتطبيق العميل المسجّل.
developer.app.name اسم المطوّر المرتبط بتطبيق العميل المسجَّل
client_id معرّف العميل لتطبيق العميل المسجَّل
grant_type نوع الإذن المرتبط بالطلب.
token_type نوع الرمز المميز المرتبط بالطلب.
access_token رمز الدخول الذي يتم التحقّق منه
accesstoken.{custom_attribute} سمة مخصّصة مسماة في رمز الدخول
issued_at تاريخ إصدار رمز الدخول معبَّرًا عنه بتوقيت يونكس بالملّي ثانية
expires_in تمثّل هذه السمة وقت انتهاء صلاحية رمز الدخول. ويتم التعبير عنها بالثواني. على الرغم من أنّ العنصر ExpiresIn يضبط تاريخ انتهاء الصلاحية بالملّي ثانية، يتم التعبير عن القيمة بالثواني في استجابة الرمز المميز ومتغيرات التدفق.
status حالة رمز الدخول (مثل تمت الموافقة عليه أو تم إبطاله)
scope النطاق (إن وُجد) المرتبط برمز الدخول
apiproduct.<custom_attribute_name> سمة مخصّصة مسماة لمنتج واجهة برمجة التطبيقات المرتبط بتطبيق العميل المسجّل.
apiproduct.name اسم منتج واجهة برمجة التطبيقات المرتبط بتطبيق العميل المسجّل.
revoke_reason

(Apigee hybrid فقط) يشير إلى سبب إبطال رمز الدخول المميز.

يمكن أن تكون القيمة REVOKED_BY_APP أو REVOKED_BY_ENDUSER أو REVOKED_BY_APP_ENDUSER أو TOKEN_REVOKED.

المتغيّرات الخاصة بالتطبيق

ترتبط هذه المتغيّرات بتطبيق المطوّر المرتبط بالرمز المميّز.

المتغيّرات الوصف
app.name
app.id
app.accessType
app.callbackUrl
app.status موافق عليها أو تم إبطالها
app.scopes
app.appFamily
app.apiproducts
app.appParentStatus
app.appType على سبيل المثال: مطوِّر
app.appParentId
app.created_by
app.created_at
app.last_modified_at
app.last_modified_by
app.{custom_attributes} سمة مخصّصة مسماة لتطبيق العميل المسجّل

المتغيّرات الخاصة بالمطوّرين

إذا كانت قيمة app.appType هي "Company"، سيتم ملء سمات الشركة، وإذا كانت قيمة app.appType هي "Developer"، سيتم ملء سمات المطوّر.

المتغيّرات الوصف
المتغيّرات الخاصة بالمطوّرين
developer.id
developer.userName
developer.firstName
developer.lastName
developer.email
developer.status نشط أو غير نشط
developer.apps
developer.created_by
developer.created_at
developer.last_modified_at
developer.last_modified_by
developer.{custom_attributes} سمة مخصّصة تحمل اسم المطوِّر.

المتغيرات الخاصة بالشركة

إذا كانت قيمة app.appType هي "Company"، سيتم ملء سمات الشركة، وإذا كانت قيمة app.appType هي "Developer"، سيتم ملء سمات المطوّر.

المتغيّرات الوصف
company.id
company.displayName
company.apps
company.appOwnerStatus
company.created_by
company.created_at
company.last_modified_at
company.last_modified_by
company.{custom_attributes} سمة مخصّصة للشركة تحمل اسمًا

عملية GenerateAuthorizationCode

يتم ضبط هذه المتغيّرات عند تنفيذ عملية GenerateAuthorizationCode بنجاح:

البادئة: oauthv2authcode.{policy_name}.{variable_name}

مثال: oauthv2authcode.GenerateCodePolicy.code

متغيّر الوصف
code رمز التفويض الذي يتم إنشاؤه عند تنفيذ السياسة
redirect_uri تمثّل هذه السمة معرّف الموارد المنتظم (URI) لإعادة التوجيه المرتبط بتطبيق العميل المسجَّل.
scope نطاق OAuth الاختياري الذي تم تمريره في طلب البرنامج
client_id معرّف العميل الذي تم تمريره في طلب العميل.

عمليتَي GenerateAccessToken وRefreshAccessToken

يتم ضبط هذه المتغيّرات عند تنفيذ العمليتَين GenerateAccessToken وRefreshAccessToken بنجاح. يُرجى العِلم أنّ متغيّرات الرمز المميّز لإعادة التحميل لا تنطبق على نوع تدفّق منح بيانات اعتماد العميل.

البادئة: oauthv2accesstoken.{policy_name}.{variable_name}

مثال: oauthv2accesstoken.GenerateTokenPolicy.access_token

اسم المتغير الوصف
access_token رمز الدخول الذي تم إنشاؤه
client_id معرّف العميل لتطبيق المطوّر المرتبط بهذا الرمز المميّز
expires_in قيمة انتهاء صلاحية الرمز المميّز لمزيد من التفاصيل، يُرجى الاطّلاع على عنصر <ExpiresIn>. يُرجى العِلم أنّ قيمة expires_in في الردّ يتم التعبير عنها بالثواني.
scope قائمة بالنطاقات المتاحة التي تم ضبطها للرمز المميّز اطّلِع على العمل مع نطاقات OAuth2.
status إما approved أو revoked
token_type تم ضبطها على BearerToken.
developer.email عنوان البريد الإلكتروني للمطوّر المسجّل الذي يملك تطبيق المطوّر المرتبط بالرمز المميز.
organization_name المؤسسة التي يتم فيها تنفيذ الوكيل
api_product_list قائمة بالمنتجات المرتبطة بتطبيق المطوّر المقابل للرمز المميّز
refresh_count
refresh_token الرمز المميّز لإعادة التحميل الذي تم إنشاؤه. يُرجى العِلم أنّه لا يتم إنشاء رموز مميّزة لإعادة التحميل لنوع منح بيانات اعتماد العميل.
refresh_token_expires_in تمثّل هذه السمة مدة صلاحية رمز إعادة التحميل بالثواني.
refresh_token_issued_at قيمة الوقت هذه هي التمثيل السلسلي لكمية الطابع الزمني المقابل المكوّن من 32 بت. على سبيل المثال، يتوافق "Wed, 21 Aug 2013 19:16:47 UTC" مع قيمة الطابع الزمني 1377112607413.
refresh_token_status إما approved أو revoked

GenerateAccessTokenImplicitGrant

يتم ضبط هذه المتغيّرات عند تنفيذ عملية GenerateAccessTokenImplicit بنجاح لسير عمل نوع الإذن الضمني.

البادئة: oauthv2accesstoken.{policy_name}.{variable_name}

مثال: oauthv2accesstoken.RefreshTokenPolicy.access_token

متغيّر الوصف
oauthv2accesstoken.access_token رمز الدخول المميز الذي يتم إنشاؤه عند تنفيذ السياسة
oauthv2accesstoken.{policy_name}.expires_in قيمة انتهاء صلاحية الرمز المميّز بالثواني لمزيد من التفاصيل، يُرجى الاطّلاع على العنصر <ExpiresIn>.

مرجع الأخطاء

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

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

يمكن أن تحدث هذه الأخطاء عند تنفيذ السياسة.

رمز الخطأ رموز حالة HTTP السبب تم طرحها من خلال العمليات
steps.oauth.v2.access_token_expired 401 انتهت صلاحية الرمز المميّز للوصول.

VerifyAccessToken
InvalidateToken

steps.oauth.v2.access_token_not_approved 401 تم إبطال رمز الوصول. VerifyAccessToken
steps.oauth.v2.apiresource_doesnot_exist 401 لا يتوفّر المورد المطلوب في أيّ من منتجات واجهة برمجة التطبيقات المرتبطة برمز الدخول. VerifyAccessToken
steps.oauth.v2.FailedToResolveAccessToken 500 توقّعت السياسة العثور على رمز وصول في متغيّر محدّد في عنصر <AccessToken>، ولكن تعذّر حلّ المتغيّر. GenerateAccessToken
steps.oauth.v2.FailedToResolveAuthorizationCode 500 توقّعت السياسة العثور على رمز تفويض في متغيّر محدّد في عنصر <Code>، ولكن تعذّر حلّ المتغيّر. GenerateAuthorizationCode
steps.oauth.v2.FailedToResolveClientId 500 توقّعت السياسة العثور على رقم تعريف العميل في متغيّر محدّد في عنصر <ClientId>، ولكن تعذّر حلّ المتغيّر. GenerateAccessToken
GenerateAuthorizationCode
GenerateAccessTokenImplicitGrant
RefreshAccessToken
steps.oauth.v2.FailedToResolveRefreshToken 500 كانت السياسة تتوقّع العثور على رمز تنشيط مفتاح المرور في متغيّر محدّد في العنصر <RefreshToken>، ولكن تعذّر حلّ المتغيّر. RefreshAccessToken
steps.oauth.v2.FailedToResolveToken 500 توقّعت السياسة العثور على رمز مميّز في متغيّر محدّد في عنصر <Tokens>، ولكن تعذّر حلّ المتغيّر.

ValidateToken
InvalidateToken

steps.oauth.v2.InsufficientScope 403 يحتوي رمز الوصول الذي تم تقديمه في الطلب على نطاق لا يتطابق مع النطاق المحدّد في سياسة التحقّق من رمز الوصول. للتعرّف على النطاق، يُرجى الاطّلاع على العمل مع نطاقات OAuth2. VerifyAccessToken
steps.oauth.v2.invalid_access_token 401 الرمز المميّز للوصول الذي تم إرساله من العميل غير صالح. VerifyAccessToken
steps.oauth.v2.invalid_client 401

يتم عرض اسم الخطأ هذا عندما يتم ضبط سمة <GenerateResponse> السياسة على true ورقم تعريف العميل المُرسَل في الطلب غير صالح. تأكَّد من استخدام قيم مفتاح العميل وسر العميل الصحيحة لتطبيق المطوّر المرتبط بالخادم الوكيل. يتم عادةً إرسال هذه القيم كعنوان Basic Authorization مشفَّر باستخدام Base64.

ملاحظة: ننصحك بتغيير شروط قاعدة الأعطال الحالية لرصد اسمَي invalid_client InvalidClientIdentifier. اطّلِع على ملاحظات إصدار 16.09.21 للحصول على مزيد من المعلومات والاطّلاع على مثال.

GenerateAccessToken
RefreshAccessToken
steps.oauth.v2.InvalidRequest 400 يُستخدَم اسم الخطأ هذا لأنواع مختلفة من الأخطاء، عادةً بسبب عدم توفّر أو إرسال مَعلمات غير صحيحة في الطلب. إذا تم ضبط <GenerateResponse> على false، استخدِم متغيّرات الأعطال (الموضّحة أدناه) لاسترداد تفاصيل عن الخطأ، مثل اسم العُطل وسببه. GenerateAccessToken
GenerateAuthorizationCode
GenerateAccessTokenImplicitGrant
RefreshAccessToken
steps.oauth.v2.InvalidAccessToken 401 لا يتضمّن عنوان التفويض كلمة "Bearer"، وهي مطلوبة. على سبيل المثال: Authorization: Bearer your_access_token VerifyAccessToken
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound 401

لا يتوفّر خادم وكيل لواجهة برمجة التطبيقات في المنتج المرتبط برمز الوصول.

ملاحظات: تأكَّد من ضبط المنتج المرتبط برمز المرور للوصول بشكل صحيح. على سبيل المثال، إذا كنت تستخدم أحرف البدل في مسارات الموارد، تأكَّد من استخدام أحرف البدل بشكل صحيح. اطّلِع على إنشاء منتجات واجهة برمجة التطبيقات للاطّلاع على التفاصيل.

يمكنك أيضًا الاطّلاع على هذه مشاركة في منتدى Apigee للحصول على مزيد من الإرشادات حول أسباب حدوث هذا الخطأ.

VerifyAccessToken
steps.oauth.v2.InvalidClientIdentifier 500

يتم عرض اسم الخطأ هذا عند ضبط سمة <GenerateResponse> في السياسة على خطأ ورقم تعريف العميل المُرسَل في الطلب غير صالح. تأكَّد من استخدام قيم مفتاح العميل والسرية الصحيحة لتطبيق المطوّر المرتبط بالخادم الوكيل. يتم عادةً إرسال هذه القيم كعنوان Basic Authorization مُشفَّر باستخدام Base64.

ملاحظة: في هذه الحالة، كان يُطلق على هذا الخطأ اسم invalid_client. ننصحك بتغيير شروط قاعدة الأعطال الحالية لرصد اسمَي invalid_client InvalidClientIdentifier. اطّلِع على ملاحظات إصدار 16.09.21 للحصول على مزيد من المعلومات والاطّلاع على مثال.

GenerateAccessToken
RefreshAccessToken

steps.oauth.v2.InvalidParameter 500 يجب أن تحدّد السياسة إما رمز دخول أو رمز تفويض، ولكن ليس كليهما. GenerateAuthorizationCode
GenerateAccessTokenImplicitGrant
steps.oauth.v2.InvalidTokenType 500 يتطلّب عنصر <Tokens>/<Token> منك تحديد نوع الرمز المميّز . (على سبيل المثال، refreshtoken). إذا أرسل العميل نوعًا غير صحيح، يتم طرح هذا الخطأ. ValidateToken
InvalidateToken
steps.oauth.v2.MissingParameter 500 نوع الاستجابة هو token، ولكن لم يتم تحديد أي أنواع منح. GenerateAuthorizationCode
GenerateAccessTokenImplicitGrant
steps.oauth.v2.UnSupportedGrantType 500

حدّد العميل نوع إذن غير متوافق مع السياسة (غير مُدرَج في العنصر <SupportedGrantTypes>).

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

GenerateAccessToken
GenerateAuthorizationCode
GenerateAccessTokenImplicitGrant
RefreshAccessToken

أخطاء النشر

يمكن أن تحدث هذه الأخطاء عند نشر خادم وكيل يتضمّن هذه السياسة.

اسم الخطأ السبب
InvalidValueForExpiresIn

بالنسبة إلى العنصر <ExpiresIn>، تكون القيم الصالحة هي الأعداد الصحيحة الموجبة و -1.

InvalidValueForRefreshTokenExpiresIn بالنسبة إلى العنصر <RefreshTokenExpiresIn>، تكون القيم الصالحة هي الأعداد الكلية الموجبة و-1.
InvalidGrantType تم تحديد نوع منحة غير صالح في عنصر <SupportedGrantTypes>. اطّلِع على مرجع السياسة للحصول على قائمة بالأنواع الصالحة.
ExpiresInNotApplicableForOperation تأكَّد من أنّ العمليات المحدّدة في عنصر <Operations> تتيح انتهاء الصلاحية. على سبيل المثال، لا تفعل ذلك عملية VerifyToken.
RefreshTokenExpiresInNotApplicableForOperation تأكَّد من أنّ العمليات المحدّدة في عنصر <Operations> تتيح انتهاء صلاحية رمز إعادة التحميل المميّز. على سبيل المثال، لا تفعل ذلك عملية VerifyToken.
GrantTypesNotApplicableForOperation تأكَّد من أنّ أنواع الأذونات المحدّدة في <SupportedGrantTypes> متوافقة مع العملية المحدّدة.
OperationRequired

يجب تحديد عملية في هذه السياسة باستخدام العنصر <Operation>.

ملاحظة: إذا لم يكن عنصر <Operation> متوفّرًا، يعرض واجهة المستخدم خطأ في التحقّق من المخطّط.

InvalidOperation

يجب تحديد عملية صالحة في هذه السياسة باستخدام العنصر <Operation>.

ملاحظة: إذا كان عنصر <Operation> غير صالح، يعرض واجهة المستخدم خطأ في التحقّق من المخطّط.

TokenValueRequired يجب تحديد قيمة الرمز المميّز <Token> في العنصر <Tokens>.

متغيّرات الأعطال

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

المتغيّرات المكان مثال
fault.name="fault_name" fault_name هو اسم الخطأ، كما هو موضّح في جدول أخطاء وقت التشغيل أعلاه. اسم الخطأ هو الجزء الأخير من رمز الخطأ. fault.name = "InvalidRequest"
oauthV2.policy_name.failed policy_name هو اسم السياسة التي تسبّبت في الخطأ والذي حدّده المستخدم. oauthV2.GenerateAccesstoken.failed = true
oauthV2.policy_name.fault.name policy_name هو اسم السياسة التي تسبّبت في الخطأ، والذي حدّده المستخدم. oauthV2.GenerateAccesstoken.fault.name = InvalidRequest

ملاحظة: بالنسبة إلى عملية VerifyAccessToken، يتضمّن اسم الخطأ اللاحقة التالية: keymanagement.service
على سبيل المثال: keymanagement.service.invalid_access_token

oauthV2.policy_name.fault.cause policy_name هو اسم السياسة التي تسبّبت في الخطأ والذي حدّده المستخدم. oauthV2.GenerateAccesstoken.cause = Required param : grant_type

مثال على استجابة الخطأ

يتم إرسال هذه الردود مرة أخرى إلى العميل إذا كان عنصر <GenerateResponse> صحيحًا.

إذا كانت قيمة <GenerateResponse> هي صحيح، تعرض السياسة أخطاء بهذا التنسيق للعمليات التي تُنشئ الرموز المميّزة والرموز. للحصول على قائمة كاملة، يُرجى الاطّلاع على مرجع استجابة خطأ بروتوكول HTTP في OAuth.

{"ErrorCode" : "invalid_client", "Error" :"ClientId is Invalid"}

إذا كانت قيمة <GenerateResponse> هي true، تعرض السياسة أخطاء بهذا التنسيق لعمليات التحقّق والتحقق من الصحة. للحصول على قائمة كاملة، يُرجى الاطّلاع على مرجع استجابة خطأ بروتوكول HTTP في OAuth.

{  
   {  
      "fault":{  
         "faultstring":"Invalid Access Token",
         "detail":{  
            "errorcode":"keymanagement.service.invalid_access_token"
         }
      }
   }

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

<FaultRule name=OAuthV2 Faults">
    <Step>
        <Name>AM-InvalidClientResponse</Name>
        <Condition>(fault.name = "invalid_client") OR (fault.name = "InvalidClientIdentifier")</Condition>
    </Step>
    <Step>
        <Name>AM-InvalidTokenResponse</Name>
        <Condition>(fault.name = "invalid_access_token")</Condition>
    </Step>
    <Condition>(oauthV2.failed = true) </Condition>
</FaultRule>

مخطط السياسة

يتم تحديد كل نوع من أنواع السياسات من خلال مخطّط XML (.xsd). وللحصول على مرجع، تتوفّر مخطّطات السياسات على GitHub.

العمل باستخدام إعدادات OAuth التلقائية

يتم توفير نقطة نهاية لرمز OAuth المميز لكل مؤسسة (حتى المؤسسة التي تستخدم فترة تجريبية مجانية) على Apigee Edge. تم ضبط نقطة النهاية مسبقًا باستخدام سياسات في خادم وكيل لواجهة برمجة التطبيقات يُسمى oauth. يمكنك البدء في استخدام نقطة نهاية الرمز المميز فور إنشاء حساب على Apigee Edge. للحصول على التفاصيل، راجِع التعرّف على نقاط نهاية OAuth.

إزالة رموز الدخول

يتم تلقائيًا إزالة رموز OAuth2 من نظام Apigee Edge بعد 3 أيام (259200 ثانية) من انتهاء صلاحية كل من رمز الدخول ورمز التحديث (في حال توفّره). في بعض الحالات، قد تحتاج إلى تغيير هذا الإعداد التلقائي. على سبيل المثال، قد تحتاج إلى تقليل وقت الإزالة لتوفير مساحة على القرص إذا كان يتم إنشاء عدد كبير من الرموز المميزة.

إذا كنت تستخدم Edge for Private Cloud، يمكنك تغيير هذا الإعداد التلقائي من خلال ضبط سمات المؤسسة كما هو موضّح في هذا القسم. (تنطبق عملية إزالة الرموز المميزة المنتهية الصلاحية التي تستغرق 3 أيام على Edge for Private Cloud الإصدار 4.19.01 والإصدارات الأحدث. في الإصدارات السابقة، تبلغ فترة الإزالة التلقائية 180 يومًا).

تعديل إعدادات الحذف في Edge Private Cloud 4.16.01 والإصدارات الأحدث

ملاحظة: لا تتأثر إلا الرموز المميزة التي تم إنشاؤها بعد تطبيق هذه الإعدادات، ولا تنطبق الإعدادات على الرموز المميزة التي تم إنشاؤها في وقت سابق.

تعديل إعدادات الحذف في Edge Private Cloud 4.15.07

ملاحظة: لا تتأثر إلا الرموز المميزة التي تم إنشاؤها بعد تطبيق هذه الإعدادات، ولا تنطبق الإعدادات على الرموز المميزة التي تم إنشاؤها في وقت سابق.

السلوك غير المتوافق مع طلب التعليقات (RFC)

تعرض سياسة OAuthV2 استجابة رمز مميّز تتضمّن بعض الخصائص غير المتوافقة مع RFC. يعرض الجدول التالي السمات غير المتوافقة التي تعرضها سياسة OAuthV2 والسمات المتوافقة المقابلة.

تعرض OAuthV2 ما يلي: السمة المتوافقة مع RFC هي:
"token_type":"BearerToken" "token_type":"Bearer"
"expires_in":"3600" "expires_in":3600

(القيمة المتوافقة هي رقم، وليس سلسلة).

بالإضافة إلى ذلك، يكون ردّ الخطأ لرمز مميز منتهي الصلاحية لإعادة التحميل عند استخدام grant_type = refresh_token على النحو التالي:

{"ErrorCode" : "InvalidRequest", "Error" :"Refresh Token expired"}

ومع ذلك، فإنّ الرد المتوافق مع RFC هو:

{"error" : "invalid_grant", "error_description" :"refresh token expired"}

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