Edge for Private Cloud w wersji 4.17.09
Ten dokument opisuje, jak włączyć pobieranie i unieważnianie tokenów dostępu OAuth 2.0 przez identyfikator użytkownika, identyfikator aplikacji lub oba te elementy.
Identyfikatory aplikacji są automatycznie dodawane do tokena dostępu OAuth. Dlatego po użyciu poniżej, aby włączyć dostęp tokenem dla organizacji, możesz uzyskać dostęp do tokenów według identyfikatora aplikacji.
Aby można było pobrać i unieważnić tokeny dostępu OAuth 2.0 według identyfikatora użytkownika, należy podać identyfikator użytkownika końcowego w tokenie dostępu. Poniżej opisano procedurę dodawania identyfikatora użytkownika końcowego do istniejącego tokena lub do nowych tokenów.
Domyślnie, gdy Edge wygeneruje token dostępu OAuth 2.0, token ma 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" }
Pamiętaj:
- pole application_name, zawiera identyfikator UUID aplikacji powiązanej z tokenem. Jeśli włączysz pobieranie i unieważnianie tokenów dostępu OAuth 2.0 według identyfikatora aplikacji, jest to identyfikator aplikacji, którego używasz.
- Pole access_token zawiera wartość tokena dostępu OAuth 2.0.
Aby umożliwić pobieranie i unieważnianie tokenów dostępu OAuth 2.0 według identyfikatora użytkownika, skonfiguruj zasady OAuth 2.0 uwzględniające identyfikator użytkownika w tokenie, zgodnie z poniższą procedurą.
Identyfikator użytkownika to ciąg znaków używany przez Edge jako identyfikator dewelopera, a nie adres e-mail dewelopera. adresu. Identyfikator dewelopera możesz określić na podstawie adresu e-mail dewelopera przy użyciu metody Wywołanie interfejsu Developer API.
Gdy skonfigurujesz Edge tak, aby dołączała identyfikator użytkownika końcowego do tokena, app_enduser, jak poniżej:
{ "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" }
Interfejsy API do pobierania i unieważniania Tokeny dostępu OAuth 2.0 według identyfikatora użytkownika i identyfikatora aplikacji
Użyj tych interfejsów API, aby uzyskać dostęp do tokenów OAuth według identyfikatora użytkownika, identyfikatora aplikacji lub obu tych elementów:
- Zacznij korzystać z OAuth 2.0 Token dostępu według identyfikatora użytkownika lub identyfikatora aplikacji
- Unieważnij OAuth 2.0 Token dostępu według identyfikatora użytkownika lub identyfikatora aplikacji
Procedura włączania dostępu do tokena
Wykonaj poniższe czynności, aby włączyć pobieranie i unieważnianie tokenów dostępu OAuth 2.0 przez identyfikator użytkownika i identyfikator aplikacji.
Krok 1. Włącz obsługę dostępu opartego na tokenach w organizacji
Dostęp za pomocą tokena musisz włączyć oddzielnie dla każdej organizacji. Wywołaj poniższy interfejs PUT API dla każdego organizacji, w której chcesz włączyć pobieranie i unieważnianie tokenów dostępu OAuth 2.0 według identyfikatora użytkownika lub identyfikatora aplikacji.
Użytkownik wykonujący poniższe wywołanie musi mieć rolę orgadmin lub opsadmin w organizacji. Zastąp wartości w komórce {curly klamry klamrowe} z wartościami dla danej organizacji:
> curl -H "Content-type:text/xml" -X POST \ https://<ms-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 {userEmail}:{mypassword}
Krok 2. Ustaw uprawnienia roli Opsadmin w organizacji
Tylko role orgadmin i opsadmin w organizacji powinien mieć uprawnienia do pobierania (HTTP GET) i unieważniania tokenów OAuth (HTTP PUT) w oparciu o identyfikatora użytkownika lub identyfikatora aplikacji. Aby kontrolować dostęp, ustaw uprawnienia pobierania i przyznaj uprawnienia do zasobu /oauth2 dla: organizacji. Ten zasób ma adres URL w formacie:
https://<ms-ip>:8080/v1/organizations/{org_name}/oauth2
Rola orgadmin powinna już mieć niezbędne uprawnienia. W przypadku atrybutu Opsadmin dla zasobu /oauth2, uprawnienia powinny wyglądać tak: to:
<ResourcePermission path="/oauth2"> <Permissions> <Permission>get</Permission> <Permission>put</Permission> </Permissions> </ResourcePermission>
Możesz użyć metody Pobierz Uprawnienie dla wywołania interfejsu Single Resource API w celu sprawdzenia, które role mają uprawnienia dla /oauth2.
Na podstawie odpowiedzi możesz użyć przycisku Dodaj uprawnienia zasobu do roli oraz ; Usuń uprawnienie dla wywołań interfejsu Resource API, aby wprowadzić niezbędne zmiany w /oauth2 uprawnienia do zasobów.
Za pomocą poniższego polecenia cURL przypisz rolę opsadmin uprawnienia get i put do zasobu /oauth2. Zastąp wartości w argumencie {nawiasy klamrowe} z wartościami dla danej organizacji:
> curl -X POST -H 'Content-type:application/xml' \ http://<ms-ip>:8080/v1/organizations/{org}/userroles/opsadmin/permissions \ -d '<ResourcePermission path="/oauth2"> <Permissions> <Permission>get</Permission> <Permission>put</Permission> </Permissions> </ResourcePermission>' \ -u {USEREMAIL}:{PWD}
Aby anulować uprawnienia get i put dla zasobu /oauth2 dla ról innych niż orgadmin i opsadmin. Zastąp wartości w komórce {curly klamry klamrowe} z wartościami dla danej organizacji:
> curl -X DELETE -H 'Content-type:application/xml' \ http://<msip>:8080/v1/organizations/{org-name}/userroles/{roles}/permissions \ -d '<ResourcePermission path="/oauth2"> <Permissions></Permissions> </ResourcePermission>' \ -u {USEREMAIL}:{PWD}
Krok 3: Konfiguracja właściwość oauth_max_search_limit
Sprawdź, czy conf_keymanagement_oauth_max_search_limit w pliku /opt/apigee/customer/application/management-server.properties ma wartość 100:
conf_keymanagement_oauth_max_search_limit = 100
Jeśli ten plik nie istnieje, utwórz go.
Ta właściwość określa rozmiar strony używanej przy pobieraniu tokenów. Apigee zaleca wartość 100, ale możesz ustawić je według własnego uznania.
W nowej instalacji właściwość powinna już mieć wartość 100. Jeśli zajdzie potrzeba zmiany adresu należy ponownie uruchomić serwer zarządzania i procesor komunikatów za pomocą polecenia:
> /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart > /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Krok 4. Skonfiguruj zasadę OAuth 2.0, która generuje tokeny, aby uwzględnić identyfikator użytkownika
Skonfiguruj zasadę OAuth 2.0 używaną do generowania tokenów dostępu, aby uwzględnić identyfikator użytkownika w token. Dzięki umieszczeniu identyfikatorów użytkowników w tokenie dostępu możesz pobierać i unieważniać tokeny za pomocą ID.
Aby skonfigurować zasadę tak, aby w tokenie dostępu uwzględniała identyfikator użytkownika, żądanie tworzące token dostępu musi zawierać identyfikator użytkownika końcowego. Trzeba też określić zmienną wejściową, zawiera identyfikator użytkownika.
Poniższa zasada OAuth 2.0 o nazwie GenerateAccessTokenClient generuje dostęp OAuth 2.0 token. Zwróć uwagę na pogrubiony tag <AppEndUser>, który określa zmienną zawierającą identyfikator użytkownika końcowego:
<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>
Następnie możesz wygenerować token dostępu OAuth 2.0 przy użyciu poniższego polecenia cURL, identyfikatora użytkownika w postaci parametru appuserID, nagłówek:
> 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'
W tym przykładzie appuserID jest przekazywany jako nagłówek żądania. Informacje zawarte w prośbie możesz przekazać na wiele sposobów. Dla: Możesz też:
- Używaj zmiennej parametru formularza: request.formparam.appuserID
- Użyj zmiennej przepływu, która dostarcza identyfikator użytkownika końcowego