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

Edge for Private Cloud v4.18.05

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

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 also nach Anwendungs-ID auf Tokens zugreifen.

Damit OAuth 2.0-Zugriffstokens nach Endnutzer-ID abgerufen und widerrufen werden können, muss das Zugriffstoken eine Endnutzer-ID enthalten. Im Folgenden wird beschrieben, wie Sie einer vorhandenen oder einer neuen Token-Instanz eine Endnutzer-ID hinzufügen.

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",
  "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 mit dem Token verknüpften App. 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.

Um das Abrufen und Widerrufen von OAuth 2.0-Zugriffstokens nach Endnutzer-ID zu ermöglichen, konfiguriere die OAuth 2.0-Richtlinie so, dass die Nutzer-ID wie unten beschrieben im Token enthalten ist.

Die Endnutzer-ID ist der String, der in Edge als Entwickler-ID verwendet wird, nicht die E-Mail-Adresse des Entwicklers. Sie können die ID des Entwicklers anhand seiner E-Mail-Adresse ermitteln, indem Sie den API-Aufruf „Get Developer“ verwenden.

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",
  "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-Zugriffstokens nach Nutzer-ID und App-ID

Mit den folgenden APIs können Sie auf OAuth-Tokens nach Benutzer-ID, App-ID oder beidem zugreifen:

Verfahren zum Aktivieren des Tokenzugriffs

Führen Sie die folgenden Schritte aus, um das Abrufen und Widerrufen von OAuth 2.0-Zugriffstokens nach Endnutzer-ID und App-ID zu aktivieren.

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 die PUT API unten für jede Organisation auf, für die Sie das Abrufen und Widerrufen von OAuth 2.0-Zugriffstokens anhand der Endnutzer-ID oder Anwendungs-ID aktivieren möchten.

Der Nutzer, der den folgenden Aufruf ausführt, muss die Rolle orgadmin oder opsadmin für die Organisation haben. 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 die Rollen orgadmin und opsadmin in einer Organisation sollten Berechtigungen zum Abrufen (HTTP GET) und Widerrufen (HTTP PUT) von OAuth 2.0-Tokens basierend auf der Nutzer-ID oder App-ID erhalten. Um den Zugriff zu steuern, legen Sie Get- und Put-Berechtigungen für die Ressource „/oauth2“ 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 dem Get Permission for a Single Resource API-Aufruf sehen Sie, 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 zum Löschen von Ressourcen verwenden, um die erforderlichen Anpassungen an den Ressourcenberechtigungen /oauth2 vorzunehmen.

Verwenden Sie den folgenden curl-Befehl, um der Rolle opsadmin die Berechtigungen get und put für die Ressource /oauth2 zu gewähren. 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 get- und put-Berechtigungen für die /oauth2-Ressource für andere Rollen als orgadmin und opsadmin aufzuheben. 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: Das Attribut „oauth_max_search_limit“ festlegen

Das Attribut conf_keymanagement_oauth_max_search_limit in der Datei /opt/apigee/customer/application/management-server.properties muss auf 100 festgelegt sein:

conf_keymanagement_oauth_max_search_limit = 100

Wenn diese Datei nicht vorhanden ist, erstellen Sie sie.

Mit dieser Property wird die Seitengröße festgelegt, die beim Abrufen von Tokens verwendet wird. Apigee empfiehlt einen Wert von 100, Sie können ihn aber nach Belieben festlegen.

Bei einer Neuinstallation sollte die Property bereits auf 100 festgelegt sein. Wenn Sie den Wert dieses Attributs ändern müssen, starten Sie den Verwaltungsserver 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 für die Tokengenerierung so konfigurieren, dass die Endnutzer-ID enthalten ist

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 anhand der ID abrufen und widerrufen.

Wenn Sie die Richtlinie so konfigurieren möchten, 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 folgende OAuth 2.0-Richtlinie mit dem Namen GenerateAccessTokenClient generiert ein OAuth 2.0-Zugriffstoken. Beachten Sie das fett formatierte <AppEndUser>-Tag, mit dem die Variable angegeben wird, 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 kannst du 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. Sie können die Informationen als Teil einer Anfrage auf viele Arten übergeben. Sie haben beispielsweise folgende Möglichkeiten:

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