سياسة GetOAuthV2Info

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

الموضوع

الحصول على سمات رموز الدخول والرموز المميزة لإعادة التحميل ورموز التفويض وسمات تطبيق العميل وتعبئة المتغيرات بقيم هذه السمات

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

يجب أن يكون رمز الدخول الذي تمنحه لهذه السياسة صالحًا وإلا ستعرض السياسة خطأ invalid_access_token.

عيّنات

تستخدم النماذج التالية سياسة "الحصول على معلومات الإصدار 2 من OAuth" لاسترداد معلومات حول المكونات المختلفة لسير عمل OAuth2، ثم الوصول إلى هذه المعلومات داخل الرمز.

رمز الدخول

للحصول على مرجع إلى رمز دخول، استخدِم العنصر <AccessToken> في سياستك.

في المثال التالي، نتوقّع العثور على رمز الدخول في مَعلمة طلب بحث باسم "access_token" (تفاصيل التنفيذ الفعلية متروكة لك):

<GetOAuthV2Info name="MyTokenAttrsPolicy">
  <AccessToken ref="request.queryparam.access_token"></AccessToken>
</GetOAuthV2Info>

باستخدام رمز الدخول، تبحث السياسة عن الملف الشخصي للرمز المميّز وتملأ مجموعة من المتغيّرات ببيانات الملف الشخصي.

يمكنك عندئذٍ الوصول إلى المتغيرات باستخدام JavaScript أو وسائل أخرى. يسترد المثال التالي النطاقات المرتبطة برمز الدخول باستخدام JavaScript:

var scope = context.getVariable('oauthv2accesstoken.MyTokenAttrsPolicy.scope');

للوصول إلى هذه المتغيّرات في الرمز، يجب أن تبدأ بـ "oauthv2accesstoken". للحصول على قائمة كاملة بالمتغيّرات المتاحة من خلال رمز الدخول، يمكنك الاطّلاع على متغيّرات رمز الدخول.

رمز المصادقة

للحصول على سمات رمز التفويض، استخدِم العنصر <AuthorizationCode> في السياسة.

يتوقع المثال التالي العثور على رمز الدخول في مَعلمة نموذج باسم "code" (تفاصيل التنفيذ الفعلية متروكة لك):

<GetOAuthV2Info name="MyAuthCodeAttrsPolicy">
  <AuthorizationCode ref="request.formparam.code"></AuthorizationCode>
</GetOAuthV2Info>

باستخدام رمز المصادقة، تبحث السياسة عن معلومات الرمز وتعبئ مجموعة من المتغيرات ببيانات رمز المصادقة.

يمكنك عندئذٍ الوصول إلى المتغيرات باستخدام JavaScript أو وسائل أخرى. يسترد المثال التالي سمة مخصّصة مرتبطة برمز التفويض باستخدام JavaScript:

var attr = context.getVariable(‘oauthv2authcode.MyAuthCodeAttrsPolicy.custom_attribute_name’);

تجدر الإشارة إلى أنّه للوصول إلى هذه المتغيّرات في الرمز، يجب أن تبدأ بـ "oauthv2authcode". للحصول على قائمة كاملة بالمتغيّرات المتاحة من خلال رمز المصادقة، يُرجى الاطّلاع على متغيّرات رمز التفويض.

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

للحصول على سمات الرمز المميّز لإعادة التحميل، استخدِم العنصر <RefreshToken> في السياسة.

من المتوقع العثور على رمز الدخول في مَعلمة طلب بحث باسم "refresh_token" (تفاصيل التنفيذ الفعلية متروكة لك):

<GetOAuthV2Info name="MyRefreshTokenAttrsPolicy">
  <RefreshToken ref="request.queryparam.refresh_token"/>
</GetOAuthV2Info>

باستخدام الرمز المميّز لإعادة التحميل، تبحث السياسة عن معلومات الرمز المميّز لإعادة التحميل وتملأ مجموعة من المتغيّرات ببيانات الرمز المميّز لإعادة التحميل.

يمكنك بعد ذلك الوصول إلى هذه المتغيرات باستخدام JavaScript أو وسائل أخرى. يسترد المثال التالي سمة مخصّصة مرتبطة بالرمز المميّز لإعادة التحميل باستخدام JavaScript:

var attr = context.getVariable(‘oauthv2refreshtoken.MyRefreshTokenAttrsPolicy.accesstoken.custom_attribute_name’);

للوصول إلى المتغيّرات في الرمز، يجب أن تبدأ بها البادئة "oauthv2refreshtoken". للحصول على قائمة كاملة بالمتغيّرات المتاحة من خلال الرمز المميّز لإعادة التحميل، يمكنك الاطّلاع على متغيّرات الرمز المميّز لإعادة التحميل.

ثابت

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

<GetOAuthV2Info name="GetTokenAttributes">
  <AccessToken>shTUmeI1geSKin0TODcGLXBNe9vp</AccessToken>
</GetOAuthV2Info>

