AccessEntity politikası

Apigee Edge belgelerini görüntülüyorsunuz.
. Git: Apigee X belgeleri.
bilgi

Ne?

Apigee Edge veri deposundan belirttiğiniz varlık profillerini alır. Bu politika, profili AccessEntity.{policy_name} biçiminde olan bir değişkende oluşturulur. Siz aşağıdaki varlıkların profillerine erişmek için AccessEntity öğesini kullanabilir:

  • Uygulama
  • API ürünü
  • Şirket
  • Şirketin geliştiricisi
  • Tüketici anahtarı
  • Geliştirici
ziyaret edin.

AccessEntity politikası, politikaya dayalı bir çalışma zamanı veritabanı araması işlevi görür. Siz aşağıdaki gibi dinamik davranışları etkinleştirmek için bu politika tarafından döndürülen profil bilgilerini kullanabilir: koşullu uç nokta yönlendirmesi, akış yürütme, politika yaptırımı.

Varlık profili verilerini şu şekilde almak için AccessEntity politikasını kullanırsınız: XML olarak ayarlayın ve bir değişkene yerleştirin. Alınacak varlığı, bir varlık belirterek tanımlarsınız türü ve söz konusu türün hangi varlığı istediğinizi belirten bir veya daha fazla tanımlayıcıyı ekleyin. Daha sonra Varlık profili verilerini başka bir politika ile alabilirsiniz (örneğin, ExtractVariables politikası veya AssignmentMessage politikası.

Örnekler

Aşağıdaki örneklerde AccessEntity Geliştiricinin verilerini ayıklamak için ExtractVariables ve AssignMessage politikaları HTTP üstbilgisine ekleyin.

Diğer politikalarda kullanılmak üzere geliştirici e-posta adresini alma

Hangi varlık profilinden alınacağını belirtmek için AccessEntity politikasını ayarlayın Edge ve profil verilerinin nereye yerleştirileceği.

Aşağıdaki örnekte politika, developer Geliştiriciyi tanımlamak için sorgu parametresi olarak iletilen API anahtarı. Profil, değişkeni için belirtilen değer AccessEntity.{policy_name} biçimindedir. Dolayısıyla, değişken AccessEntity.GetDeveloperProfile olması gerekir.

<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>

Varlık profili değerini, tarafından ayarlanan değişkenden almak için başka bir politika kullanın. AccessEntity.

Aşağıdaki örnekte, bir ExtractVariables politikası tarafından daha önce ayarlanan AccessEntity.GetDeveloperProfile değişkeni AccessEntity.

Alınan değerin XMLPayload öğesi. Çıkarılan değer, developer.email değişkeni

<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>

Aşağıdaki AssignmentMessage politikası, Google tarafından ayarlanan geliştirici e-postasını alır. ExtractVariables politikası.

<!-- 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>

Öğe referansı

AccessEntity politikasının temel yapısı şöyledir:

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

Aynı türden birden çok varlığa, bu öğeleri aynı grupta toplayarak erişebilirsiniz. Identifiers öğe:

<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; özellikler

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

Aşağıdaki tabloda tüm politika üst öğelerinde ortak olan özellikler açıklanmaktadır:

Özellik Açıklama Varsayılan Varlık
name

Politikanın dahili adı. name özelliğinin değeri Harf, sayı, boşluk, kısa çizgi, alt çizgi ve nokta içermelidir. Bu değer, 255 karakteri aşmalıdır.

İsteğe bağlı olarak, politikayı<DisplayName> yönetim arayüzü proxy düzenleyicisinde farklı bir doğal dil adı kullanabilir.

Yok Zorunlu
continueOnError

Bir politika başarısız olduğunda hata döndürmesi için false olarak ayarlayın. Bu beklenen bir durumdur çoğu politika için geçerli olur.

Akış yürütmenin bir politikadan sonra bile devam etmesi için true olarak ayarlayın başarısız olur.

false İsteğe bağlı
enabled

Politikayı uygulamak için true olarak ayarlayın.

Politikayı devre dışı bırakmak için false değerine ayarlayın. Bu politika, bir akışa bağlı kalsa bile uygulanır.

true İsteğe bağlı
async

Bu özelliğin desteği sonlandırıldı.

false Kullanımdan kaldırıldı

&lt;DisplayName&gt; öğe

Politikayı name özelliğine ek olarak farklı bir doğal dil adına sahip yönetim arayüzü proxy düzenleyicisi.

<DisplayName>Policy Display Name</DisplayName>
Varsayılan

Yok

Bu öğeyi çıkarırsanız politikanın name özelliğinin değeri: kullanılır.

Varlık İsteğe bağlı
Tür Dize

&lt;EntityIdentifier&gt; öğe

Alınacak belirli varlığı (EntityType'ta verilen türde) belirtir.

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

Varsayılan

Yok

Bulunma

Zorunlu

Tür

Dize

Özellikler

Özellik Açıklama Varsayılan Varlık Tür
referans

Tanımlayıcının kaynağını sağlayan değişken; örneğin, request.queryparam.apikey

Yok Zorunlu. Dize
tür ref özelliğindeki değişken tarafından doldurulan tür. örneğin: consumerkey Aşağıdakiler için Varlık türleri ve tanımlayıcıları: bir değerler listesidir. Zorunlu. Dize

Örnek

<?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; öğe

Veri deposundan alınacak varlığın türünü belirtir.

<EntityType  value="entity_type"/>

Varsayılan

Yok

Bulunma

Zorunlu

Tür

Dize

Belirtmek için bir EntityIdentifier öğesi kullanın istediğiniz türü seçebilirsiniz. Varlık türlerine ilişkin referans için Varlık türleri ve tanımlayıcılar bölümüne bakın.

Özellikler

Özellik Açıklama Varsayılan Varlık Tür
value Desteklenen varlık türlerinden biri. Bkz. Varlık türleri ve tanımlayıcıları inceleyebilirsiniz. Yok. Zorunlu. Dize

&lt;SecondaryIdentifier&gt; öğe

EntityIdentifier ile birlikte, istenen öğeyi tanımlamak için bir değer belirtir. EntityType örneğidir.

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

Varsayılan

Yok

Bulunma

İsteğe bağlı

Tür

Dize

Yalnızca EntityIdentifier belirtirken SecondaryIdentifier kullanın tek bir tüzel kişiliğe sahip olacağınızı garanti etmez. Bkz. Daraltma sonuçlar başlıklı makaleyi inceleyin.

Birden fazla SecondaryIdentifier öğesi kullanılması desteklenmez.

Özellikler

Özellik Açıklama Varsayılan Varlık Tür
referans

Tanımlayıcının kaynağını sağlayan değişken; örneğin, request.queryparam.apikey

Yok Zorunlu. Dize
tür ref özelliğindeki değişken tarafından doldurulan tür. örneğin: consumerkey Aşağıdakiler için Varlık türleri ve tanımlayıcıları: bir değerler listesidir. Zorunlu. Dize

Örnek

<?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>

Kullanım notları

İkincil tanımlayıcılarla sonuçları daraltma

Bazı varlıklarda tek bir tanımlayıcı vermek, odaklandığınız varlığı almaya yetecek kadar spesifik olmayabilir gerekir. Bu durumlarda, sonuçları daraltmak için ikincil bir tanımlayıcı kullanabilirsiniz.

Muhtemelen geniş kapsamlı olan ilk politika yapılandırmanız aşağıdaki gibi görünebilir:

<?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>

Bir uygulama birden fazla API ürünüyle ilişkilendirilebildiğinden yalnızca uygulama kimliğinin kullanılması istediğiniz API ürününü döndürebilirsiniz (eşleşen birden fazla üründen yalnızca ilkini alabilirsiniz).

Bunun yerine, daha kesin sonuç almak için bir SecondaryIdentifier kullanabilirsiniz. Örneğin, Örneğin, akışta appname ve developerid değişkenleriniz olabilir çünkü bu alanlar OAuth 2.0 değişimi sırasında varsayılan olarak doldurulur. Şu değerleri kullanabilirsiniz: İstekle ilgili profil ayrıntılarını almak için AccessEntity politikasındaki bu değişkenleri uygulamasını indirin.

Daha spesifik politika yapılandırmanız şu şekilde görünebilir:

<?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>

Desteklenen varlık türleri ve tanımlayıcılar

AccessEntity aşağıdaki varlık türlerini ve tanımlayıcıları destekler.

EntityType Değeri EntityIdentifier Türleri İkincil Tanımlayıcı Türleri
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

Örnek varlık profili XML'si

XPath ile istediğiniz varlık profili değerini almak için hakkında bir şeyler bilmeniz gerekir profil XML'sinin yapısı. Yapı örneği için bir management API çağrısıyla İstediğiniz varlık için XML. Ayrıntılar için management API'ye bakın referans.

Aşağıdaki bölümlerde, çağrıdan alınan örnek XML ile birlikte API çağrılarına yönelik kod bulunmaktadır.

Uygulamalar

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

Uygulamayı Edge management API referansında Uygulama kimliğine göre düzenleme.

veya:

$ 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

Ayrıca bkz. Geliştirici Uygulaması Ayrıntıları'nı inceleyin.

Örnek profil:

<?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>

API ürünü

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

API'yi alma bölümüne de bakın. Edge Management API referansındaki Ürün.

Örnek XPath, ikinci API kaynağını (URI) weather_free:

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

XML olarak döndürülen örnek profil:

<?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>

Şirket

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

Ayrıca bkz. Şirket Ayrıntıları'nı tıklayın.

Örnek profil:

<?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>

Şirketin geliştiricisi

$ 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

Örnek profil:

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

Tüketici anahtarı

$ 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

Şu kaynakları da inceleyin: Geliştirici Uygulamasının Anahtar Ayrıntılarını Edge management API referansında alın.

Örnek XPath:

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

Örnek profil:

<?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>

Geliştirici

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

Ayrıca şurada Geliştirici Al konusuna bakın: Edge Management API referansı.

Örnek XPath:

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

Örnek profil:

<?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>

Akış değişkenleri

AccessEntity politikasında belirtilen varlık profili alındığında XML biçimli profile nesnesi, mesaj bağlamına değişken olarak eklenir. Diğer herkes gibi değişkeni için aynı değeri gönderin. AccessEntity politikasının kullanıcı tarafından sağlanan adı değeri, değişken adının değişken öneki olarak ayarlanır.

Örneğin, GetDeveloper adlı bir AccessEntity politikası yürütülürse XML biçimli profil, AccessEntity.GetDeveloper. XML biçimli profil daha sonra AccessEntity.GetDeveloper belirten bir ExtractVariables politikasında tanımlı XPath seçeceğiz.

Hata referansı

İlgili bilgiler için Politika hataları hakkında bilmeniz gerekenler ve Hataları işleme bölümlerine bakın.

Çalışma zamanı hataları

Yok.

Dağıtım hataları

Hata adı Hata dizesi HTTP durumu Gerçekleşme zamanı:
InvalidEntityType Invalid type [entity_type] in ACCESSENTITYStepDefinition [policy_name] Yok Kullanılan varlık türü, desteklenen türlerden biri olmalıdır.

İlgili konular