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

Edge for Private Cloud 4.18.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'dir. {curly içindeki değerleri değiştirin kaşlı ayraçları} yerine kuruluşunuza özgü değerleri girin:

> 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}

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://<ms-ip>:8080/v1/organizations/{org_name}/oauth2

orgadmin rolü, gerekli izinlere sahip olmalıdır. opsadmin rolü için, /oauth2 kaynağında oturum açtığınızda 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 kaynağında oturum açın.

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.

Aşağıdaki cURL komutunu kullanarak /oauth2 kaynağı için opsadmin rolüne get ve put izinlerini verin. Aşağıdaki örnekteki değerleri Kuruluşunuza özgü değerlerle {curly braces}:

> 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} 

Aşağıdaki cURL komutunu kullanarak /oauth2 kaynağı için get ve put izinlerini orgadmin ve opsadmin için geçerlidir. {curly içindeki değerleri değiştirin kaşlı ayraçları} yerine kuruluşunuza özgü değerleri girin:

> 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: Ayarlayın oauth_max_search_limit özelliği

conf_keymanagement_oauth_max_search_limit parametresini kullanın /opt/apigee/customer/application/management-server.properties öğesindeki 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 belirtiliyor. 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. &lt;AppEndUser&gt; 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şim jetonunu oluşturmak için aşağıdaki cURL komutunu kullanabilirsiniz: appuserID olarak kullanıcı kimliği üstbilgi:

> 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, Örneğin, ş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