Abrufen und Widerrufen von OAuth 2.0-Zugriffstokens nach Endnutzer-ID, App-ID oder beidem aktivieren

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

In diesem Abschnitt wird beschrieben, wie Sie das Abrufen und Widerrufen von OAuth 2.0-Zugriffstokens nach Endnutzer-ID, App-ID oder beidem aktivieren. Die Endnutzer-ID-Funktion erfordert eine spezielle Einrichtung, wie in diesem Thema beschrieben. "Endnutzer" bezeichnet den Nutzer der Anwendung, die die API aufruft.

Wann sollte der Endnutzer-ID-Zugriff aktiviert werden?

Manchmal ist es hilfreich, die Nutzer-ID in einem Zugriffstoken zu speichern. Aktivieren Sie die Zugriffsfunktion für Endnutzer-IDs nur, wenn es einen geeigneten Anwendungsfall dafür gibt. Beispiel:

  • Ein Feature für Ihre Website oder App, damit Nutzer sehen können, welche Drittanbieter-Apps sie autorisiert haben und den Zugriff auf diese Apps bei Bedarf widerrufen können.
  • Ein Feature, mit dem ein autorisierter Nutzer alle Zugriffstokens widerrufen kann, die mit einer bestimmten Entwickleranwendung verknüpft sind.

Informationen zu OAuth-Zugriffstokens

App-IDs werden einem OAuth-Zugriffstoken automatisch hinzugefügt. Nachdem Sie den Tokenzugriff für eine Organisation wie unten beschrieben aktiviert haben, können Sie daher Zugriffstokens nach App-ID widerrufen.

Zum Abrufen und Widerrufen von OAuth 2.0-Zugriffstokens über die Endnutzer-ID müssen die Zugriffstokens eine Endnutzer-ID enthalten. Im Folgenden wird beschrieben, wie Sie einem vorhandenen Token eine Endnutzer-ID hinzufügen.

Wenn Edge ein OAuth 2.0-Zugriffstoken generiert, hat das Token standardmäßig das folgende Format:

{
 "issued_at" : "1421847736581",
 "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a",
 "scope" : "READ",
 "status" : "approved",
 "api_product_list" : "[PremiumWeatherAPI]",
 "expires_in" : "3599", //--in seconds
 "developer.email" : "tesla@weathersample.com",
 "organization_id" : "0",
 "token_type" : "BearerToken",
 "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP",
 "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL",
 "organization_name" : "myorg",
 "refresh_token_expires_in" : "0", //--in seconds
 "refresh_count" : "0"
}

Wichtige Hinweise:

  • Das Feld application_name enthält die UUID der Anwendung, die mit dem Token verknüpft ist. Wenn Sie das Abrufen und Widerrufen von OAuth 2.0-Zugriffstokens nach Anwendungs-ID aktivieren, ist dies die von Ihnen verwendete Anwendungs-ID.
  • Das Feld access_token enthält den Wert des OAuth 2.0-Zugriffstokens.

Im Standard-OAuth-Zugriffstoken gibt es kein Feld für die Endnutzer-ID. Damit OAuth 2.0-Zugriffstokens über die Endnutzer-ID abgerufen und widerrufen werden können, müssen Sie die OAuth 2.0-Richtlinie so konfigurieren, dass die Nutzer-ID in das Token aufgenommen wird, wie unten beschrieben. Wenn Sie OAuth 2.0-Zugriffstokens nur anhand der Anwendungs-ID abrufen und widerrufen möchten, müssen Sie den Zugriff nicht über die Endnutzer-ID aktivieren.

Sie übergeben die Endnutzer-ID an den Endpunkt der Tokenerstellung. Sie können die ID des Endnutzers als Abfrageparameter, Formularparameter oder Header übergeben. Dies wird weiter unten in diesem Thema erläutert. Nachdem Sie Edge so konfiguriert haben, dass die Endnutzer-ID in das Token aufgenommen wird, wird es wie unten gezeigt als Feld app_enduser eingefügt:

{
 "issued_at" : "1421847736581",
 "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a",
 "scope" : "READ",
 "app_enduser" : "6ZG094fgnjNf02EK",
 "status" : "approved",
 "api_product_list" : "[PremiumWeatherAPI]",
 "expires_in" : "3599", //--in seconds
 "developer.email" : "tesla@weathersample.com",
 "organization_id" : "0",
 "token_type" : "BearerToken",
 "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP",
 "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL",
 "organization_name" : "myorg",
 "refresh_token_expires_in" : "0", //--in seconds
 "refresh_count" : "0"
}

Informationen darüber, wie die API-Aufrufe ausgeführt werden, die diese Vorgänge zum Abrufen und Widerrufen ausführen, finden Sie in den folgenden Smart Docs:

Zugriff auf OAuth-2.0-Tokens nach Nutzer-ID und Anwendungs-ID aktivieren

