AccessEntity politikası

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

Ne?

Belirttiğiniz varlık profillerini Apigee Edge veri deposundan alır. Politika, profili adı AccessEntity.{policy_name} biçiminde olan bir değişkene yerleştirir. Aşağıdaki kuruluşların profillerine erişmek için AccessEntity kullanabilirsiniz:

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

AccessEntity politikası, politika tabanlı bir çalışma zamanı veritabanı araması olarak işlev görür. Koşullu uç nokta yönlendirme, akış yürütme, politika zorlama gibi dinamik davranışları etkinleştirmek için bu politika tarafından döndürülen profil bilgilerini kullanabilirsiniz.

Varlık profili verilerini XML olarak almak ve bir değişkene yerleştirmek için AccessEntity politikasını kullanırsınız. Alınacak öğeyi, bir öğe türü ve bu türden hangi öğeyi istediğinizi belirten bir veya daha fazla tanımlayıcıyı belirterek tanımlarsınız. Daha sonra, başka bir politikada (ör. ExtractVariables politikası veya AssignMessage politikası) kullanarak tüzel kişilik profili verilerini alabilirsiniz.

Örnekler

Aşağıdaki örneklerde, geliştiricinin e-posta adresini ayıklayıp HTTP üst bilgisine eklemek için AccessEntity'nın ExtractVariables ve AssignMessage politikalarıyla birlikte kullanımı gösterilmektedir.

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

Hangi kuruluş profilinin Edge'den alınacağını ve profil verilerinin nereye yerleştirileceğini belirtmek için AccessEntity politikasını ayarlayın.

Aşağıdaki örnekte, geliştiriciyi tanımlamak için sorgu parametresi olarak iletilen bir API anahtarı kullanılarak politikaya developer öğe profili atanır. Profil, adı AccessEntity.{policy_name} biçiminde olan bir değişkene yerleştirilir. Dolayısıyla bu politika tarafından ayarlanan değişken AccessEntity.GetDeveloperProfile olur.

<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 tarafından ayarlanan değişkenden öğe profili değerini almak için başka bir politika kullanın.

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

Alınan değerin, XMLPayload öğesinde XPath ifadesi olarak belirtildiğini unutmayın. Ayıklanan değer, developer.email değişkenine yerleştirilir.

<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 AssignMessage politikası, ExtractVariables politikası tarafından ayarlanan geliştirici e-posta adresini alır.

<!-- 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ürdeki birden fazla öğeye, bunları bir Identifiers öğesinde gruplandırarak erişebilirsiniz:

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

<AccessEntity> özellikleri

<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

<EntityIdentifier> öğesi

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

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

Varsayılan

Yok

Varlık (Presence)

Zorunlu

Tür

Dize

Özellikler

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

Tanımlayıcının kaynağını sağlayan değişken (ör. request.queryparam.apikey).

Yok Zorunlu. Dize
tür ref özniteliğindeki değişken tarafından doldurulan tür (ör. consumerkey). Değerlerin listesi için Varlık türleri ve tanımlayıcılar bölümüne bakın. 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>

<EntityType> öğesi

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

<EntityType  value="entity_type"/>

Varsayılan

Yok

Varlık (Presence)

Zorunlu

Tür

Dize

Belirli bir türdeki hangi varlığı istediğinizi belirtmek için EntityIdentifier öğesini kullanın. Öğe türleriyle ilgili referans için Öğe türleri ve tanımlayıcılar başlıklı makaleyi inceleyin.

Özellikler

Özellik Açıklama Varsayılan Varlık Tür
value Desteklenen varlık türlerinden biri. Liste için Varlık türleri ve tanımlayıcılar başlıklı makaleye bakın. Yok. Zorunlu. Dize

<SecondaryIdentifier> öğesi

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

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

Varsayılan

Yok

Varlık (Presence)

İsteğe bağlı

Tür

Dize

Yalnızca EntityIdentifier belirtirken SecondaryIdentifier kullanın. Bu, tek bir öğe elde edeceğinizi garanti etmez. Daha fazla bilgi için İkincil tanımlayıcılarla sonuçları daraltma başlıklı makaleyi inceleyin.

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

Özellikler

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

Tanımlayıcının kaynağını sağlayan değişken (ör. request.queryparam.apikey).

Yok Zorunlu. Dize
tür ref özniteliğindeki değişken tarafından doldurulan tür (ör. consumerkey). Değerlerin listesi için Varlık türleri ve tanımlayıcılar bölümüne bakın. 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ıklar için tek bir tanımlayıcı vermek, istediğiniz varlığı elde etmek için yeterli olmayabilir. Bu gibi durumlarda, sonuçları daraltmak için ikincil bir tanımlayıcı kullanabilirsiniz.

İlk ve muhtemelen geniş kapsamlı 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="request.queryparam.apikey" type="consumerkey"/>
</AccessEntity>

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

Bunun yerine daha kesin bir sonuç elde etmek için SecondaryIdentifier kullanabilirsiniz. Örneğin, akışta appname ve developerid değişkenleri olabilir. Çünkü bunlar, OAuth 2.0 değişimi sırasında varsayılan olarak doldurulur. İstekte bulunan uygulamayla ilgili profil ayrıntılarını almak için bu değişkenlerin değerlerini bir AccessEntity politikasında kullanabilirsiniz.

Daha ayrıntılı 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 öğe türlerini ve tanımlayıcılarını 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 öğe profili değerini almak için profil XML'sinin yapısı hakkında bilgi sahibi olmanız gerekir. Yapı örneği için istediğiniz öğenin XML'sini almak üzere bir Management API çağrısı kullanın. Ayrıntılar için Yönetim API'si referansına bakın.

Aşağıdaki bölümlerde, API çağrılarıyla ilgili kodun yanı sıra çağrıdan alınan örnek XML de yer almaktadır.

Uygulamalar

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

Ayrıca, Edge Management API referansındaki Get App in an Organization by App ID (Uygulama Kimliğine Göre Kuruluşta Uygulama Alma) bölümüne bakın.

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 Edge Management API referansındaki Get Developer App Details (Geliştirici Uygulaması Ayrıntılarını Alma) bölümüne bakın.

Ö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

Ayrıca Edge Management API referansındaki Get API Product bölümüne bakın.

Örnek XPath, weather_free adlı API ürününden ikinci API kaynağını (URI) alır:

/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 Edge Management API referansındaki Get Company Details (Şirket Ayrıntılarını Alma) bölümüne bakı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>

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

Ayrıca Edge Management API referansındaki Get Key Details for a Developer App (Geliştirici Uygulaması İçin Anahtar Ayrıntılarını Alma) bölümüne bakı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 Edge Management API referansındaki Get Developer (Geliştiriciyi Al) bölümüne bakın.

Ö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 profil nesnesi mesaj bağlamına değişken olarak eklenir. Değişken adına referans verilerek diğer tüm değişkenler gibi erişilebilir. AccessEntity politikasının kullanıcı tarafından sağlanan adı, 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 adlı değişkende depolanır. XML biçimli profil daha sonra, kaynağı olarak AccessEntity.GetDeveloper değerini belirten bir ExtractVariables politikasında tanımlanan bir XPath kullanılarak ayrıştırılabilir.

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