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

Sie sehen sich die Dokumentation zu Apigee Edge an.
Sehen Sie sich die Apigee X-Dokumentation an.
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. Die Funktion „Endnutzer-ID“ 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 aber hilfreich, die Nutzer-ID in einem Zugriffstoken zu speichern. Aktivieren Sie die Funktion für den 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

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

Damit OAuth 2.0-Zugriffstokens nach Endnutzer-ID abgerufen und widerrufen werden können, muss in den Zugriffstokens eine Endnutzer-ID enthalten sein. Im Folgenden wird beschrieben, wie du einem vorhandenen Token eine Endnutzer-ID hinzufügst.

Ein von Edge generiertes OAuth 2.0-Zugriffstoken hat 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, gilt dies für 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. Wenn Sie OAuth 2.0-Zugriffstokens nach Endnutzer-ID abrufen und widerrufen möchten, müssen Sie die OAuth 2.0-Richtlinie so konfigurieren, dass die Nutzer-ID wie unten 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 nicht nach Endnutzer-ID aktivieren.

Sie geben die Endnutzer-ID an den Endpunkt zum Erstellen von Tokens weiter. 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 der Großteil der Konfiguration von Apigee ausgeführt. Sie sind nur dafür verantwortlich, die OAuth 2.0-Richtlinie so zu konfigurieren, dass dem Zugriffstoken die Nutzer-ID hinzugefügt wird. Weitere Informationen finden Sie unten.

  • Edge for Private Cloud-Bereitstellung

    Bei Apigee Edge for Private Cloud (On-Premises) sind Sie für die Konfiguration vollständig verantwortlich. Weitere Informationen finden Sie unter Bedienung und Konfiguration.

  • Apigee Hybrid

    Der Zugriff auf OAuth 2.0-Tokens nach Nutzer-ID ist standardmäßig aktiviert. Sie sind nur dafür verantwortlich, die OAuth 2.0-Richtlinie so zu konfigurieren, dass dem Zugriffstoken die Nutzer-ID hinzugefügt wird. Weitere Informationen finden Sie unten in Schritt 5.

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

Wenn Sie Berechtigungen hinzufügen oder entfernen möchten, wenden Sie sich an den Apigee Edge-Support, damit die Änderungen vorgenommen werden.

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

Durch den Apigee-Support ausgeführt: Bei dieser Aufgabe werden Kopien vorhandener OAuth 2.0-Zugriffstokens in den 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. So können API-Aufrufe für alle Ihre OAuth 2.0-Zugriffstokens abgerufen und widerrufen werden, sowohl vorhandene als auch neu generierte.

Schritt 4: OAuth 2.0-Richtlinie für die Generierung von Zugriffstokens mit Endnutzer-IDs konfigurieren

Konfigurieren Sie die OAuth 2.0-Richtlinie, die zum Generieren von Zugriffstokens verwendet wird, so, dass die Endnutzer-ID im Token enthalten ist. Wenn Sie Endnutzer-IDs in Zugriffstokens aufnehmen, können Sie sie 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 Tag <AppEndUser>, um die Variable anzugeben.

Die folgende OAuth 2.0-Richtlinie mit dem Namen GenerateAccessTokenClient generiert ein OAuth 2.0-Zugriffstoken. Beachten Sie das fett formatierte <AppEndUser>-Tag:

<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 kannst du 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 die Informationen als Teil einer Anfrage auf viele Arten übergeben. Alternativ haben Sie folgende Möglichkeiten:

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