Diese Seite gilt für Apigee und Apigee Hybrid.
Apigee Edge-Dokumentation aufrufen
Was
Ruft Entitätsprofile ab, die Sie aus dem Apigee-Datenspeicher angeben. Die Richtlinie platziert das Profil in einer Variablen mit dem Namen AccessEntity.{policy_name}
. Mit AccessEntity
können Sie auf Profile für die folgenden Entitäten zugreifen:
- App
- API-Produkt
- Consumer-Key
- Entwickler
Die Richtlinie AccessEntity
dient als richtlinienbasierter Laufzeitdatenbanksuche. Sie können die von dieser Richtlinie zurückgegebenen Profilinformationen verwenden, um das dynamische Verhalten zu aktivieren, z. B. bedingtes Endpunkt-Routing, Ablaufausführung und Richtlinienerzwingung.
Verwenden Sie die Richtlinie AccessEntity
, um Entitätsprofildaten als XML (oder JSON in Apigee Hybrid) abzurufen und in eine Variable einzufügen. Geben Sie die Entität an, die Sie abrufen möchten. Dazu geben Sie einen Entitätstyp und eine oder mehrere Kennungen an, die die gewünschte Entität dieses Typs bestimmen. Später können Sie in einer anderen Richtlinie die Entitätsprofildaten mit einer anderen Richtlinie abrufen, z. B. mit einer ExtractVariables-Richtlinie oder AssignMessage-Richtlinie.
Diese Richtlinie ist eine erweiterbare Richtlinie, deren Verwendung je nach Apigee-Lizenz Auswirkungen auf die Kosten oder die Nutzung haben kann. Informationen zu Richtlinientypen und Auswirkungen auf die Nutzung finden Sie unter Richtlinientypen.
Auf AppGroups-Entitäten über AccessEntity
zugreifen
Sie können auch AccessEntity
zum Abrufen von AppGroup-Entitäten verwenden. Verwandte Entitäten finden Sie unter Unterstützte Entitätstypen und -kennzeichnungen.
Informationen zu AppGroups und unterstützten Funktionen finden Sie unter App-Eigentümerschaft mithilfe von AppGroups organisieren.
Beispiele
Die folgenden Beispiele zeigen AccessEntity
, die in Verbindung mit den Richtlinien ExtractVariables
und AssignMessage
verwendet werden, um die E-Mail eines Entwicklers zu extrahieren und dem HTTP-Header hinzuzufügen.
E-Mail-Adresse des Entwicklers zur Verwendung in anderen Richtlinien abrufen
Richten Sie die Richtlinie AccessEntity
ein, um festzulegen, welches Entitätsprofil von Apigee abgerufen werden soll und wo die Profildaten platziert werden sollen.
Im folgenden Beispiel wird von der Richtlinie ein developer
-Entitätsprofil abgerufen, wobei ein API-Schlüssel als Abfrageparameter übergeben wird, um den Entwickler zu identifizieren. Das Profil wird in einer Variablen platziert, deren Name dem Format AccessEntity.{policy_name}
entspricht. Die von dieser Richtlinie festgelegte Variable wäre also AccessEntity.GetDeveloperProfile
.
<AccessEntity name="GetDeveloperProfile"> <!-- This is the type entity whose profile we need to pull from the Apigee 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>
Verwenden Sie eine andere Richtlinie, um den Wert des Entitätsprofils aus der von AccessEntity
festgelegten Variablen abzurufen.
Im folgenden Beispiel wird ein ExtractVariables
ruft die Richtlinie einen Wert aus der AccessEntity.GetDeveloperProfile
zuvor festgelegte Variable
AccessEntity
, um die Option zu aktivieren.
Beachten Sie, dass der abgerufene Wert als XPath-Ausdruck im Element XMLPayload
angegeben wird. Der extrahierte Wert wird in eine developer.email
-Variable eingefügt.
<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>
Mit der folgenden Zuweisungsrichtlinie wird die Entwickler-E-Mail-Adresse abgerufen, die von der Richtlinie "ExtractVariables" festgelegt wurde.
<!-- 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>
Elementverweis
Die Grundstruktur einer AccessEntity
-Richtlinie lautet:
<AccessEntity name="policy_name"> <EntityType value="entity_type"/> <EntityIdentifier ref="entity_identifier" type="identifier_type"/> <SecondaryIdentifier ref="secondary_identifier" type="identifier_type"/> </AccessEntity>
Sie können auf mehrere Entitäten desselben Typs zugreifen, indem Sie sie in einem Identifiers
- Element gruppieren:
<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>-Attribute
<AccessEntity async="false" continueOnError="false" enabled="true" name="policy_name">
In der folgenden Tabelle werden Attribute beschrieben, die für alle übergeordneten Richtlinienelemente gelten:
Attribut | Beschreibung | Standard | Presence |
---|---|---|---|
name |
Der interne Name der Richtlinie. Der Wert des Attributs Optional können Sie das Element |
– | Erforderlich |
continueOnError |
Legen Sie Legen Sie |
false | Optional |
enabled |
Setzen Sie den Wert auf Legen Sie |
true | Optional |
async |
Dieses Attribut wurde verworfen. |
false | Verworfen |
<DisplayName>-Element
Wird zusätzlich zum Attribut name
verwendet, um die Richtlinie im Proxy-Editor der Verwaltungs-UI mit einem anderen Namen in einer natürlichen Sprache zu versehen.
<DisplayName>Policy Display Name</DisplayName>
Standard |
– Wenn Sie dieses Element weglassen, wird der Wert des Namensattributs |
---|---|
Presence | Optional |
Typ | String |
<EntityIdentifier>-Element
Gibt die spezifische Entität – des Typs in EntityType - an, der abgerufen werden soll.
<EntityIdentifier ref="value_variable" type="identifier_type"/>
Standard | – |
---|---|
Presence | Erforderlich |
Typ | String |
Attribute
Attribut | Beschreibung | Standard | Presence | Typ |
---|---|---|---|---|
ref |
Die Variable, die die Quelle der ID angibt, z. B. |
– | Erforderlich | String |
Typ | Der Typ, der von der Variable im "ref"-Attribut ausgefüllt wird. wie consumerkey . Eine Liste der Werte finden Sie unter Unterstützte Entitätstypen und -kennzeichnungen. |
Erforderlich | String |
Beispiel
<?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>
<EntityType>-Element
Gibt den Entitätstyp an, der aus dem Datenspeicher abgerufen werden soll.
<EntityType value="entity_type"/>
Standard | – |
---|---|
Presence | Erforderlich |
Typ | String |
Mit dem EntityIdentifier
-Element kannst du die gewünschte Entität des angegebenen Typs angeben. Eine Referenz zu Entitätstypen finden Sie unter Unterstützte Entitätstypen und -kennzeichnungen.
Attribute
Attribut | Beschreibung | Standard | Presence | Typ |
---|---|---|---|---|
Wert | Einer der unterstützten Entitätstypen. Eine Liste finden Sie unter unterstützte Entitätstypen und -kennzeichnungen. | – | Erforderlich | String |
<OutputFormat>-Element
Gibt das Format an, das von der AccessEntity-Richtlinie zurückgegeben wird: XML oder JSON.
<OutputFormat>XML</OutputFormat>
Standard |
XML Wenn Sie dieses Element weglassen, wird standardmäßig XML verwendet. |
---|---|
Presence | Optional |
Typ | String (XML oder JSON) |
<SecondaryIdentifier>-Element
Gibt in Verbindung mit EntityIdentifier
einen Wert an, um die gewünschte Instanz des angegebenen EntityType
zu identifizieren.
<SecondaryIdentifier ref="value_variable" type="identifier_type"/>
Standard | – |
---|---|
Presence | Optional |
Typ | String |
Verwenden Sie SecondaryIdentifier
, wenn Sie nur eine EntityIdentifier
angeben, ist nicht garantiert, dass Sie eine einzelne Entität erhalten. Weitere Informationen finden Sie unter Ergebnisse mit sekundären Kennzeichnungen einschränken.
Die Verwendung mehrerer SecondaryIdentifier
-Elemente wird nicht unterstützt.
Attribute
Attribut | Beschreibung | Standard | Presence | Typ |
---|---|---|---|---|
ref |
Die Variable, die die Quelle der ID angibt, z. B. |
– | Erforderlich | String |
Typ | Der Typ, der von der Variable im "ref"-Attribut ausgefüllt wird. wie consumerkey . Eine Liste der Werte finden Sie unter Unterstützte Entitätstypen und -kennzeichnungen. |
Erforderlich | String |
Beispiel
<?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>
Verwendungshinweise
Die Ergebnisse mit sekundären Kennungen eingrenzen
Bei einigen Entitäten ist die Zuweisung einer ID möglicherweise nicht spezifisch genug, um die gewünschte Entität zu erhalten. In diesen Fällen können Sie eine sekundäre Kennzeichnung verwenden, um die Ergebnisse einzugrenzen.
Ihre erste, möglicherweise allgemeine Richtlinienkonfiguration könnte so aussehen:
<?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>
Da eine Anwendung mit mehreren API-Produkten verknüpft werden kann, kann die Verwendung der Anwendungs-ID möglicherweise nicht das gewünschte API-Produkt zurückgeben. Sie erhalten nur das erste von mehreren übereinstimmenden Produkten.
Stattdessen können Sie ein SecondaryIdentifier
verwenden, um ein genaueres Ergebnis zu erhalten. Beispiel: Sie haben die Variablen appname
und developerid
im Ablauf, da sie standardmäßig während eines OAuth 2.0-Austauschs ausgefüllt werden. Sie können die Werte dieser Variablen in einer AccessEntity
-Richtlinie verwenden, um Profildetails zur anfragenden Anwendung abzurufen.
Ihre spezifischere Richtlinienkonfiguration könnte so aussehen:
<?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>
Unterstützte Entitätstypen und -kennzeichnungen
AccessEntity
unterstützt die folgenden Entitätstypen und -kennzeichnungen.
EntityType-Wert | EntityIdentifier-Typen | SecondaryIdentifier-Typen |
---|---|---|
apiproduct |
appid |
apiresource |
apiproductname |
||
appname |
apiresource developeremail developerid appgroupname |
|
consumerkey |
apiresource |
|
app |
appid |
|
appname |
developeremail developerid appgroupname |
|
consumerkey |
||
authorizationcode |
authorizationcode |
|
appgroupname |
appid appgroupname consumerkey |
|
consumerkey |
||
consumerkey |
consumerkey |
|
consumerkey_scope |
consumerkey |
|
developer |
appid |
|
consumerkey |
||
developeremail |
||
developerid |
||
requesttoken |
requesttoken |
consumerkey |
verifier |
verifier |
Beispiel für eine XML-Entitätsprofil-XML
Um den gewünschten Entitätsprofilwert mit XPath abzurufen, müssen Sie etwas über die Struktur der Profil-XML wissen. Verwenden Sie für ein Beispiel der Struktur einen Apigee API-Aufruf, um XML für die gewünschte Entität abzurufen. Weitere Informationen finden Sie in der Apigee API-Referenz.
Die folgenden Abschnitte enthalten Code für API-Aufrufe sowie Beispiel-XML aus dem Aufruf.
Apps
curl https://apigee.googleapis.com/v1/organizations/$ORG/apps/$APP \ -X GET \ -H "Accept:text/xml" \ -H "Authorization: Bearer $TOKEN"
Siehe App nach App-ID abrufen in der Apigee API-Referenz.
oder:
$ curl https://apigee.googleapis.com/v1/organizations/$ORG/developers/$DEVELOPER_EMAIL/apps/$APP \ -X GET \ -H "Accept:text/xml" \ -H "Authorization: Bearer $TOKEN"
Siehe auch Details zu Entwickleranwendungen abrufen in der Apigee API-Referenz.
Beispielprofil:
<?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-Produkt
curl https://apigee.googleapis.com/v1/organizations/$ORG/apiproducts/$APIPRODUCT \ -X GET \ -H "Accept:text/xml" \ -H "Authorization: Bearer $TOKEN"
Siehe auch API-Produkt abrufen in der Apigee API-Referenz.
Beispiel XPath, ruft die zweite API-Ressource (URI) aus dem API-Produkt weather_free
ab:
/ApiProduct['@name=weather_free']/ApiResources/ApiResource[1]/text()
Beispielprofil als XML zurückgegeben:
<?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>
Consumer-Key
curl https://apigee.googleapis.com/v1/organizations/$ORGdevelopers/$DEVELOPER_EMAIL/apps/$APP/keys/$KEY \ -X GET \ -H "Accept:text/xml" \ -H "Authorization: Bearer $TOKEN"
Siehe auch Schlüsseldetails für eine Entwickleranwendung abrufen in der Apigee API-Referenz.
Beispiel-XPath:
/Credential/ApiProducts/ApiProduct[Name='weather_free']/Status/text()
Beispielprofil:
<?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>
Entwickler
curl https://apigee.googleapis.com/v1/organizations/$ORGdevelopers/$DEVELOPER_EMAIL \ -X GET \ -H "Accept:text/xml" \ -H "Authorization: Bearer $TOKEN"
Siehe auch Entwickler abrufen in der Referenz zur Apigee API.
Beispiel-XPath:
/Developer/Attributes/Attribute[Name='my_custom_attribute']/Value/text()
/Developer/Email/text()
Beispielprofil:
<?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>
Ablaufvariablen
Wenn das in der Richtlinie AccessEntity
angegebene Entitätsprofil abgerufen wird, wird das Profilobjekt als Variable zum Nachrichtenkontext hinzugefügt. Sie kann wie jede andere Variable mit Bezug auf den Variablennamen aufgerufen werden. Der vom Nutzer angegebene Name der Richtlinie AccessEntity
wird als Variablenpräfix des Variablennamens festgelegt.
Wenn beispielsweise eine AccessEntity
-Richtlinie mit dem Namen GetDeveloper
ausgeführt wird, wird das Profil in der Variablen AccessEntity.GetDeveloper
gespeichert. Das Profil kann dann mit einem in einer ExtractVariables-Richtlinie definierten XPath geparst werden. Dabei wird AccessEntity.GetDeveloper
als Quelle angegeben.
Fehlerreferenz
Weitere Informationen finden Sie unter Was Sie über Richtlinienfehler wissen müssen und Fehler beheben.
Laufzeitfehler
–
Bereitstellungsfehler
Fehlername | Fehlerstring | HTTP-Status | Tritt auf, wenn Folgendes eintritt |
---|---|---|---|
InvalidEntityType |
Invalid type [entity_type] in ACCESSENTITYStepDefinition
[policy_name] |
– | Der verwendete Entitätstyp muss einer der unterstützten Typen sein. |
Weitere Informationen
ExtractVariables
: ExtractVariables-RichtlinieAssignMessage
: AssignMessage-Richtlinie