ويمكنك إجراء ذلك مع جميع أنواع الرموز المميّزة الأخرى أيضًا (معرّف العميل ورمز التفويض والرموز المميّزة لإعادة التحميل).

معرِّف العميل

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

<GetOAuthV2Info name="GetClientAttributes">
  <ClientId ref="request.queryparam.client_id"></ClientId>
</GetOAuthV2Info>

يمكنك عندئذٍ الوصول إلى المتغيرات باستخدام JavaScript أو وسائل أخرى. على سبيل المثال، للحصول على اسم تطبيق المطوّر والبريد الإلكتروني للمطوّر المرتبط بتطبيق العميل باستخدام JavaScript:

context.getVariable("oauthv2client.GetClientAttributes.developer.email");
context.getVariable("oauthv2client.GetClientAttributes.developer.app.name");

مرجع العنصر

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

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<GetOAuthV2Info async="false" continueOnError="false" enabled="true" name="GetOAuthV2Info-1"
    <DisplayName>Get OAuth v2.0 Info 1</DisplayName>
    <AccessToken ref="variable"></AccessToken>
    <AuthorizationCode ref="variable"></AuthorizationCode>
    <ClientId ref="variable"></ClientId>
    <RefreshToken ref="variable"></RefreshToken>
</GetOAuthV2Info>

سمات <GetOAuthV2Info>

<GetOAuthV2Info async="false" continueOnError="false" enabled="true" name="Get-OAuth-v20-Info-1">

يوضِّح الجدول التالي السمات الشائعة لجميع العناصر الرئيسية للسياسة:

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

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

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

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

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

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

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

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

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

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

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

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

العنصر <DisplayName>

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

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

لا ينطبق

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

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

عنصر <AccessToken>

يسترد الملف الشخصي لرمز الدخول. وعليك ضبط متغيّر يتضمّن سلسلة رمز الدخول أو سلسلة رمز مميّز حرفية (حالة نادرة). في هذا المثال، يتم استرداد رمز الدخول من مَعلمة طلب بحث تم تمريرها في الطلب. استخدِم العنصر <RejectAccessTokenStatus> إذا أردت عرض معلومات حول رمز مميّز تم إبطاله أو انتهاء صلاحيته.

<AccessToken ref="request.queryparam.access_token"></AccessToken>

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

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

الحضور:

اختياري

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

إما متغيّر تدفق يحتوي على سلسلة رمز الدخول أو سلسلة حرفية.


العنصر <تفويضCode>

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

<AuthorizationCode ref="request.queryparam.authorization_code"></AuthorizationCode>

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

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

الحضور:

اختياري

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

إما متغيّر تدفق يحتوي على سلسلة رمز المصادقة أو سلسلة حرفية.

عنصر <ClientId>

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

<ClientId ref="request.queryparam.client_id"></ClientId>

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

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

الحضور:

اختياري

النوع: سلسلة
القيم الصالحة: إما متغيّر تدفق يحتوي على سلسلة رمز المصادقة أو سلسلة حرفية.

العنصر <تجاهلAccessTokenStatus>

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

<IgnoreAccessTokenStatus>true</IgnoreAccessTokenStatus>

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

false

الحضور:

اختياري

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

العنصر <DELETEToken>

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

<RefreshToken ref="request.queryparam.refresh_token"></RefreshToken>

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

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

الحضور:

اختياري

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

متغيّر تدفق يحتوي على سلسلة الرمز المميّز لإعادة التحميل أو سلسلة حرفية

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

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

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

تتم تعبئة هذه المتغيرات عند ضبط عنصر ClientId:

oauthv2client.{policy_name}.client_id
oauthv2client.{policy_name}.client_secret
oauthv2client.{policy_name}.redirection_uris // Note the spelling -- 'redirection_uris'
oauthv2client.{policy_name}.developer.email
oauthv2client.{policy_name}.developer.app.name
oauthv2client.{policy_name}.developer.id
oauthv2client.{policy_name}.{developer_app_custom_attribute_name}

متغيرات رمز الدخول

تتم تعبئة هذه المتغيرات عند تعيين عنصر AccessToken:

oauthv2accesstoken.{policy_name}.developer.id
oauthv2accesstoken.{policy_name}.developer.app.name
oauthv2accesstoken.{policy_name}.developer.app.id
oauthv2accesstoken.{policy_name}.developer.email

oauthv2accesstoken.{policy_name}.organization_name
oauthv2accesstoken.{policy_name}.api_product_list

oauthv2accesstoken.{policy_name}.access_token
oauthv2accesstoken.{policy_name}.scope
oauthv2accesstoken.{policy_name}.expires_in //in seconds
oauthv2accesstoken.{policy_name}.status
oauthv2accesstoken.{policy_name}.client_id
oauthv2accesstoken.{policy_name}.accesstoken.{custom_attribute_name}

oauthv2accesstoken.{policy_name}.refresh_token
oauthv2accesstoken.{policy_name}.refresh_token_status
oauthv2accesstoken.{policy_name}.refresh_token_expires_in //in seconds

