Tokens und Autorisierungscodes anpassen

Sie sehen die Dokumentation zu Apigee Edge.
Zur Apigee X-Dokumentation
weitere Informationen

Informationen zu Tokenmetadaten

Apigee Edge generiert OAuth-Zugriffstokens, Aktualisierungstokens und Autorisierungscodes und sendet diese an authentifizierte Anwendungen. Zum Zeitpunkt der Erstellung speichert Edge diese Tokens und Codes. Wenn Edge eingehende API-Anfragen mit diesen Tokens oder Codes empfängt, verwendet Edge die gespeicherten Informationen zum Autorisieren der Anfragen.

Wenn Edge diese OAuth-Artefakte generiert, werden auch Metadaten an das Token oder Code angehängt. Beispielsweise wird ein Zugriffstoken mit Name/Wert-Paaren verknüpft, die die Ablaufzeit, die zugehörige App und den Entwickler sowie weitere Informationen definieren.

Die JSON-Darstellung eines Edge-Zugriffstokens sieht so aus:

{
  "issued_at" : "1372170159093",
  "application_name" : "ccd1803b-b557-4520-bd62-ddd3abf8e501",
  "scope" : "READ",
  "status" : "approved",
  "api_product_list" : "[Product1,Product2]",
  "api_product_list_json" : ["Product1", "Product2"],
  "expires_in" : "3599", //--in seconds
  "developer.email" : "joe@weathersample.com",
  "organization_id" : "0",
  "refresh_token" : "82XMXgDyHTpFyXOaApj8C2AGIPnN2IZe",
  "client_id" : "deAVedE0W9Z9U35PAMaAJYphBJCGdrND",
  "access_token" : "shTUmeI1geSKin0TODcGLXBNe9vp",
  "organization_name" : "apifactory",
  "refresh_count" : "0"
}

OAuth-Tokens benutzerdefinierte Attribute hinzufügen

Manchmal ist es sinnvoll, benutzerdefinierte Metadaten an ein Zugriffstoken anzuhängen. So können Sie beispielsweise einen Nutzernamen, Gruppenmitgliedschaften oder Rollen für einen Nutzer, eine Kundennummer, eine Sitzungs-ID oder andere beliebige Informationen zu einem Token hinzufügen. In Apigee Edge werden diese Daten als "benutzerdefinierte Attribute" bezeichnet. Wenn das Token anschließend im Rahmen einer API-Anfrage verifiziert wird, werden die Daten dem Kontext des Proxys über Kontextvariablen zur Verfügung gestellt. Ein API-Proxy kann basierend auf den benutzerdefinierten Daten, die an das Token angehängt werden, eine detaillierte Autorisierungs- oder Routingentscheidung treffen.

Mit dem Element <Attributes> in der OAuthV2-Richtlinie können Sie beliebige Daten an ein Token anhängen. Sie können den Namen des benutzerdefinierten Attributs und den gewünschten Wert angeben. Das folgende Beispiel zeigt eine Richtlinienkonfiguration, die ein Token generiert und an das Token an das benutzerdefinierte Attribut "tenant_list" angehängt:

<OAuthV2 name="GenerateAccessToken">
  <Operation>GenerateAccessToken</Operation>
  <ExpiresIn>600000</ExpiresIn>
  <GenerateResponse />
  <SupportedGrantTypes>
    <GrantType>client_credentials</GrantType>
  </SupportedGrantTypes>
  <GrantType>request.queryparam.grant_type</GrantType>
  <Attributes> 
    <Attribute name="tenant_list" ref="tenant_list_retrieved_from_external_service" display="false"/>
  </Attributes>
</OAuthV2>

Sie können mehrere benutzerdefinierte Attribute festlegen. Diese lassen sich entweder implizit an einen Autorisierungscode (<Operation>GenerateAuthorizationCode</Operation>) oder an ein Token (<Operation>GenerateAccessToken</Operation>) zum Zeitpunkt der Generierung anfügen.

Wenn display auf true (Standardeinstellung) gesetzt ist, werden benutzerdefinierte Attribute in der Antwort zurückgegeben und können von der Anwendung gesehen oder an den Endnutzer weitergegeben werden. Wenn display auf false gesetzt ist, werden benutzerdefinierte Attribute im Datenspeicher gespeichert, aber nicht in der Antwortnachricht zurückgegeben. In beiden Fällen stehen die benutzerdefinierten Daten den Richtlinien im API-Proxy zur Verfügung, sobald das Token verifiziert wurde.

Weitere Informationen zur Option display Benutzerdefinierte Attribute in der Antwort ein- oder ausblenden

Benutzerdefinierte Attribute zur Laufzeit abrufen

Wenn OAuthV2/VerifyAccessToken aufgerufen wird, verifiziert Apigee Edge das Token. Dazu wird es im Tokenspeicher gesucht. Apigee Edge füllt dann eine Reihe von Kontextvariablen mit Informationen zum Token aus. Dazu gehören:

  • organization_name
  • developer.id
  • developer.app.name
  • client_id
  • grant_type
  • token_type
  • access_token
  • issued_at
  • expires_in //--in seconds
  • Status
  • Bereich
  • apiproduct.name*

Wenn das Token benutzerdefinierte Attribute enthält, werden diese benutzerdefinierten Attribute in einer Kontextvariable mit dem Namen accesstoken.{custom_attribute} zur Verfügung gestellt. Angenommen, ein Token wird von der oben angezeigten Richtlinie ausgegeben. Nach der Überprüfung eines solchen Tokens gibt es eine zusätzliche Kontextvariable namens accesstoken.tenant_list. Diese enthält den Wert, der bei der Erstellung des Tokens gespeichert wurde.

Richtlinien oder Bedingungen können dann auf diese Variablen verweisen und das Verhalten basierend auf den darin enthaltenen Werten ändern.

Benutzerdefinierte Attribute zur Laufzeit festlegen und aktualisieren

In einigen Situationen ist es sinnvoll, wenn der API-Proxy während der Verarbeitung eines API-Aufrufs von Apigee Edge die Metadaten aktualisiert, die einem Zugriffstoken zur Laufzeit zugeordnet sind. Als Hilfe bietet Apigee Richtlinien zum Abrufen und Festlegen von Tokenattributen. Weitere Informationen finden Sie unter OAuth V2-Informationsrichtlinie abrufen und OAuth-V2-Informationsrichtlinie festlegen.

In jeder dieser Richtlinien sollte sich das Element AccessToken auf eine Variable beziehen, die das Zugriffstoken enthält.

Sie können mithilfe von Edge APIs auch die mit einem Token verknüpften benutzerdefinierten Attribute aktualisieren. Weitere Informationen finden Sie in der API-Dokumentation zur Methode OAuth 2.0-Zugriffstoken aktualisieren.