سياسة AccessEntity

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

المزايا

يسترد الملفات الشخصية للكيانات التي تحدّدها من مخزن بيانات Apigee Edge. تضع السياسة في متغير يتبع اسمه التنسيق AccessEntity.{policy_name}. إِنْتَ يمكن استخدام AccessEntity للوصول إلى الملفات الشخصية للكيانات التالية:

  • تطبيق
  • منتج واجهة برمجة التطبيقات
  • الشركة
  • مطوّر برامج الشركة
  • مفتاح العميل
  • مطور التطبيق

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

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

نماذج

تُظهر النماذج التالية استخدام السمة AccessEntity بالتزامن مع السمة سياستا ExtractVariables وAssignMessage لاستخراج سياسات المطوّرين البريد الإلكتروني وإضافتها إلى عنوان HTTP.

الحصول على عنوان بريد إلكتروني خاص بالمطوّر لاستخدامه في سياسات أخرى

يمكنك إعداد سياسة AccessEntity لتحديد الملف الشخصي للكيان الذي تريد الحصول منه. Edge، بالإضافة إلى مكان وضع بيانات الملف الشخصي

في المثال التالي، تحصل السياسة على ملف شخصي للكيان على developer، وذلك باستخدام يتم ضبط مفتاح واجهة برمجة التطبيقات كمَعلمة طلب بحث لتحديد المطوِّر. يتم وضع الملف الشخصي في متغير يتبع اسمه النموذج AccessEntity.{policy_name}. وبالتالي فإن المتغير التي تم ضبطها من خلال هذه السياسة سيكون AccessEntity.GetDeveloperProfile.

<AccessEntity name="GetDeveloperProfile">
  <!-- This is the type entity whose profile we need to pull from the Edge datastore. -->
  <EntityType  value="developer"/>
  <!-- We tell the policy to use the API key (presented as query parameter) to identify the developer. -->
  <EntityIdentifier ref="request.queryparam.apikey" type="consumerkey"/> 
</AccessEntity>

استخدام سياسة أخرى لاسترداد قيمة الملف الشخصي للكيان من المتغيّر الذي تم ضبطه من خلال AccessEntity.

في المثال التالي، تسترد سياسة ExtractVariables قيمة من المتغير AccessEntity.GetDeveloperProfile الذي تم تعيينه سابقًا بواسطة AccessEntity

لاحظ أن القيمة التي تم استردادها يتم تحديدها كتعبير XPath في العنصر XMLPayload. يتم وضع القيمة المستخرجة في متغيّر "developer.email"

<ExtractVariables name="SetDeveloperProfile">
  <!-- The source element points to the variable populated by AccessEntity policy. 
  The format is <policy-type>.<policy-name>.
  In this case, the variable contains the whole developer profile. -->
  <Source>AccessEntity.GetDeveloperProfile</Source> 
  <VariablePrefix>developer</VariablePrefix>
  <XMLPayload>
    <Variable name="email" type="string"> 
        <!-- You parse elements from the developer profile using XPath. -->
      <XPath>/Developer/Email</XPath>
    </Variable>
  </XMLPayload>
</ExtractVariables>

تسترد سياسة assignMessage التالية البريد الإلكتروني للمطوِّر الذي تم ضبطه من قِبل سياسة استخراج المتغيّرات

<!-- We'll use this policy to return the variables set in the developer profile, 
just so that we can easily see them in the response. -->
<AssignMessage name="EchoVariables">
  <AssignTo createNew="false" type="response"></AssignTo>
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
  <Set>
    <Headers>
      <Header name="X-Developer-email">{developer.email}</Header>
    </Headers>
  </Set>
</AssignMessage>

مرجع العنصر

في ما يلي أساسيات بنية سياسة AccessEntity:

<AccessEntity name="policy_name">
  <EntityType  value="entity_type"/>
  <EntityIdentifier ref="entity_identifier" type="identifier_type"/> 
  <SecondaryIdentifier ref="secondary_identifier" type="identifier_type"/>