Wie Sie den Zugriff auf OAuth 2.0-Tokens nach Nutzer-ID und Anwendungs-ID aktivieren, hängt davon ab, wie Sie Edge bereitgestellt haben:

  • Cloudbasierte Bereitstellung

    Bei einer cloudbasierten Bereitstellung von Edge wird der Großteil der Konfiguration von Apigee übernommen. Sie sind nur für die Konfiguration der OAuth 2.0-Richtlinie verantwortlich, um dem Zugriffstoken die Nutzer-ID hinzuzufügen. Weitere Informationen dazu finden Sie unten.

  • Edge für die Bereitstellung einer Private Cloud

    In Apigee Edge for Private Cloud (lokal) sind Sie vollständig für die Konfiguration verantwortlich. Weitere Informationen finden Sie unter Vorgänge und Konfiguration.

  • Apigee Hybrid

    Der Zugriff auf OAuth-2.0-Tokens nach Nutzer-ID ist standardmäßig aktiviert. Sie sind nur für die Konfiguration der OAuth 2.0-Richtlinie verantwortlich, um dem Zugriffstoken die Nutzer-ID hinzuzufügen. Weitere Informationen finden Sie in Schritt 5 der Anleitung unten.

Zugriff in der Cloud ermöglichen

Schritt 1: Eine Organisation zur Unterstützung dieses Features aktivieren

Dieses Feature muss für jede Organisation aktiviert werden, die dieses Feature unterstützen soll.

Wenden Sie sich an den Apigee Edge-Support, damit er Ihre Organisation aktualisiert.

Schritt 2: oauth2-Ressourcenberechtigungen für die Rollen opsadmin und orgadmin bereitstellen

Nur die Rollen orgadmin und opsadmin sollten Berechtigungen zum Abrufen (get) und Widerrufen (put) dieser Aufrufe für die oauth2-Ressource entsprechend der Endnutzer-ID oder App-ID erhalten.

Mit dem Get Permission for a Resource API-Aufruf sehen Sie, welche Rollen die Berechtigungen get und put für die Ressource oauth2 haben.

Wenn Sie Berechtigungen hinzufügen oder entfernen müssen, wenden Sie sich an den Apigee Edge-Support, damit er die Aktualisierungen durchführt.

Schritt 3: Vorhandene OAuth 2.0-Zugriffstokens in die Cassandra-Knoten kopieren

Durch Apigee-Support: In dieser Aufgabe werden Kopien vorhandener OAuth 2.0-Zugriffstokens in betroffenen Organisationen kopiert und in Ihren Cassandra-Knoten gespeichert. Dieser Vorgang wird auf den Cassandra-Knoten für jeden Ihrer Apigee Edge-Pods ausgeführt. Dadurch können die API-Aufrufe zum Abrufen und Widerrufen für alle vorhandenen und neu generierten OAuth 2.0-Zugriffstokens ausgeführt werden.

Schritt 4: Attribut „oauth_max_search_limit“ dem Verwaltungsserver und dem Message Processor hinzufügen

In dieser Aufgabe werden die keymanagement.properties-Dateien für Ihren Verwaltungsserver und den Message Processor so aktualisiert, dass sie die folgende Property enthalten: oauth_max_search_limit = 100. 100 ist der von Apigee empfohlene Wert, der jedoch nach eigenem Ermessen festgelegt werden kann.

Bitten Sie den Apigee Edge-Support, diese Ergänzung vorzunehmen.

Schritt 5: OAuth 2.0-Richtlinie konfigurieren, um Zugriffstokens zu generieren, die Endnutzer-IDs enthalten

Konfigurieren Sie die OAuth 2.0-Richtlinie zum Generieren von Zugriffstokens, um die Endnutzer-ID in das Token aufzunehmen. Wenn Sie Endnutzer-IDs in Zugriffstokens einschließen, können Sie dann Abfragen und Widerrufe nach Endnutzer-ID durchführen.

Um die Richtlinie für das Einfügen der Endnutzer-ID in ein Zugriffstoken zu konfigurieren, müssen Sie die Eingabevariable angeben, die die Endnutzer-ID enthält. Verwenden Sie das Tag <AppEndUser>, um die Variable anzugeben.

Die unten stehende OAuth 2.0-Richtlinie mit dem Namen GenerateAccessTokenClient generiert ein OAuth 2.0-Zugriffstoken. Beachten Sie das zusätzliche <AppEndUser>-Tag in Fettdruck:

<OAuthV2 async="false" continueOnError="false" enabled="true" name="GenerateAccessTokenClient">
  <DisplayName>OAuth 2.0.0 1</DisplayName>
  <ExternalAuthorization>false</ExternalAuthorization>
  <Operation>GenerateAccessToken</Operation>
  <SupportedGrantTypes>
    <GrantType>client_credentials</GrantType>
  </SupportedGrantTypes>
  <GenerateResponse enabled="true"/>
  <GrantType>request.queryparam.grant_type</GrantType>
  <AppEndUser>request.header.appuserID</AppEndUser>
  <ExpiresIn>960000</ExpiresIn>
</OAuthV2>

Sie können dann den folgenden cURL-Befehl verwenden, um das OAuth 2.0-Zugriffstoken zu generieren und die Nutzer-ID als appuserID-Header zu übergeben:

curl -H "appuserID:6ZG094fgnjNf02EK" /
  https://myorg-test.apigee.net/oauth/client_credential/accesstoken?grant_type=client_credentials /
  -X POST /
  -d 'client_id=k3nJyFJIA3p62TKIkLO6OJNi87GYXFmP&client_secret=gk58jK5lIp943AY4'

In diesem Beispiel wird die appuserID als Anfrageheader übergeben. Es gibt verschiedene Möglichkeiten, Informationen im Rahmen einer Anfrage zu übergeben. Alternativ haben Sie folgende Möglichkeiten:

  • Eine Formularparametervariable verwenden: request.formparam.appuserID
  • Eine Ablaufvariable mit der Endnutzer-ID verwenden