سياسة OAuthV2

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

الموضوع

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

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

عيّنات

VerifyAccessToken

VerifyAccessToken

يتحقّق إعداد سياسة OAuthV2 هذه (باستخدام عملية التحقّق من الوصول) من أنّ رمز الدخول الذي تم إرساله إلى 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 غير مصرّح به" على الرغم من تحديد مَعلمات تسجيل الدخول الصحيحة في السياسة. لحل هذه المشكلة، عليك ضبط عنوان طلب تفويض.

يجب أن يحتوي رأس التفويض على مخطط وصول أساسي يتضمّن 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 لمواصلة تنفيذ التدفق حتى بعد تعذُّر تنفيذ السياسة.

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

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

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

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

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

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

العنصر <DisplayName>

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

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

لا ينطبق

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

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

عنصر <AccessToken>

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

وفقًا للإعدادات التلقائية، تتوقّع ميزة CheckAccessToken إرسال رمز الدخول في عنوان 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>

وفقًا للإعدادات التلقائية، تتوقّع ميزة CheckAccessToken إرسال رمز الدخول في عنوان "التفويض" على أنّه رمز الحامل المميز. مثال:

-H "Authorization: Bearer Rft3dqrs56Blirls56a"

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

الخيار التلقائي:

الحامل

الحضور:

اختياري

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

الحامل

تُستخدَم في العمليات:
  • 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 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>

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

الخيار التلقائي:

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

الحضور:

اختياري

النوع: سلسلة
القيم الصالحة: متغيّر المسار: 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 (رمز x-www-form-url للجوّال ومحدد في نص الطلب)

الحضور:

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

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

عنصر<expirationIn>

<ExpiresIn>10000</ExpiresIn> 

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

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

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

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

يحدد الشرط التالي متغير تدفق وقيمة افتراضية أيضًا. لاحظ أن قيمة متغير التدفق لها الأولوية على القيمة الافتراضية المحددة.

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

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

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

السحابة الإلكترونية الخاصة: بالنسبة إلى تثبيت Edge الخاص بالسحابة الإلكترونية الخاصة، يتم ضبط القيمة التلقائية من خلال السمة 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 التابعة لجهات خارجية.

عنصر <ExternalAuth>

<ExternalAuthorization>true</ExternalAuthorization>

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

الخيار التلقائي:

false

الحضور:

اختياري

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

العنصر <ExternalAuthCode>

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

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

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

العنصر <ExternalPreviewToken>

<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 بالثواني في الردّ.

الخيار التلقائي:

false

الحضور:

اختياري

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

عنصر <GenerateErrorResponse>

<GenerateErrorResponse enabled='true'/>

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

الخيار التلقائي:

false

الحضور:

اختياري

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

<GrantType>

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

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

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

الخيار التلقائي:

request.formparam.grant_type (رمز x-www-form-urlcipher ومحدد في نص الطلب)

الحضور:

اختياري

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

العنصر <Operation>

<Operation>GenerateAuthorizationCode</Operation>

عملية OAuth 2.0 المنفذة من خلال السياسة.

الخيار التلقائي:

إذا لم يتم تحديد <Operation>، سيبحث متصفّح Edge في قائمة <SupportedGrantTypes>. وستنجح العمليات على أنواع المِنح هذه فقط. بمعنى آخر، يمكنك حذف <Operation> في حال تحديد العنصر <GrantType> في القائمة <SupportedGrantTypes>. إذا لم يتم تحديد <Operation> أو <SupportedGrantTypes>، يكون نوع المنح التلقائي هو تفويض_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 (رمز x-www-form-urlcipher محدّد ومحدّد في نص الطلب)

الحضور:

اختياري

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

العنصر <RedirectUri>

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

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

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

يتم استخدام معرفات الموارد المنتظمة (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 (رمز x-www-form-url تمّ ترميزه وتحديده في نص الطلب)

الحضور:

اختياري

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

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

العنصر <DELETEToken>

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

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

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

الخيار التلقائي:

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

الحضور:

اختياري

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

العنصر <refreshTokenديسمبرIn>

<RefreshTokenExpiresIn>1000</RefreshTokenExpiresIn>

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

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

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

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

السحابة الإلكترونية الخاصة: بالنسبة إلى تثبيت Edge الخاص بالسحابة الإلكترونية الخاصة، يتم ضبط القيمة التلقائية من خلال السمة 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

الخيار التلقائي:

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

الحضور:

اختياري

النوع: عدد صحيح
القيم الصالحة:
تُستخدَم مع أنواع المِنح:
  • 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-urlشرح ومحدد في نص الطلب)

الحضور:

اختياريّ. يمكنك استخدام هذا العنصر إذا أردت تجاوز السلوك التلقائي.

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

العنصر <ReuserefreshToken>

<ReuseRefreshToken>true</ReuseRefreshToken>

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

الخيار التلقائي:

false

الحضور:

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

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

true أو false

تُستخدَم مع نوع المنحة:
  • refresh_token

عنصر <Scope>

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

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

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

<Scope>A B</Scope>

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

الخيار التلقائي:

بلا نطاق

الحضور:

اختياري

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

في حال استخدام هذا المتغيّر مع سياسات الإنشاء*، يتم استخدام متغيّر تدفق.

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

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

عنصر <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 تخزين رمز الوصول الخارجي. وإلا، لن يستمر.

الخيار التلقائي:

false

الحضور:

اختياري

النوع: منطقي
القيم الصالحة: صواب أم خطأ
تُستخدَم مع أنواع المِنح:
  • 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 تتطابق مع أحد أنواع المنح المتوافقة).

