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

Sie lesen gerade die Dokumentation zu Apigee Edge.
Zur Dokumentation zu Apigee X.
info

In diesem Abschnitt wird beschrieben, wie Sie das Abrufen und Widerrufen von OAuth 2.0-Zugriffstokens nach Endnutzer-ID, App-ID oder beidem aktivieren. Für das Feature „Endnutzer-ID“ ist eine spezielle Einrichtung erforderlich, 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 sinnvoll, die Nutzer-ID in einem Zugriffstoken zu speichern. Aktivieren Sie das Feature „Endnutzer-ID-Zugriff“ nur, wenn Sie einen guten Anwendungsfall dafür haben. 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 automatisch einem OAuth-Zugriffstoken hinzugefügt. Nachdem Sie den Token Zugriff für eine Organisation wie unten beschrieben aktiviert haben, können Sie Zugriffstokens nach App-ID widerrufen.

Um OAuth 2.0-Zugriffstokens nach Endnutzer-ID abzurufen und zu widerrufen, muss eine Endnutzer-ID in den Zugriffstokens vorhanden sein. Im folgenden Verfahren 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 App-ID aktivieren, gilt dies für die von Ihnen verwendete App-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. Um das Abrufen und Widerrufen von OAuth 2.0-Zugriffstokens nach Endnutzer-ID zu aktivieren, müssen Sie die OAuth 2.0-Richtlinie so konfigurieren, dass die Nutzer-ID wie im folgenden Verfahren beschrieben im Token enthalten ist. Wenn Sie OAuth 2.0-Zugriffstokens nur nach App-ID abrufen und widerrufen möchten, müssen Sie den Zugriff nach Endnutzer-ID nicht aktivieren.

Sie übergeben die Endnutzer-ID an den Endpunkt für die Tokenerstellung. Sie können die ID des Endnutzers als Abfrageparameter, Formularparameter oder in einem Header übergeben (wie weiter unten in diesem Thema erläutert). Wenn Sie Edge so konfiguriert haben, dass die Endnutzer ID im Token enthalten ist, wird sie wie unten dargestellt als Feld app_enduser angezeigt:

{
 "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 App-ID aktivieren

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

  • Cloudbasierte Bereitstellung

    Bei einer cloudbasierten Bereitstellung von Edge wird die meiste Konfiguration von Apigee übernommen. Sie sind nur für die Konfiguration der OAuth 2.0-Richtlinie verantwortlich, um dem Zugriff token die Nutzer-ID hinzuzufügen. Weitere Informationen finden Sie im folgenden Verfahren.

  • Edge for Private Cloud-Bereitstellung

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

  • 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 Zugriff token die Nutzer-ID hinzuzufügen. Weitere Informationen finden Sie unter Schritt 5 des folgenden Verfahrens.

Zugriff in der Cloud aktivieren

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, um Ihre Organisation aktualisieren zu lassen.

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 oauth2 Ressource haben.

Wenn Sie Berechtigungen hinzufügen oder entfernen möchten, wenden Sie sich an den Apigee Edge-Support, um die Aktualisierungen vornehmen zu lassen.

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

Wird vom Apigee-Support ausgeführt: Bei dieser Aufgabe werden Kopien vorhandener OAuth 2.0 Zugriffstokens in betroffenen Organisationen kopiert und in Ihren Cassandra-Knoten gespeichert. Dieses Verfahren 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 Ihre OAuth 2.0-Zugriffstokens ausgeführt werden, sowohl für vorhandene als auch für neu generierte.

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

Konfigurieren Sie die OAuth 2.0-Richtlinie, die zum Generieren von Zugriffstokens verwendet wird, so, dass die Endnutzer-ID im Token enthalten ist. Nach der Aufnahme von Endnutzer-IDs in Zugriffstokens können Sie Tokens nach Endnutzer-ID abrufen und widerrufen.

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 <AppEndUser> Tag, um die Variable anzugeben.

Die folgende OAuth 2.0-Richtlinie mit dem Namen „GenerateAccessTokenClient“ generiert ein OAuth 2.0-Zugriffstoken. Beachten Sie die Hinzufügung des <AppEndUser> Tags in Fettschrift:

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

Mit dem folgenden cURL-Befehl können Sie dann das OAuth 2.0-Zugriffstoken generieren und die Nutzer-ID als Header „appuserID“ ü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. Sie können Informationen auf viele Arten als Teil einer Anfrage übergeben. Alternativ haben Sie folgende Möglichkeiten:

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