Private Cloud için Edge v4.18.05
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 bir 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. Get Developer API çağrısını kullanarak geliştiricinin kimliğini geliştiricinin e-posta adresinden belirleyebilirsiniz.
Edge'i, son kullanıcı kimliğini jetona 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ğine ve uygulama kimliğine göre alma ve iptal etme API'leri
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 Jetonu Alın
- 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şta orgadmin veya opsadmin
rolüne sahip olması gerekir. values değerini kuruluşunuza özgü değerlerle değiştirin:
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
2. adım: Kuruluştaki 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 put izinlerini ayarlayın. Bu kaynağın URL'si şu biçimdedir:
https://management_server_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.
/oauth2
kaynağı için opsadmin
rolüne get
ve put
izinleri vermek için aşağıdaki curl
komutunu kullanın. values değerini kuruluşunuza özel değerlerle değiştirin:
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
/oauth2
kaynağı için get
ve put
izinlerini orgadmin
ve opsadmin
dışındaki rollerden iptal etmek üzere aşağıdaki curl
komutunu kullanın. values değerini kuruluşunuza özgü değerlerle değiştirin:
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
3. adım: oauth_max_search_limit mülkünü ayarlayın
/opt/apigee/customer/application/management-server.properties
dosyasındaki 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 ama bu değeri istediğ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ı, jetona son kullanıcı kimliğini dahil edecek şekilde yapılandırın. 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 <AppEndUser>
etiketinin kalın olarak eklendiğine dikkat edin:
<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 başlığı olarak iletilir. Bir isteğin parçası olarak bilgi iletmenin birçok yolu vardır. Ö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