Edge for Private Cloud 4.19.01 sürümü
Bu belgede, OAuth 2.0 erişim jetonlarının son kullanıcı kimliği, uygulama kimliği veya her ikisiyle alınmasının ve iptal edilmesinin nasıl etkinleştirileceği açıklanmaktadır.
Uygulama kimlikleri, OAuth erişim jetonuna otomatik olarak eklenir. Bu nedenle, bir kuruluş için erişim jetonu 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, mevcut bir jetona veya yeni jetonlara son kullanıcı kimliğinin nasıl ekleneceği açıklanmaktadır.
Varsayılan olarak, Edge bir OAuth 2.0 erişim jetonu oluşturduğunda jeton şu biçimde olur:
{ "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_namealanı, 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 kullanacağınız uygulama kimliği budur.access_tokenalanı, 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ı, kullanıcı kimliğini jetona dahil edecek şekilde yapılandırın. Bunun için aşağıdaki prosedürü uygulayın.
Son kullanıcı kimliği, Edge'in geliştirici kimliği olarak kullandığı dizedir, geliştiricinin e-posta adresi değildir. Get Developer API çağrısını kullanarak geliştiricinin e-posta adresinden geliştirici kimliğini 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" }
Kullanıcı kimliği ve uygulama kimliğine göre OAuth 2.0 erişim jetonlarını alma ve iptal etme API'leri
OAuth jetonlarına kullanıcı kimliği, uygulama kimliği 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 alma
- Son Kullanıcı Kimliği veya Uygulama Kimliği ile OAuth 2.0 Erişim Jetonunu İptal Etme
Jeton erişimini etkinleştirme prosedürü
OAuth 2.0 erişim jetonlarının son kullanıcı kimliği 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: Bir kuruluş için jeton erişimi desteğini etkinleştirme
Her kuruluş için jeton erişimini 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ünde 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:PASSWORD2. adım: Kuruluştaki opsadmin rolü için izinleri ayarlayın
Bir kuruluştaki yalnızca 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ğı için opsadmin rolünün izinleri şu şekilde görünmelidir:
<ResourcePermission path="/oauth2">
<Permissions>
<Permission>get</Permission>
<Permission>put</Permission>
</Permissions>
</ResourcePermission>/oauth2 kaynağı için hangi rollerin izinlere sahip olduğunu görmek üzere Tek Bir Kaynak İçin İzin Alma API'si çağrısını kullanabilirsiniz.
Yanıta göre, /oauth2 kaynak izinlerinde gerekli düzenlemeleri yapmak için Add Permissions for Resource to a Role ve Delete Permission for Resource API çağrılarını kullanabilirsiniz.
/oauth2 kaynağı için get ve put izinlerini opsadmin rolüne vermek üzere aşağıdaki curl komutunu kullanın. values değerini kuruluşunuza özgü 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 özelliğini 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 özellik, jetonlar getirilirken kullanılan sayfa boyutunu ayarlar. Apigee, 100 değerini önerir ancak bu değeri uygun gördüğünüz şekilde ayarlayabilirsiniz.
Yeni bir yüklemede, özellik 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 İşleyici'yi 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 restart4. adım: Son kullanıcı kimliğini içerecek jetonlar oluşturan OAuth 2.0 politikasını yapılandırın
Erişim jetonları oluşturmak için kullanılan OAuth 2.0 politikasını, son kullanıcı kimliğini jetona 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 isteğin son kullanıcı kimliğini içermesi 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 harflerle 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 üstbilgisi olarak ileterek 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 bir istek başlığı olarak iletilir. Bilgileri bir isteğin parçası olarak birçok şekilde iletebilirsiniz. Örneğin, alternatif olarak şunları yapabilirsiniz:
- Form parametresi değişkeni kullanma:
request.formparam.appuserID - Son kullanıcı kimliğini sağlayan bir akış değişkeni kullanma