Tokens und Autorisierungscodes anpassen

Diese Seite gilt für Apigee und Apigee Hybrid.

Apigee Edge-Dokumentation aufrufen

Informationen zu Token- und Autorisierungscode-Metadaten

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

Wenn Apigee 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 Apigee-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"
}

Benutzerdefinierte Attribute zu OAuth-Tokens und Autorisierungscodes 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 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 und den Wert des benutzerdefinierten Attributs 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 finden Sie unter Benutzerdefinierte Attribute in der Antwort ein- oder ausblenden.

Benutzerdefinierte Zugriffstokenattribute zur Laufzeit abrufen

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

  • organization_name
  • developer.id
  • developer.app.name
  • client_id
  • grant_type
  • token_type
  • access_token
  • issued_at
  • expires_in //--in Sekunden
  • status
  • scope
  • 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 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 muss das AccessToken-Element auf eine Variable verweisen, die das Zugriffstoken enthält.