</AccessEntity>

يمكنك الوصول إلى كيانات متعددة من النوع نفسه عن طريق تجميعها في العنصر Identifiers:

<AccessEntity name="name_of_the_policy">
  <EntityType  value="type_of_entity"/>
  <Identifiers>
    <Identifier>
      <EntityIdentifier ref="reference_to_entity_identifier" type*="identifier_type"/> 
      <SecondaryIdentifier ref="reference_to_secondary_entity_identifier" type="identifier_type"/><!-- optional -->
    </Identifier >
    <Identifier>
      <EntityIdentifier ref="reference_to_entity_identifier" type*="identifier_type"/> 
      <SecondaryIdentifier ref="reference_to_secondary_entity_identifier" type="identifier_type"/><!-- optional -->
    </Identifier >
  </Identifiers>
</AccessEntity>

&lt;AccessEntity&gt; السمات

<AccessEntity async="false" continueOnError="false" enabled="true" name="policy_name">

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

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

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

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

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

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

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

خطأ اختياري
enabled

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

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

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

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

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

&lt;DisplayName&gt; عنصر

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

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

لا ينطبق

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

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

&lt;EntityIdentifier&gt; عنصر

تُستخدَم لتحديد الكيان المعيّن -- من النوع المحدد في EntityType -- المطلوب الحصول عليه.

<EntityIdentifier ref="value_variable" type="identifier_type"/> 

تلقائي

لا ينطبق

الحضور

مطلوب

النوع

سلسلة

السمات

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

يشير ذلك المصطلح إلى المتغيّر الذي يوفّر مصدر المعرّف، مثل. request.queryparam.apikey

لا ينطبق مطلوب. سلسلة
كتابة النوع الذي تمت تعبئته بالمتغير في السمة ref. مثل consumerkey راجِع أنواع الكيانات ومعرّفاتها للحصول على قائمة من القيم. مطلوب. سلسلة

مثال

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AccessEntity async="false" continueOnError="false" enabled="true" name="GetCompany">
    <DisplayName>GetCompanyProfile</DisplayName>
    <EntityType value="company"></EntityType>
    <EntityIdentifier ref="request.queryparam.apikey" type="consumerkey"/>
</AccessEntity>

&lt;EntityType&gt; عنصر

تُحدِّد نوع الكيان المطلوب استرداده من مخزن البيانات.

<EntityType  value="entity_type"/>

تلقائي

لا ينطبق

الحضور

مطلوب

النوع

سلسلة

استخدام عنصر EntityIdentifier لتحديد أي كيان من النوع المعين تريد. كمرجع لأنواع الكيانات، يُرجى الاطّلاع على أنواع الكيانات ومعرّفاتها.

السمات

السمة الوصف تلقائي التواجد في المنزل النوع
القيمة أحد أنواع العناصر المتوافقة. يُرجى الاطّلاع على أنواع الكيانات المعرّفات لقائمة. بلا عُري مطلوب. سلسلة

&lt;SecondaryIdentifier&gt; عنصر

جنبًا إلى جنب مع EntityIdentifier، تحدد قيمة لتحديد العنصر المطلوب مثال لـ EntityType المحدد.

<SecondaryIdentifier ref="value_variable" type="identifier_type"/>

تلقائي

لا ينطبق

الحضور

اختياري

النوع

سلسلة

استخدام SecondaryIdentifier عند تحديد EntityIdentifier فقط لا يضمن حصولك على كيان واحد. راجع التضييق بمعرِّفات ثانوية للحصول على مزيد من المعلومات.

ولا يمكن استخدام عناصر SecondaryIdentifier متعدّدة.

السمات

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

يشير ذلك المصطلح إلى المتغيّر الذي يوفّر مصدر المعرّف، مثل. request.queryparam.apikey

لا ينطبق مطلوب. سلسلة
كتابة النوع الذي تمت تعبئته بالمتغير في السمة ref. مثل consumerkey راجِع أنواع الكيانات ومعرّفاتها للحصول على قائمة من القيم. مطلوب. سلسلة

