Kullanıcı kimliği ve uygulama kimliğine göre OAuth 2.0 jetonlarına erişimi etkinleştirin

Edge for Private Cloud 4.19.01 sürümü

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:

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