Bu dokümanda, OAuth 2.0 erişim jetonlarının alınmasını ve iptal edilmesinin nasıl etkinleştirileceği açıklanmaktadır. son kullanıcı kimliği, uygulama kimliği veya her ikisi.
Uygulama kimlikleri otomatik olarak bir OAuth erişim jetonuna eklenir. Bu nedenle, aşağıdaki prosedüre göre 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 bir son kullanıcı kimliği bulunmalıdır erişim jetonundan yararlanabilirsiniz. Aşağıdaki prosedürde, son kullanıcı kimliğinin mevcut bir jetona nasıl ekleneceği veya yeni jetonlara verilir.
Edge, OAuth 2.0 erişim jetonu oluşturduğunda varsayılan olarak jetonun biçimi şu şekilde olacaktır:
{ "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şkilendirilen uygulamanın UUID'sini içerir. Alma ve iptali etkinleştirirseniz OAuth 2.0 erişim jetonlarının bir kısmını burada bulabilirsiniz. Bu, kullandığınız uygulama kimliğidir.access_token
alanı OAuth 2.0 erişim jetonu değerini içerir.
Son kullanıcı kimliğine göre OAuth 2.0 erişim jetonlarının alınmasını ve iptal edilmesini etkinleştirmek için OAuth 2.0 politikası, aşağıdaki prosedürde açıklandığı şekilde jetona kullanıcı kimliğini dahil etmelidir.
Son kullanıcı kimliği, Edge'in geliştirici kimliği olarak kullandığı dizedir, geliştiricinin e-posta adresi olarak kullanılmaz girin. Geliştiricinin kimliğini almak için Geliştiricinin e-posta adresinden Geliştirici API çağrısı.
Edge'i son kullanıcı kimliğini jetona dahil edecek şekilde yapılandırdıktan sonra bu, app_enduser alanını aşağıda gösterildiği gibi görürsünüz:
{ "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" }
Alınacak ve iptal edilecek API'ler Kullanıcı kimliğine ve uygulama kimliğine göre OAuth 2.0 erişim jetonları
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:
- OAuth 2.0'ı edinin Son Kullanıcı Kimliği veya Uygulama Kimliğine Göre Erişim Jetonu
- OAuth 2.0'ı iptal edin Son Kullanıcı Kimliği veya Uygulama Kimliğine Göre Erişim Jetonu
Jeton erişimini etkinleştirme prosedürü
OAuth 2.0 erişim jetonlarının alınmasını ve iptal edilmesini sağlamak için aşağıdaki prosedürü uygulayın: son kullanıcı kimliği ve uygulama kimliği.
1. Adım: Kuruluş için jeton erişimi desteğini etkinleştirme
Jeton erişimini her kuruluş için ayrı ayrı etkinleştirmeniz gerekir. Her biri için aşağıdaki PUT API'yi çağırın: OAuth 2.0 erişim jetonlarının alınmasını ve iptalini etkinleştirmek istediğiniz kuruluş son kullanıcı kimliğine veya uygulama kimliğine göre.
Aşağıdaki çağrıyı yapan kullanıcı orgadmin veya
Kuruluş için opsadmin
. values öğesini kuruluşunuza özel değerle değiştirin
değerleri:
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
Adım 2: Kuruluşta opsadmin rolü için izinleri ayarlayın
Bir kuruluşta yalnızca orgadmin
ve opsadmin
rolleri
(HTTP GET) alma ve (HTTP PUT) OAuth 2.0 jetonlarını tabanlı iptal etme izinleri verilmeli
kullanıcı kimliği veya uygulama kimliğine göre belirlenir. Erişimi kontrol etmek için /oauth2 kaynağında get ve put izinlerini ayarlayın
kurum içinde tutmaktır. Bu kaynağın URL'si şu biçimdedir:
https://management_server_IP:8080/v1/organizations/org_name/oauth2
orgadmin
rolü, gerekli izinlere sahip olmalıdır.
/oauth2 kaynağı için opsadmin
rolü; izinler aşağıdaki gibi görünmelidir:
bu:
<ResourcePermission path="/oauth2"> <Permissions> <Permission>get</Permission> <Permission>put</Permission> </Permissions> </ResourcePermission>
Daha fazla bilgi için
İzinleri tek bir kaynak API'si kullanarak hangi rollerin
/oauth2
kaynak.
Aldığınız yanıta göre Ekle Rol Kaynakları ve /oauth2 üzerinde gerekli düzenlemeleri yapmak için Kaynak İznini API çağrılarını silin. kaynak izinleri.
opsadmin
rolünü vermek için aşağıdaki curl
komutunu kullanın
/oauth2
kaynağı için get
ve put
izinleri. Değiştir
kuruluşunuza özgü değerlerle values:
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
get
ve put
işlemlerini iptal etmek için aşağıdaki curl
komutunu kullanın
/oauth2
kaynağı için diğer rollerdeki izinler
orgadmin
ve opsadmin
. values değerini
kuruluşa özgü değerler:
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: Ayarlayın oauth_max_search_limit özelliği
conf_keymanagement_oauth_max_search_limit
/opt/apigee/customer/application/management-server.properties
bölgesindeki mülk
dosya 100 olarak ayarlandığında:
conf_keymanagement_oauth_max_search_limit = 100
Bu dosya mevcut değilse dosyayı oluşturun.
Bu özellik, jetonlar alınırken kullanılan sayfa boyutunu ayarlar. Apigee, 100 değerini, ancak uygun gördüğünüz şekilde ayarlayabilirsiniz.
Yeni bir yüklemede, özellik zaten 100 olarak ayarlanmış olmalıdır. değerini değiştirmek istiyorsanız, şunu kullanarak Yönetim Sunucusu'nu ve İleti İşleyici'yi yeniden başlatın: komutları:
/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: Jetonları son kullanıcı kimliğini içerecek şekilde 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ı yapılandırarak son kullanıcı kimliğini jeton. Erişim jetonuna son kullanıcı kimliklerini ekleyerek jetonları aşağıdaki yöntemlerle alabilir ve iptal edebilirsiniz: Kimlik.
Politikayı, erişim jetonuna bir son kullanıcı kimliği ekleyecek şekilde yapılandırmak için erişim jetonunun son kullanıcı kimliğini içermesi ve son kullanıcı kimliğini içerir.
Aşağıdaki OAuth 2.0 politikası (GenerateAccessTokenClient) OAuth 2.0 erişimi oluşturur.
jeton. <AppEndUser>
etiketinin kalın karakterlerle eklendiğini ve
son kullanıcı kimliğini içeren değişken:
<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 OAuth 2.0 erişimini oluşturmak için aşağıdaki curl
komutunu kullanabilirsiniz.
jeton (kullanıcı kimliğini appuserID
başlığı olarak iletir):
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 geçirilmiştir. Geçebilirsiniz
bilgi edinmek için kullanılabilir. Örneğin, alternatif olarak şunları yapabilirsiniz:
- Şu form parametresi değişkeni kullanın:
request.formparam.appuserID
- Son kullanıcı kimliğini sağlayan bir akış değişkeni kullanın