مثال

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AccessEntity async="false" continueOnError="false" enabled="true" name="GetAPIProduct">
    <DisplayName>GetAPIProduct</DisplayName>
    <EntityType value="apiproduct"></EntityType>
    <EntityIdentifier ref="developer.app.name" type="appname"/> 
    <SecondaryIdentifier ref="developer.id" type="developerid"/> 
</AccessEntity>

ملاحظات الاستخدام

تضييق نطاق النتائج باستخدام المعرّفات الثانوية

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

قد تبدو إعدادات السياسة الأولى التي يحتمل أن تكون واسعة النطاق كما يلي:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AccessEntity async="false" continueOnError="false" enabled="true" name="GetApp">
    <DisplayName>GetAppProfile</DisplayName>
    <EntityType value="apiproduct"></EntityType>
    <EntityIdentifier ref="request.queryparam.apikey" type="consumerkey"/>
</AccessEntity>

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

بدلاً من ذلك، للحصول على نتيجة أكثر دقة، يمكنك استخدام SecondaryIdentifier. بالنسبة على سبيل المثال، قد يكون لديك متغيّران appname وdeveloperid في التدفق لأنه يتم تعبئة هذه المعلومات تلقائيًا أثناء عملية تبادل OAuth 2.0. يمكنك استخدام قيم هذه المتغيّرات في سياسة AccessEntity للحصول على تفاصيل الملف الشخصي التطبيق.

قد تظهر إعدادات السياسة الأكثر تحديدًا على النحو التالي:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AccessEntity async="false" continueOnError="false" enabled="true" name="GetApp">
    <DisplayName>GetAppProfile</DisplayName>
    <EntityType value="apiproduct"></EntityType>
    <EntityIdentifier ref="developer.app.name" type="appname"/> 
    <SecondaryIdentifier ref="developer.id" type="developerid"/> 
</AccessEntity>

معرّفات الكيانات وأنواعها المتوافقة

يتيح AccessEntity أنواع الكيانات والمعرّفات التالية.

قيمة نوع الكيان أنواع معرّفات الكيانات أنواع المعرّفات الثانوية
apiproduct appid apiresource
apiproductname
appname apiresource
developeremail
developerid
companyname
consumerkey apiresource
app appid
appname developeremail
developerid
companyname
consumerkey
authorizationcode authorizationcode
company appid
company
consumerkey
companydeveloper companyname
consumerkey consumerkey
consumerkey_scope consumerkey
developer appid
consumerkey
developeremail
developerid
requesttoken requesttoken consumerkey
verifier verifier

مثال على ملف XML الخاص بالملف الشخصي للكيان

لاسترداد قيمة الملف الشخصي للكيان التي تريدها باستخدام XPath، ستحتاج إلى معرفة لبنية XML الخاصة بالملف الشخصي. للاطّلاع على مثال عن البنية، استخدِم استدعاء واجهة برمجة تطبيقات الإدارة XML للكيان الذي تريده. لمعرفة التفاصيل، يُرجى الرجوع إلى management API. المرجع.

تتضمّن الأقسام التالية رمزًا لطلب بيانات من واجهة برمجة التطبيقات، بالإضافة إلى مثال على XML من الطلب.

التطبيقات

$ curl -H "Accept:text/xml" -X GET \
https://api.enterprise.apigee.com/v1/o/{org_name}/apps/{app_id} \
-u email:password

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

أو:

$ curl -H "Accept:text/xml" -X GET \
https://api.enterprise.apigee.com/v1/o/{org_name}/developers/{developer_email}/apps/{app_name} \
-u email:password

يمكنك الاطلاع أيضًا على الحصول على تفاصيل تطبيق المطوّر في مرجع واجهة برمجة التطبيقات لإدارة Edge.