oauthv2accesstoken.{policy_name}.refresh_count
oauthv2accesstoken.{policy_name}.refresh_token_issued_at
oauthv2accesstoken.{policy_name}.revoke_reason //Apigee hybrid only with value of REVOKED_BY_APP, REVOKED_BY_ENDUSER, REVOKED_BY_APP_ENDUSER, or TOKEN_REVOKED

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

تتم تعبئة هذه المتغيرات عند ضبط عنصر AuthorizationCode:

oauthv2authcode.{policy_name}.code
oauthv2authcode.{policy_name}.scope       
oauthv2authcode.{policy_name}.redirect_uri 
oauthv2authcode.{policy_name}.client_id
oauthv2authcode.{policy_name}.{auth_code_custom_attribute_name}

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

تتم تعبئة هذه المتغيرات عند تعيين العنصر DELETEToken:

oauthv2refreshtoken.{policy_name}.developer.id
oauthv2refreshtoken.{policy_name}.developer.app.name
oauthv2refreshtoken.{policy_name}.developer.app.id
oauthv2refreshtoken.{policy_name}.developer.email
oauthv2refreshtoken.{policy_name}.organization_name
oauthv2refreshtoken.{policy_name}.api_product_list

oauthv2refreshtoken.{policy_name}.access_token
oauthv2refreshtoken.{policy_name}.scope
oauthv2refreshtoken.{policy_name}.expires_in //in seconds

oauthv2refreshtoken.{policy_name}.status
oauthv2refreshtoken.{policy_name}.client_id
oauthv2refreshtoken.{policy_name}.accesstoken.{custom_attribute_name}

oauthv2refreshtoken.{policy_name}.refresh_token
oauthv2refreshtoken.{policy_name}.refresh_token_status
oauthv2refreshtoken.{policy_name}.refresh_token_expires_in //in seconds

oauthv2refreshtoken.{policy_name}.refresh_count
oauthv2refreshtoken.{policy_name}.refresh_token_issued_at
oauthv2refreshtoken.{policy_name}.revoke_reason //Apigee hybrid only with value of REVOKED_BY_APP, REVOKED_BY_ENDUSER, REVOKED_BY_APP_ENDUSER, or TOKEN_REVOKED

المخطّط

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

مرجع الخطأ

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

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

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

رمز الخطأ رموز حالة HTTP السبب
steps.oauth.v2.access_token_expired 500 انتهت صلاحية رمز الدخول الذي تم إرساله إلى السياسة.
steps.oauth.v2.authorization_code_expired 500 انتهت صلاحية رمز التفويض الذي تم إرساله إلى السياسة.
steps.oauth.v2.invalid_access_token 500 رمز الدخول الذي تم إرساله إلى السياسة غير صالح.
steps.oauth.v2.invalid_client-invalid_client_id 500 معرّف العميل الذي تم إرساله إلى السياسة غير صالح.
steps.oauth.v2.invalid_refresh_token 500 الرمز المميّز لإعادة التحميل الذي تم إرساله إلى السياسة غير صالح.
steps.oauth.v2.invalid_request-authorization_code_invalid 500 رمز التفويض الذي تم إرساله إلى السياسة غير صالح.
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound 401 يُرجى الاطّلاع على هذه المشاركة في منتدى Apigee للحصول على معلومات حول تحديد هذا الخطأ وحلّها.
steps.oauth.v2.refresh_token_expired 500 انتهت صلاحية الرمز المميّز لإعادة التحميل الذي تم إرساله إلى السياسة.

أخطاء النشر

يمكنك الرجوع إلى الرسالة التي تم الإبلاغ عنها في واجهة المستخدم للاطّلاع على معلومات عن أخطاء النشر.

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

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

المتغيرات المكان مثال
fault.name="fault_name" fault_name هو اسم الخطأ، كما هو موضَّح في جدول أخطاء وقت التشغيل أعلاه. اسم الخطأ هو الجزء الأخير من رمز الخطأ. fault.name Matches "IPDeniedAccess"
oauthV2.policy_name.failed policy_name هو اسم السياسة التي حدّدها المستخدم التي أدت إلى حدوث الخطأ. oauthV2.GetTokenInfo.failed = true
oauthV2.policy_name.fault.name policy_name هو اسم السياسة التي حدّدها المستخدم التي أدت إلى حدوث الخطأ. oauthV2.GetToKenInfo.fault.name = invalid_client-invalid_client_id
oauthV2.policy_name.fault.cause policy_name هو اسم السياسة التي حدّدها المستخدم التي أدت إلى حدوث الخطأ. oauthV2.GetTokenInfo.cause = ClientID is Invalid

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

{  
   "fault":{  
      "faultstring":"ClientId is Invalid",
      "detail":{  
         "errorcode":"keymanagement.service.invalid_client-invalid_client_id"
      }
   }
}

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

<FaultRule name="OAuthV2 Faults">
    <Step>
        <Name>AM-InvalidClientIdResponse</Name>
    </Step>
    <Condition>(fault.name = "invalid_client-invalid_client_id")</Condition>
</FaultRule>

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