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

In diesem Dokument wird beschrieben, wie Sie das Abrufen und Widerrufen von OAuth 2.0-Zugriffstokens nach Endnutzer-ID, Anwendungs-ID oder beidem aktivieren.

App-IDs werden einem OAuth-Zugriffstoken automatisch hinzugefügt. Nachdem Sie das unten beschriebene Verfahren zum Aktivieren des Tokenzugriffs für eine Organisation verwendet haben, können Sie daher nach App-ID auf Tokens zugreifen.

Zum Abrufen und Widerrufen von OAuth 2.0-Zugriffstokens über die Endnutzer-ID muss eine Endnutzer-ID im Zugriffstoken vorhanden sein. Im Folgenden wird beschrieben, wie Sie einem vorhandenen oder neuen 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",
  "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",
  "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 ermöglichen, ist dies die von Ihnen verwendete Anwendungs-ID.
  • Das Feld access_token enthält den Wert des OAuth 2.0-Zugriffstokens.

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.

Die Endnutzer-ID ist die Zeichenfolge, die Edge als Entwickler-ID verwendet, nicht die E-Mail-Adresse des Entwicklers. Sie können die ID des Entwicklers über den Aufruf der Get Developer API aus der E-Mail-Adresse des Entwicklers ermitteln.

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",
  "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",
  "refresh_count" : "0"
}

APIs zum Abrufen und Widerrufen von OAuth 2.0-Zugriffstoken nach Nutzer-ID und App-ID

Verwenden Sie die folgenden APIs, um nach Nutzer-ID, App-ID oder beidem auf OAuth-Tokens zuzugreifen:

Verfahren zum Aktivieren des Tokenzugriffs

Gehen Sie folgendermaßen vor, um das Abrufen und Widerrufen von OAuth 2.0-Zugriffstokens nach Endnutzer- und Anwendungs-ID zu ermöglichen.

Schritt 1: Unterstützung für den Tokenzugriff für eine Organisation aktivieren

Sie müssen den Tokenzugriff für jede Organisation separat aktivieren. Rufen Sie unten die PUT API für jede Organisation auf, für die Sie das Abrufen und Widerrufen von OAuth 2.0-Zugriffstokens über die Endnutzer-ID oder App-ID aktivieren möchten.

Der Nutzer, der den folgenden Aufruf durchführt, muss in der Rolle orgadmin oder opsadmin für die Organisation sein. Ersetzen Sie values durch Ihre organisationsspezifischen Werte:

curl -H "Content-type:text/xml" -X POST \
  https://management_server_IP;:8080/v1/organizations/org_name \
  -d '<Organization name="org_name">
      <Properties>
        <Property name="features.isOAuthRevokeEnabled">true</Property>
        <Property name="features.isOAuth2TokenSearchEnabled">true</Property>
      </Properties>
    </Organization>' \
  -u USER_EMAIL:PASSWORD

Schritt 2: Berechtigungen für die Rolle „Opsadmin“ in der Organisation festlegen

Nur den Rollen orgadmin und opsadmin in einer Organisation sollten die Berechtigungen zum Abrufen (HTTP GET) und Widerrufen (HTTP PUT) von OAuth 2.0-Tokens basierend auf der Nutzer-ID oder App-ID gewährt werden. Um den Zugriff zu steuern, legen Sie Get- und Put-Berechtigungen für die /oauth2-Ressource für eine Organisation fest. Diese Ressource hat eine URL im folgenden Format:

https://management_server_IP:8080/v1/organizations/org_name/oauth2

Die Rolle orgadmin sollte bereits die erforderlichen Berechtigungen haben. Für die Rolle opsadmin für die Ressource /oauth2 sollten die Berechtigungen so aussehen:

<ResourcePermission path="/oauth2">
  <Permissions>
    <Permission>get</Permission>
    <Permission>put</Permission>
  </Permissions>
</ResourcePermission>

Mit Get Permission for a Single Resource API (Berechtigung für eine einzelne Resource API abrufen) können Sie sehen, welche Rollen Berechtigungen für die Ressource /oauth2 haben.

Basierend auf der Antwort können Sie die API-Aufrufe Berechtigungen für Ressource zu einer Rolle hinzufügen und Berechtigung für Ressource löschen verwenden, um die erforderlichen Anpassungen an den Ressourcenberechtigungen /oauth2 vorzunehmen.

Verwenden Sie den folgenden curl-Befehl, um der opsadmin-Rolle get und put die Berechtigungen für die Ressource /oauth2 zuzuweisen. Ersetzen Sie values durch Ihre organisationsspezifischen Werte:

curl -X POST -H 'Content-type:application/xml' \
  http://management_server_IP:8080/v1/organizations/org_name/userroles/opsadmin/permissions \
  -d '<ResourcePermission path="/oauth2">
      <Permissions>
        <Permission>get</Permission>
        <Permission>put</Permission>
      </Permissions>
    </ResourcePermission>' \
  -u USEREMAIL:PASSWORD

Verwenden Sie den folgenden curl-Befehl, um die Berechtigungen get und put für die Ressource /oauth2 für andere Rollen als orgadmin und opsadmin zu widerrufen. Ersetzen Sie values durch Ihre organisationsspezifischen Werte:

curl -X DELETE -H 'Content-type:application/xml' \
  http://management_server_IP:8080/v1/organizations/org_name/userroles/roles/permissions \
  -d '<ResourcePermission path="/oauth2">
      <Permissions></Permissions>
    </ResourcePermission>' \
   -u USEREMAIL:PASSWORD

Schritt 3: Attribut „oauth_max_search_limit“ festlegen

Achten Sie darauf, dass das Attribut conf_keymanagement_oauth_max_search_limit in der Datei /opt/apigee/customer/application/management-server.properties auf 100 festgelegt ist:

conf_keymanagement_oauth_max_search_limit = 100

Wenn diese Datei nicht vorhanden ist, erstellen Sie sie.

Diese Eigenschaft legt die Seitengröße fest, die beim Abrufen von Tokens verwendet wird. Apigee empfiehlt einen Wert von 100, den Sie jedoch nach eigenem Ermessen festlegen können.

Bei einer Neuinstallation sollte die Eigenschaft bereits auf 100 festgelegt sein. Wenn Sie den Wert dieser Eigenschaft ändern müssen, starten Sie den Management Server und den Message Processor mit den folgenden Befehlen neu:

/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

Schritt 4: OAuth 2.0-Richtlinie konfigurieren, mit der Tokens generiert werden, die die Endnutzer-ID 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 das Zugriffstoken aufnehmen, können Sie Tokens nach ID abrufen und widerrufen.

Damit die Richtlinie so konfiguriert wird, dass eine Endnutzer-ID in ein Zugriffstoken aufgenommen wird, muss die Anfrage, mit der das Zugriffstoken erstellt wird, die Endnutzer-ID enthalten. Außerdem müssen Sie die Eingabevariable angeben, die die Endnutzer-ID enthält.

Die unten aufgeführte OAuth 2.0-Richtlinie mit dem Namen „GenerateAccessTokenClient“ generiert ein OAuth 2.0-Zugriffstoken. Beachten Sie das zusätzliche <AppEndUser>-Tag in Fettdruck, das die Variable angibt, die die Endnutzer-ID enthält:

<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 appuserID-Header übergeben:

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

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

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