نموذج لملف تعريف:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<App name="thomas-app">
    <AccessType>read</AccessType>
    <ApiProducts/>
    <Credentials>
        <Credential>
            <Attributes/>
            <ConsumerKey>wrqOOOiPArFI0WRoB1gAJMRbOguekJ5w</ConsumerKey>
            <ConsumerSecret>WvOhDrJ8m6kzz7Ni</ConsumerSecret>
            <ApiProducts>
                <ApiProduct>
                    <Name>FreeProduct</Name>
                    <Status>approved</Status>
                </ApiProduct>
            </ApiProducts>
            <Scopes/>
            <Status>approved</Status>
        </Credential>
    </Credentials>
    <AppFamily>default</AppFamily>
    <AppId>ab308c13-bc99-4c50-8434-0e0ed1b86075</AppId>
    <Attributes>
        <Attribute>
            <Name>DisplayName</Name>
            <Value>Tom's Weather App</Value>
        </Attribute>
    </Attributes>
    <CallbackUrl>http://tom.app/login</CallbackUrl>
    <CreatedAt>1362502872727</CreatedAt>
    <CreatedBy>admin@apigee.com</CreatedBy>
    <DeveloperId>PFK8IwOeAOW01JKA</DeveloperId>
    <LastModifiedAt>1362502872727</LastModifiedAt>
    <LastModifiedBy>admin@apigee.com</LastModifiedBy>
    <Scopes/>
    <Status>approved</Status>
</App>

منتج واجهة برمجة التطبيقات

$ curl  -H "Accept:text/xml" -X GET \
https://api.enterprise.apigee.com/v1/o/{org_name}/apiproducts/{apiproduct_name} \
-u email:password

راجِع أيضًا الحصول على واجهة برمجة التطبيقات Product في مرجع واجهة برمجة التطبيقات لإدارة Edge.

يسترد نموذج XPath مورد واجهة برمجة التطبيقات الثاني (URI) من منتج واجهة برمجة التطبيقات المسمى weather_free:

/ApiProduct['@name=weather_free']/ApiResources/ApiResource[1]/text()

يتم عرض نموذج لملف شخصي بتنسيق XML:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ApiProduct name="weather_free">
    <ApiResources>
        <ApiResource>/forecastrss, /reports</ApiResource>
    </ApiResources>
    <ApprovalType>auto</ApprovalType>
    <Attributes>
        <Attribute>
            <Name>description</Name>
            <Value>Introductory API Product</Value>
        </Attribute>
        <Attribute>
            <Name>developer.quota.interval</Name>
            <Value>1</Value>
        </Attribute>
        <Attribute>
            <Name>developer.quota.limit</Name>
            <Value>1</Value>
        </Attribute>
        <Attribute>
            <Name>developer.quota.timeunit</Name>
            <Value>minute</Value>
        </Attribute>
        <Attribute>
            <Name>servicePlan</Name>
            <Value>Introductory</Value>
        </Attribute>
    </Attributes>
    <CreatedAt>1355847839224</CreatedAt>
    <CreatedBy>andrew@apigee.com</CreatedBy>
    <Description>Free API Product</Description>
    <DisplayName>Free API Product</DisplayName>
    <Environments/>
    <LastModifiedAt>1355847839224</LastModifiedAt>
    <LastModifiedBy>andrew@apigee.com</LastModifiedBy>
    <Proxies/>
    <Scopes/>
</ApiProduct>

الشركة

$ curl   -H "Accept:text/xml" -X GET \
https://api.enterprise.apigee.com/v1/o/{org_name}/companies/{company_name} \
-u email:password

يمكنك الاطلاع أيضًا على الحصول على تفاصيل الشركة في مرجع واجهة برمجة التطبيقات لإدارة Edge.

نموذج لملف تعريف:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Company name="theramin">
    <Apps/>
    <DisplayName>Theramin Corporation</DisplayName>
    <Organization>apigee-pm</Organization>
    <Status>active</Status>
    <Attributes>
        <Attribute>
            <Name>billing_code</Name>
            <Value>13648765</Value>
        </Attribute>
    </Attributes>
    <CreatedAt>1349208631291</CreatedAt>
    <CreatedBy>andrew@apigee.com</CreatedBy>
    <LastModifiedAt>1349208631291</LastModifiedAt>
    <LastModifiedBy>andrew@apigee.com</LastModifiedBy>
