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:
- OAuth 2.0-Zugriffstoken nach Endnutzer-ID oder App-ID abrufen
- OAuth 2.0-Zugriffstoken nach Endnutzer-ID oder App-ID widerrufen
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