Edge dla chmury prywatnej w wersji 4.16.09
Ten dokument opisuje, jak włączyć pobieranie i unieważnianie tokenów dostępu OAuth 2.0 według identyfikatora użytkownika, identyfikatora aplikacji lub obu tych identyfikatorów.
Identyfikatory aplikacji są automatycznie dodawane do tokena dostępu OAuth. Dlatego po wykonaniu poniższej procedury, aby włączyć dostęp do tokenów dostępu dla organizacji, możesz uzyskać dostęp do tokenów dostępu według identyfikatora aplikacji.
Aby pobrać i unieważnić tokeny dostępu OAuth 2.0 według identyfikatora użytkownika, identyfikator użytkownika musi być obecny w tokenie dostępu. Poniższa procedura opisuje, jak dodać identyfikator użytkownika do istniejącego tokena lub do nowych tokenów.
Domyślnie, gdy Edge generuje token dostępu OAuth 2.0, ma on 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" }
Uwaga:
- 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, będzie 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 zasadę OAuth 2.0 tak, aby zawierała identyfikator użytkownika w tokenie, zgodnie z procedurą opisaną poniżej.
Identyfikator użytkownika to ciąg znaków, którego Edge używa jako identyfikatora dewelopera, a nie adresu e-mail dewelopera. Identyfikator dewelopera możesz określić na podstawie jego adresu e-mail, używając wywołania interfejsu API Get Developer.
Po skonfigurowaniu Edge tak, aby uwzględniał identyfikator użytkownika w tokenie, jest on uwzględniany jako pole app_enduser, jak pokazano 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 tokenów dostępu OAuth 2.0 według identyfikatora użytkownika i identyfikatora aplikacji
Aby uzyskać dostęp do tokenów OAuth według identyfikatora użytkownika, identyfikatora aplikacji lub obu tych identyfikatorów, użyj tych interfejsów API:
- Pobieranie tokena dostępu OAuth 2.0 według identyfikatora użytkownika lub identyfikatora aplikacji
- Unieważnianie tokena dostępu OAuth 2.0 według identyfikatora użytkownika lub identyfikatora aplikacji
Procedura włączania dostępu za pomocą tokena
Aby włączyć pobieranie i unieważnianie tokenów dostępu OAuth 2.0 według identyfikatora użytkownika i identyfikatora aplikacji, wykonaj te czynności.
Krok 1. Włącz obsługę dostępu za pomocą tokenów w organizacji
Dostęp za pomocą tokena musisz włączyć osobno dla każdej organizacji. Wywołaj interfejs PUT API poniżej dla każdej organizacji, w której chcesz włączyć pobieranie i unieważnianie tokenów dostępu OAuth 2.0 według identyfikatora użytkownika lub aplikacji.
Użytkownik wykonujący to wywołanie musi mieć rolę orgadmin lub opsadmin w organizacji. Zastąp wartości w {nawiasach klamrowych} wartościami specyficznymi dla Twojej 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. Skonfiguruj uprawnienia dla roli opsadmin w organizacji
Tylko role orgadmin i opsadmin w organizacji powinny mieć uprawnienia do pobierania (HTTP GET) i unieważniania (HTTP PUT) tokenów OAuth 2.0 na podstawie identyfikatora użytkownika lub aplikacji. Aby kontrolować dostęp, ustaw uprawnienia get i put w zasobie /oauth2 dla organizacji. Ten zasób ma adres URL w formacie:
https://<ms-ip>:8080/v1/organizations/{org_name}/oauth2Rola orgadmin powinna już mieć niezbędne uprawnienia. W przypadku roli opsadmin dla zasobu /oauth2 uprawnienia powinny wyglądać tak:
<ResourcePermission path="/oauth2">
<Permissions>
<Permission>get</Permission>
<Permission>put</Permission>
</Permissions>
</ResourcePermission>Aby sprawdzić, które role mają uprawnienia do zasobu /oauth2, możesz użyć wywołania Get Permission for a Single Resource API.
Na podstawie odpowiedzi możesz użyć wywołań interfejsu API Add Permissions for Resource to a Role i Delete Permission for Resource, aby wprowadzić niezbędne zmiany w uprawnieniach zasobu /oauth2.
Użyj tego polecenia cURL, aby nadać roli opsadmin uprawnienia get i put do zasobu /oauth2. Zastąp wartości w nawiasach klamrowych wartościami specyficznymi dla Twojej 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}
Użyj tego polecenia cURL, aby odebrać uprawnienia get i put do zasobu /oauth2 rolom innym niż orgadmin i opsadmin. Zastąp wartości w {nawiasach klamrowych} wartościami specyficznymi dla Twojej 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. Ustaw właściwość oauth_max_search_limit
Upewnij się, że właściwość conf_keymanagement_oauth_max_search_limit w pliku /<inst_dir>/apigee/customer/application/management-server.properties jest ustawiona na 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żywany podczas pobierania tokenów. Apigee zaleca wartość 100, ale możesz ją ustawić według własnego uznania.
W przypadku nowej instalacji właściwość powinna być już ustawiona na 100. Jeśli musisz zmienić wartość tej właściwości, uruchom ponownie serwer zarządzania i procesor komunikatów za pomocą tych poleceń:
> /<inst_rt>/apigee/apigee-service/bin/apigee-service edge-management-server restart > /<inst_rt>/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Krok 4. Skonfiguruj zasadę OAuth 2.0, która generuje tokeny, aby uwzględniała identyfikator użytkownika
Skonfiguruj zasadę OAuth 2.0 używaną do generowania tokenów dostępu, aby uwzględnić w tokenie identyfikator użytkownika. Dzięki uwzględnieniu identyfikatorów użytkowników w tokenie dostępu możesz pobierać i unieważniać tokeny według identyfikatora.
Aby skonfigurować zasadę tak, aby zawierała identyfikator użytkownika w tokenie dostępu, żądanie, które tworzy token dostępu, musi zawierać identyfikator użytkownika, a Ty musisz określić zmienną wejściową, która zawiera identyfikator użytkownika.
Zasada OAuth 2.0 o nazwie GenerateAccessTokenClient generuje token dostępu OAuth 2.0. Zwróć uwagę na dodany pogrubiony tag <AppEndUser>, który określa zmienną zawierającą identyfikator użytkownika:
<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 użyć tego polecenia cURL, aby wygenerować token dostępu OAuth 2.0, przekazując identyfikator użytkownika jako nagłówek appuserID:
> 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 parametr appuserID jest przekazywany jako nagłówek żądania. Informacje możesz przekazywać w ramach żądania na wiele sposobów. Możesz na przykład:
- Użyj zmiennej parametru formularza: request.formparam.appuserID
- Używanie zmiennej przepływu podającej identyfikator użytkownika końcowego