سياسة GetOAuthV2Info

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

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

تعرض هذه السياسة سمات رموز الدخول ورموز التحديث ورموز التفويض وسمات تطبيق العميل، وتملأ المتغيرات بقيم هذه السمات.

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

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

نماذج

تستخدِم النماذج التالية سياسة Get OAuth V2 Info لاسترداد معلومات حول مكوّنات مختلفة من سير عمل 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> في سياستك.

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

<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 لمواصلة تنفيذ المسار حتى بعد تطبيق إحدى السياسات. فشل.

خطأ اختياري
enabled

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

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

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

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

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

&lt;DisplayName&gt; عنصر

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

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

لا ينطبق

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

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

العنصر <AccessToken>

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

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

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

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

الظهور:

اختياري

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

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


العنصر <AuthorizationCode>

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

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

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

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

الظهور:

اختياري

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

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

العنصر <ClientId>

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

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

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

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

الظهور:

اختياري

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

عنصر <IgnoreAccessTokenStatus>

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

<IgnoreAccessTokenStatus>true</IgnoreAccessTokenStatus>

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

خطأ

الظهور:

اختياري

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

العنصر <RefreshToken>

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

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

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

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

الظهور:

اختياري

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

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

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

تعبئ سياسة 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}

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

يتم ملء هذه المتغيّرات عند ضبط العنصر RefreshToken:

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>

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