الخيار التلقائي:

التفويض _code والتضمين الضمني

الحضور:

مطلوبة

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

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

تُستخدَم مع عمليتَي التحقّق المتقدّم (التحقّق بخطوتين) ونموذج غير صالح للرمز المميّز. راجِع أيضًا الموافقة على رموز الدخول وإبطالها. يحدد العنصر <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 (رمز x-www-form-url البدء بالترميز ومحدّد في نص الطلب)

الحضور:

اختياري

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

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

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

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

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

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

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

يمكن استخدام العناصر الاختيارية التالية لإلغاء الإعدادات التلقائية لعملية التحقّق من الدخول.

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

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

<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 المعنيّة، وبالتالي تكون متاحة للسياسات أو التطبيقات الأخرى التي يتم تنفيذها في تدفق الخادم الوكيل لواجهة برمجة التطبيقات.

عملية CheckAccessToken

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

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

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

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

يمكن أن تكون القيمة 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.

المتغيرات الوصف
المتغيّرات الخاصة بمطوّري البرامج
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"، تتم تعبئة سمات 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} سمة مخصصة باسم الشركة.

عملية GenerateتفويضCode

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

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

مثال: oauthv2authcode.GenerateCodePolicy.code

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

عمليات إنشاء GenerateAccessToken و منطقة ActivateAccessToken

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

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

مثال: oauthv2accesstoken.GenerateTokenPolicy.access_token

اسم المتغير الوصف
access_token رمز الدخول الذي تم إنشاؤه
client_id معرِّف العميل لتطبيق المطوّر المرتبط بهذا الرمز المميّز.
expires_in قيمة انتهاء صلاحية الرمز المميّز. راجِع العنصر <ExpiresIn> لمعرفة التفاصيل. ملاحظة: في الرد، يتم التعبير عن expires_in بالعبارة seconds.
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 بت. على سبيل المثال، يتوافق "الأربعاء، 21 آب (أغسطس) 2013 عند الساعة 19:16:47 بالتوقيت العالمي المتّفق عليه" مع قيمة الطابع الزمني 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 انتهت صلاحية رمز الدخول.

التحقّق من صحة الرمز
غير صالح للرمز المميّز

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
GeneratePrivacyCode
GenerateAccessTokenImplicitGrant
شاهدAccessToken
steps.oauth.v2.FailedToResolveRefreshToken 500 كان من المتوقّع أن تعثر السياسة على رمز مميّز لإعادة التحميل في متغيّر محدّد في العنصر <RefreshToken>، ولكن تعذّر حلّ المتغيّر. RefreshAccessToken
steps.oauth.v2.FailedToResolveToken 500 كان من المتوقّع أن تعثر السياسة على رمز مميّز في متغيّر محدّد في العنصر <Tokens>، ولكن تعذّر حلّ المتغيّر.

التحقّق من صحة الرمز
عدم صلاحية الرمز المميّز

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

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

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

إنشاء رمز الوصول
ActivateAccessToken
steps.oauth.v2.invalid_request 400 يُستخدَم اسم الخطأ هذا لأنواع مختلفة من الأخطاء، وعادةً ما تكون للمعلَمات المفقودة أو غير الصحيحة التي تم إرسالها في الطلب. في حال ضبط <GenerateResponse> على false، استخدِم متغيّرات الأخطاء (الموضّحة أدناه) لاسترداد تفاصيل حول الخطأ، مثل اسم الخطأ وسببه. GenerateAccessToken
GeneratePrivacyCode
GenerateAccessTokenImplicitGrant
شاهدAccessToken
steps.oauth.v2.InvalidAccessToken 401 لا يحتوي عنوان التفويض على كلمة "الحامل"، وهي مطلوبة. على سبيل المثال: Authorization: Bearer your_access_token VerifyAccessToken
steps.oauth.v2.InvalidAPICallAsNo\
steps.oauth.v2.ApiProductMatchFound
401

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

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

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

VerifyAccessToken
steps.oauth.v2.InvalidClientIdentifier 500

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

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

إنشاء رمز الوصول
ActivateAccessToken

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

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

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

GenerateAccessToken
GeneratePrivacyCode
GenerateAccessTokenImplicitGrant
شاهدAccessToken

أخطاء النشر

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

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

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

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

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

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

InvalidOperation

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

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

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

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

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

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

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

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

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

يتم إرسال هذه الاستجابات إلى العميل إذا كان العنصر <GenerateResponse> true.

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

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

إذا تم ضبط السياسة <GenerateResponse> على صحيح، ستعرض السياسة أخطاءً بهذا التنسيق عند إجراء عمليات التحقّق والتحقّق من صحة العمليات. للحصول على قائمة كاملة، يُرجى الاطّلاع على مرجع الاستجابة لخطأ 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 التلقائية

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

إزالة رموز الدخول نهائيًا

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

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

تعديل إعدادات الإزالة النهائية للإصدارات 4.16.01 من Edge Private Cloud والإصدارات الأحدث

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

تحديث إعدادات الإزالة النهائية للإصدار 4.15.07 من Edge Private Cloud

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

سلوك غير متوافق مع RFC

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

يؤدي بروتوكول OAuthV2 إلى إرجاع ما يلي: الموقع المتوافق مع RFC هو:
"token_type":"BearerToken" "token_type":"Bearer"
"expires_in":"3600" "expires_in":3600

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

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

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

ومع ذلك، فإن الاستجابة المتوافقة مع RFC هي:

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

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