</Company>

مطوّر برامج الشركة

$ curl -H "Accept:text/xml" -X GET \
https://api.enterprise.apigee.com/v1/o/{org_name}/companies/{company_name}/developers/{developer_name} \
-u email:password

نموذج لملف تعريف:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Developers>
    <Developer>
        <Email>ntesla@theramin.com</Email>
        <Role>developer</Role>
    </Developer>
</Developers>

مفتاح العميل

$ curl -H "Accept:text/xml" -X GET \
https://api.enterprise.apigee.com/v1/o/{org_name}/developers/{developer_email}/apps/{app_name}/keys/{consumer_key} \
-u email:password

راجع أيضًا احصل على التفاصيل الأساسية لتطبيق مطوِّر في مرجع واجهة برمجة التطبيقات لإدارة Edge.

نموذج XPath:

/Credential/ApiProducts/ApiProduct[Name='weather_free']/Status/text()

نموذج لملف تعريف:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Credential>
    <Attributes/>
    <ConsumerKey>XLotL3PRxNkUGXhGAFDPOr6fqtvAhuZe</ConsumerKey>
    <ConsumerSecret>iNUyEaOOh96KR3YL</ConsumerSecret>
    <ApiProducts>
        <ApiProduct>
            <Name>weather_free</Name>
            <Status>approved</Status>
        </ApiProduct>
    </ApiProducts>
    <Scopes/>
    <Status>approved</Status>
</Credential>

مطور التطبيق

$ curl -H "Accept:text/xml" -X GET \
https://api.enterprise.apigee.com/v1/o/{org_name}/developers/{developer_email} \
-u email:password

يمكنك الاطّلاع أيضًا على مقالة الحصول على مطوّر برامج في مرجع واجهة برمجة التطبيقات لإدارة Edge.

نموذج XPath:

/Developer/Attributes/Attribute[Name='my_custom_attribute']/Value/text()
/Developer/Email/text()

نموذج لملف تعريف:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Developer>
    <Apps>
        <App>weatherappx</App>
        <App>weatherapp</App>
    </Apps>
    <Email>ntesla@theramin.com</Email>
    <DeveloperId>4Y4xd0KRZ1wmHJqu</DeveloperId>
    <FirstName>Nikola</FirstName>
    <LastName>Tesla</LastName>
    <UserName>theramin</UserName>
    <OrganizationName>apigee-pm</OrganizationName>
    <Status>active</Status>
    <Attributes>
        <Attribute>
            <Name>project_type</Name>
            <Value>public</Value>
        </Attribute>
    </Attributes>
    <CreatedAt>1349797040634</CreatedAt>
    <CreatedBy>rsaha@apigee.com</CreatedBy>
    <LastModifiedAt>1349797040634</LastModifiedAt>
    <LastModifiedBy>rsaha@apigee.com</LastModifiedBy>
</Developer>

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

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

على سبيل المثال، في حال تنفيذ سياسة AccessEntity التي تحمل الاسم GetDeveloper، فسيتم تخزين الملف الشخصي بتنسيق XML في المتغير المسمى AccessEntity.GetDeveloper يمكن بعد ذلك تحليل الملف الشخصي بتنسيق XML باستخدام تم تحديد XPath في سياسة استخراج المتغيّرات التي تحدّد AccessEntity.GetDeveloper كمصدر لها.

مرجع الخطأ

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

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

بلا عُري

أخطاء النشر

اسم الخطأ سلسلة الخطأ رموز حالة HTTP يحدث عند
InvalidEntityType Invalid type [entity_type] in ACCESSENTITYStepDefinition [policy_name] لا ينطبق يجب أن يكون نوع الكيان المستخدَم من الأنواع المتوافقة.

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