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

Edge for Private Cloud v4.19.01

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

Anwendungs-IDs werden automatisch einem OAuth-Zugriffstoken hinzugefügt. Daher ist es nach der Verwendung des wie Sie den Tokenzugriff für eine Organisation aktivieren, können Sie nach App-ID auf Tokens zugreifen.

Zum Abrufen und Widerrufen von OAuth 2.0-Zugriffstokens nach Endnutzer-ID muss eine Endnutzer-ID vorhanden sein im Zugriffstoken. Das folgende Verfahren beschreibt, wie Sie eine Endnutzer-ID zu einem vorhandenen Token hinzufügen oder auf neue Tokens.

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 mit dem Token verknüpften App. Wenn Sie den Abruf und Widerruf aktivieren der OAuth 2.0-Zugriffstokens nach App-ID. Dies ist die von Ihnen verwendete App-ID.
  • Das Feld access_token enthält den Wert des Zugriffstokens für OAuth 2.0.

Konfigurieren Sie die OAuth 2.0-Richtlinie, um die Nutzer-ID wie unten beschrieben in das Token aufzunehmen.

Die Endbenutzer-ID ist die Zeichenfolge, die Edge als Entwickler-ID verwendet, nicht die E-Mail-Adresse des Entwicklers Adresse. Sie können die Entwickler-ID anhand der E-Mail-Adresse des Entwicklers ermitteln, indem Sie die Developer API-Aufruf.

Nachdem Sie Edge so konfiguriert haben, dass die Endbenutzer-ID in das Token aufgenommen wird, wird sie als die app_enduser ein:

{
  "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 OAuth 2.0-Zugriffstokens nach Nutzer-ID und App-ID

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

Verfahren zum Aktivieren des Tokenzugriffs

Gehen Sie wie folgt vor, um das Abrufen und Widerrufen von OAuth 2.0-Zugriffstokens zu aktivieren: Endnutzer-ID und App-ID.

Schritt 1: Unterstützung für 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, für die das Abrufen und Widerrufen von OAuth 2.0-Zugriffstokens aktiviert werden soll Endnutzer-ID oder App-ID abgerufen werden.

Der Nutzer, der den folgenden Aufruf tätigt, muss die Rolle orgadmin haben oder opsadmin für die Organisation. Ersetzen Sie values durch Ihre organisationsspezifische 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 sollte Berechtigungen zum Abrufen (HTTP GET) und Widerruf (HTTP PUT) von OAuth 2.0-Tokens erhalten basierend auf der User-ID oder der App-ID. Um den Zugriff zu steuern, legen Sie für die Ressource "/oauth2" die Berechtigungen "get" und "put" fest für für ein Unternehmen. 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 opsadmin für die /oauth2-Ressource haben, sollten die Berechtigungen so aussehen: dies:

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

Sie können die Methode Get Berechtigung für einen Single Resource API-Aufruf, um zu sehen, welche Rollen Berechtigungen für den /oauth2.

Basierend auf der Antwort können Sie die Schaltfläche Add Berechtigungen für Ressource für eine Rolle und Löschen der Berechtigung für Ressourcen-API-Aufrufe, um notwendige Anpassungen an /oauth2 vorzunehmen Ressourcenberechtigungen.

Weisen Sie die Rolle opsadmin mit dem folgenden curl-Befehl zu. Berechtigungen get und put für die Ressource /oauth2. Ersetzen den 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

Mit dem folgenden curl-Befehl widerrufen Sie get und put. Berechtigungen für die Ressource /oauth2 von anderen Rollen als orgadmin und opsadmin. Ersetzen Sie values durch Ihren organisationsspezifische 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: Festlegen Eigenschaft oauth_max_search_limit

Achten Sie darauf, dass die conf_keymanagement_oauth_max_search_limit Unterkunft in /opt/apigee/customer/application/management-server.properties Datei auf 100 eingestellt ist:

conf_keymanagement_oauth_max_search_limit = 100

Falls diese Datei nicht vorhanden ist, erstellen Sie sie.

Dieses Attribut legt die Seitengröße fest, die beim Abrufen von Tokens verwendet wird. Apigee empfiehlt einen Wert von 100, aber Sie können ihn nach Belieben festlegen.

Bei einer Neuinstallation sollte die Eigenschaft bereits auf 100 festgelegt sein. Wenn Sie die Einstellung dieser Eigenschaft haben, starten Sie den Verwaltungsserver und den Message Processor mit der Methode Befehle:

/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, die Tokens generiert, um die Endnutzer-ID einzubeziehen

OAuth 2.0-Richtlinie konfigurieren, die zum Generieren von Zugriffstokens verwendet wird, um die Endnutzer-ID einzuschließen in das Token. Durch Hinzufügen von Endnutzer-IDs in das Zugriffstoken können Sie Tokens abrufen und widerrufen, indem Sie ID.

Um die Richtlinie so zu konfigurieren, dass eine Endnutzer-ID in ein Zugriffstoken aufgenommen wird, erstellt die Anfrage, muss das Zugriffstoken die Endnutzer-ID enthalten und Sie müssen die Eingabevariable angeben, die enthält die Endnutzer-ID.

Die OAuth 2.0-Richtlinie unten mit dem Namen „GenerateAccessTokenClient“ generiert einen OAuth 2.0-Zugriff. Token. Beachten Sie das fett formatierte <AppEndUser>-Tag, mit dem Variable mit der Endnutzer-ID:

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

Anschließend können Sie mit dem folgenden curl-Befehl den OAuth 2.0-Zugriff generieren. Token mit der 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 Prüfung bestehen Informationen im Rahmen einer Anforderung auf viele verschiedene Arten zu erhalten. Sie haben beispielsweise folgende Möglichkeiten:

  • Verwenden Sie eine Variable für Formularparameter: request.formparam.appuserID
  • Eine Ablaufvariable mit der Endnutzer-ID verwenden