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

يجب أن يحتوي عنوان التفويض على مخطط وصول أساسي باستخدام 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 name="attr_name1" ref="flow.variable" display="true|false">value1</Attribute>
    <Attribute name="attr_name2" ref="flow.variable" display="true|false">value2</Attribute>
</Attributes>

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

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

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

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

تذكَّر أنّه في حال ضبط عنصر 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 (بترميز 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-urlencoded ومحدّد في نص الطلب)

الحضور:

اختياري

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

العنصر<ExpiresIn>

<ExpiresIn>10000</ExpiresIn> 

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

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

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

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

تحدّد القصيدة التالية متغيّر تدفق وقيمة تلقائية أيضًا. لاحظ أن قيمة متغير التدفق تحظى بالأولوية على القيمة الافتراضية المحددة.

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

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

يتم تلقائيًا محو الرموز المميَّزة للوصول المنتهية الصلاحية من نظام 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>

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

الإعداد التلقائي:

خطأ

الحضور:

اختياري

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

عنصر <ExternalAuthorizationCode>

<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 التابعة لجهات خارجية.

عنصر <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 على true. إذا كان الخيار false (التلقائي)، لن يتم إرسال أي استجابة. بدلاً من ذلك، تتم تعبئة مجموعة من متغيّرات مسار الإحالة الناجحة بقيم ذات صلة بالدالة للسياسة.

الإعداد التلقائي:

خطأ

الحضور:

اختياري

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

<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-url ومحدد في ملف الطلب)

الحضور:

اختياري

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

عنصر <Operation>

<Operation>GenerateAuthorizationCode</Operation>

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

الإعداد التلقائي:

إذا لم يتم تحديد <Operation>، يفحص Edge قائمة <SupportedGrantTypes>. ولن تنجح سوى العمليات التي تتعلق بأنواع المنح هذه. بعبارة أخرى، يمكنك حذف <Operation> إذا حدّدت <GrantType> في قائمة <SupportedGrantTypes>. إذا لم يتم تحديد <Operation> أو <SupportedGrantTypes>، سيكون نوع المنح التلقائي هو author_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-urlencoded ومحدّد في ملف request body)

الحضور:

اختياري

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

عنصر <RedirectUri>

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

تُحدِّد مكان البحث عن المَعلمة redirect_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 (a x-www-form-urlencrypt وتحديد في نص الطلب)

الحضور:

اختياري

النوع: سلسلة
القيم الصالحة: أي متغيّر مسار يمكن الوصول إليه في السياسة أثناء التشغيل
يُستخدَم مع أنواع المنح:
  • 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 (معلَمة x-www-form-urlencoded محدّدة في نص الطلب)

الحضور:

اختياري

النوع: سلسلة
القيم الصالحة: أي متغيّر مسار يمكن الوصول إليه في السياسة أثناء التشغيل
يُستخدَم مع أنواع المنح:
  • 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 (مَعلمة x-www-form-urlencoded محدّدة في ملف 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.

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

<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 تتطابق مع أحد أنواع الأذونات المتوافقة).

الإعداد التلقائي:

authorization _code وimplicit

الحضور:

مطلوب

النوع: سلسلة
القيم الصالحة:
  • 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 (يتم ترميزه باستخدام x-www-form-url ويكون محدّدًا في ملف request body)

الحضور:

اختياري

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

إثبات صحة رموز الوصول

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

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

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

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

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

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

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

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

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

راجِع أيضًا مقالتَي التحقّق من صحة علامات الوصول وطلب علامات الوصول ورموز التفويض.

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

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

عملية VerifyAccessToken

يتم تنفيذ عملية 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.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 هي "شركة"، تتم تعبئة سمات الشركة، وإذا كانت قيمة app.appType هي "مطوّر"، تتم تعبئة سمات المطوّر.

المتغيّرات الوصف
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

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

البادئة: 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 بت. على سبيل المثال، تتوافق عبارة "الأربعاء، 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 انتهت صلاحية رمز الدخول.

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 يُتوقَّع أن تعثر السياسة على Client-ID في متغيّر محدَّد في <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> في يتم ضبط السياسة على صحيح ويكون معرّف العميل المُرسَل في الطلب غير صالح. تأكّد من استخدام مفتاح العميل والقيم السرية الصحيحة تطبيق المطوّر المرتبط بالخادم الوكيل. وعادةً ما يتم إرسال هذه القيم باعتبارها عنوان التفويض الأساسي المشفّر بتنسيق Base64

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

GenerateAccessToken
RefreshAccessToken
steps.oauth.v2.invalid_request 400 يُستخدم اسم الخطأ هذا لعدة أنواع مختلفة من الأخطاء، وعادةً ما يكون ذلك بسبب الأخطاء المفقودة. أو معلمات غير صحيحة تم إرسالها في الطلب. إذا كانت السمة <GenerateResponse> اضبط القيمة على false، واستخدِم متغيرات الخطأ (الموضّحة أدناه) لاسترداد التفاصيل عن الخطأ، مثل اسم الخطأ وسببه. GenerateAccessToken
GenerateAuthorizationCode
GenerateAccessTokenImplicitGrant
RefreshAccessToken
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 ملاحظات لمزيد من المعلومات ومثال.

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

حدَّد العميل نوع منح غير متوافق مع السياسة (غير مُدرَج في &lt;SupportedGrantTypes&gt; العنصر).

ملاحظة: هناك حاليًا خطأ يتمثل في حدوث أخطاء من نوع المِنح غير المتوافق. التي لم يتم طرحها بشكل صحيح. وفي حال حدوث خطأ من نوع المنح غير المتوافق، لن يعمل الخادم الوكيل ثم أدخل "تدفق الخطأ" كما هو متوقع.

GenerateAccessToken
GenerateAuthorizationCode
GenerateAccessTokenImplicitGrant
RefreshAccessToken

أخطاء النشر

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

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

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

InvalidValueForRefreshTokenExpiresIn بالنسبة إلى العنصر <RefreshTokenExpiresIn>، تكون القيم الصالحة موجبة. الأعداد الصحيحة و-1.
InvalidGrantType تم تحديد نوع منحة غير صالح في <SupportedGrantTypes>. العنصر. يمكنك الاطّلاع على مرجع السياسة للحصول على قائمة بالأنواع الصالحة.
ExpiresInNotApplicableForOperation تأكد من أن العمليات المحددة في <العمليات> دعم العناصر انتهاء الصلاحية. على سبيل المثال، لا يتم تفعيل عملية VerifyToken.
RefreshTokenExpiresInNotApplicableForOperation تأكد من أن العمليات المحددة في <العمليات> إعادة تحميل دعم العناصر انتهاء صلاحية الرمز المميز. على سبيل المثال، لا يتم تفعيل عملية VerifyToken.
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

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

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

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

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

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

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

محو رموز الوصول

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

إذا كنت تستخدم Edge for Private Cloud، يمكنك تغيير هذا الإعداد التلقائي من خلال ضبط سمات المؤسسة كما هو موضّح في هذا القسم. (ينطبق الحذف خلال 3 أيام للعناصر التي انتهت صلاحيتها على الإصدار 4.19.01 من Edge for Private Cloud والإصدارات الأحدث. وبالنسبة إلى الإصدارات الأقدم، تبلغ الفاصل الزمني التلقائي للإزالة النهائية 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" : "invalid_request", "Error" :"Refresh Token expired"}

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

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

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