Edge for Private Cloud s. 4.17.01
Bu dokümanda, OAuth 2.0 erişim jetonlarının son kullanıcı kimliğine, uygulama kimliğine veya her ikisine göre nasıl alınacağı ve iptal edileceği açıklanmaktadır.
Uygulama kimlikleri, OAuth erişim jetonuna otomatik olarak eklenir. Bu nedenle, bir kuruluş için jeton erişimini etkinleştirmek üzere aşağıdaki prosedürü kullandıktan sonra jetonlara uygulama kimliğine göre erişebilirsiniz.
OAuth 2.0 erişim jetonlarını son kullanıcı kimliğine göre almak ve iptal etmek için erişim jetonunda son kullanıcı kimliği bulunmalıdır. Aşağıdaki prosedürde, son kullanıcı kimliğinin mevcut bir jetona veya yeni jetonlara nasıl ekleneceği açıklanmaktadır.
Edge, varsayılan olarak bir OAuth 2.0 erişim jetonu oluşturduğunda jetonun biçimi şudur:
{ "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" }
Aşağıdakileri göz önünde bulundurun:
- application_name alanı, jetonla ilişkili uygulamanın UUID'sini içerir. OAuth 2.0 erişim jetonlarının uygulama kimliğine göre alınmasını ve iptal edilmesini etkinleştirirseniz kullandığınız uygulama kimliği budur.
- access_token alanı, OAuth 2.0 erişim jetonu değerini içerir.
OAuth 2.0 erişim jetonlarının son kullanıcı kimliğine göre alınmasını ve iptal edilmesini etkinleştirmek için OAuth 2.0 politikasını, aşağıdaki prosedürde açıklandığı gibi jetona kullanıcı kimliğini dahil edecek şekilde yapılandırın.
Son kullanıcı kimliği, geliştiricinin e-posta adresi değil, Edge'in geliştirici kimliği olarak kullandığı dizedir. Geliştirici API'sini kullanarak geliştiricinin e-posta adresinden geliştiricinin kimliğini belirleyebilirsiniz.
Edge'i jetona son kullanıcı kimliğini dahil edecek şekilde yapılandırdıktan sonra bu kimlik, aşağıda gösterildiği gibi app_enduser alanı olarak eklenir:
{ "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" }
OAuth 2.0 erişim jetonlarını kullanıcı kimliği ve uygulama kimliğine göre almak ve iptal etmek için kullanılan API'ler
OAuth jetonlarına kullanıcı kimliğine, uygulama kimliğine veya her ikisine göre erişmek için aşağıdaki API'leri kullanın:
- Son Kullanıcı Kimliği veya Uygulama Kimliğine göre OAuth 2.0 erişim
- Son kullanıcı kimliğine veya uygulama kimliğine göre OAuth 2.0 erişim jetonunu iptal etme
Jeton erişimini etkinleştirme prosedürü
OAuth 2.0 erişim jetonlarının son kullanıcı kimliğine ve uygulama kimliğine göre alınmasını ve iptal edilmesini etkinleştirmek için aşağıdaki prosedürü uygulayın.
1. adım: Kuruluş için jeton erişim desteğini etkinleştirin
Jeton erişimini her kuruluş için ayrı ayrı etkinleştirmeniz gerekir. OAuth 2.0 erişim jetonlarının son kullanıcı kimliğine veya uygulama kimliğine göre alınmasını ve iptal edilmesini etkinleştirmek istediğiniz her kuruluş için aşağıdaki PUT API'yi çağırın.
Aşağıdaki çağrıyı yapan kullanıcının, kuruluş için orgadmin veya opsadmin rolüne sahip olması gerekir. {curly braces} içindeki değerleri kuruluşunuza özgü değerlerle değiştirin:
> 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}
2. Adım: Kuruluşta opsadmin rolü için izinleri ayarlayın
Yalnızca kuruluştaki orgadmin ve opsadmin rollerine, kullanıcı kimliğine veya uygulama kimliğine göre OAuth 2.0 jetonlarını alma (HTTP GET) ve iptal etme (HTTP PUT) izinleri verilmelidir. Erişimi kontrol etmek için bir kuruluşun /oauth2 kaynağında get ve yerleştirme izinleri ayarlayın. Bu kaynağın URL'si şu biçimdedir:
https://<ms-ip>:8080/v1/organizations/{org_name}/oauth2
orgadmin rolü gerekli izinlere zaten sahip olmalıdır. /oauth2 kaynağının opsadmin rolü için izinler şu şekilde olmalıdır:
<ResourcePermission path="/oauth2"> <Permissions> <Permission>get</Permission> <Permission>put</Permission> </Permissions> </ResourcePermission>
/oauth2 kaynağı için hangi rollerin izinleri olduğunu görmek üzere Tek Kaynaklı API için İzin Al çağrısını kullanabilirsiniz.
Yanıta göre, /oauth2 kaynak izinlerinde gerekli düzenlemeleri yapmak için Kaynak İzinlerini Bir Role Ekleme ve Kaynak İznini Silme API çağrılarını kullanabilirsiniz.
Aşağıdaki cURL komutunu kullanarak /oauth2 kaynağı için opsadmin rolüne get ve put izinlerini verin. {curly braces} içindeki değerleri kuruluşunuza özgü değerlerle değiştirin:
> 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}
orgadmin ve opsadmin dışındaki rollerden /oauth2 kaynağı için get ve put izinlerini iptal etmek üzere aşağıdaki cURL komutunu kullanın. {curly braces} içindeki değerleri kuruluşunuza özgü değerlerle değiştirin:
> 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}
3. Adım: oauth_max_search_limit özelliğini ayarlayın
/opt/apigee/customer/application/management-server.properties dosyasında conf_keymanagement_oauth_max_search_limit özelliğinin 100 olarak ayarlandığından emin olun:
conf_keymanagement_oauth_max_search_limit = 100
Bu dosya yoksa oluşturun.
Bu mülk, jeton getirilirken kullanılan sayfa boyutunu belirler. Apigee 100 değerini önerir ancak bu değeri dilediğiniz gibi ayarlayabilirsiniz.
Yeni bir kurulumda mülk zaten 100 olarak ayarlanmış olmalıdır. Bu özelliğin değerini değiştirmeniz gerekiyorsa aşağıdaki komutları kullanarak Yönetim Sunucusu'nu ve Mesaj İşlemcisini yeniden başlatın:
> /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart > /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
4. Adım: Jeton oluşturan OAuth 2.0 politikasını son kullanıcı kimliğini içerecek şekilde yapılandırın
Erişim jetonları oluşturmak için kullanılan OAuth 2.0 politikasını yapılandırarak son kullanıcı kimliğini jetona ekleyin. Erişim jetonuna son kullanıcı kimliklerini ekleyerek jetonları kimliğe göre alabilir ve iptal edebilirsiniz.
Politikayı, erişim jetonuna son kullanıcı kimliği ekleyecek şekilde yapılandırmak için erişim jetonunu oluşturan istek, son kullanıcı kimliğini içermelidir ve son kullanıcı kimliğini içeren giriş değişkenini belirtmeniz gerekir.
Aşağıdaki GenerateAccessTokenClient adlı OAuth 2.0 politikası, bir OAuth 2.0 erişim jetonu oluşturur. Son kullanıcı kimliğini içeren değişkeni belirten kalın <AppEndUser> etiketinin eklendiğini unutmayın:
<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>
Ardından, kullanıcı kimliğini appuserID üst bilgisi olarak göndererek OAuth 2.0 erişim jetonunu oluşturmak için aşağıdaki cURL komutunu kullanabilirsiniz:
> 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'
Bu örnekte, appuserID istek üst bilgisi olarak iletilmektedir. Bilgileri istek kapsamında birçok şekilde iletebilirsiniz. Örneğin, alternatif olarak şunları yapabilirsiniz:
- Form parametresi değişkeni kullanın: request.formparam.appuserID
- Son kullanıcı kimliğini sağlayan bir akış değişkeni kullanın