OAuth 2.0 erişim jetonlarının son kullanıcı kimliği, uygulama kimliği veya her ikisine göre alınmasını ve iptal edilmesini etkinleştirme

Apigee Edge belgelerini görüntülüyorsunuz.
. Git: Apigee X belgeleri.
bilgi

Bu bölümde, OAuth 2.0 erişim jetonlarının alınmasını ve iptalini son kullanıcı kimliği, uygulama kimliği veya her ikisi. Son kullanıcı kimliği özelliği, bu makalede açıklandığı gibi özel bir kurulum gerektirir konu. Son kullanıcı, API'yi çağıran uygulamanın kullanıcısını belirtir.

Son kullanıcı kimliği erişimi ne zaman etkinleştirilir?

Bazen kullanıcı kimliğinin bir erişim jetonunda depolanması yararlı olur. Son kullanıcı kimliği erişimini etkinleştirme yalnızca iyi bir kullanım alanınız varsa kullanın. Örneğin:

  • Web siteniz veya uygulamanız için, kullanıcıların hangi üçüncü taraf uygulamalarına sahip olduklarını görebilecekleri bir özellik ve bu uygulamalara erişimi iptal etme seçeneği sunmak.
  • Yetkili bir kullanıcının belirli bir geliştirici uygulamasıdır.

OAuth erişim jetonları hakkında

Uygulama kimlikleri otomatik olarak bir OAuth erişim jetonuna eklenir. Bu nedenle, jetonu etkinleştirdikten sonra erişimi varsa erişim jetonlarını uygulama kimliğine göre iptal edebilirsiniz.

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 seçeneğini belirleyin. Aşağıdaki prosedürde, mevcut bir hesaba son kullanıcı kimliğinin nasıl ekleneceği açıklanmaktadır. jeton.

Edge, OAuth 2.0 erişim jetonu oluşturduğunda varsayılan olarak jetonun biçimi gösterilir aşağıda bulabilirsiniz:

{
 "issued_at" : "1421847736581",
 "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a",
 "scope" : "READ",
 "status" : "approved",
 "api_product_list" : "[PremiumWeatherAPI]",
 "expires_in" : "3599", //--in seconds
 "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", //--in seconds
 "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ı kullanıyorsanız bu, kullandığınız uygulama kimliğidir.
  • access_token alanı OAuth 2.0 erişim jetonu değerini içerir.

Varsayılan OAuth erişim jetonunda son kullanıcı kimliği için alan yok. Alma işlemini etkinleştirmek ve OAuth 2.0 erişim jetonlarının son kullanıcı kimliğine göre iptal edilmesini sağlamak için OAuth 2.0 politikasını yapılandırmanız gerekir. aşağıdaki prosedürde açıklandığı şekilde jetona User-ID'yi dahil edin. Yalnızca uygulama kimliğine göre OAuth 2.0 erişim jetonlarını almak ve iptal etmek istiyorsanız son kullanıcı kimliğine göre erişim.

Son kullanıcı kimliğini jeton oluşturma uç noktasına iletirsiniz. Son kullanıcının kimliğini bir sorgu parametresi, form parametresi veya (bu konunun ilerleyen bölümlerinde açıklandığı şekilde). Edge'i son kullanıcıyı içerecek şekilde yapılandırdıktan sonra Jetontaki 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", //--in seconds
 "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", //--in seconds
 "refresh_count" : "0"
}

Bu alma ve iptalleri gerçekleştiren API çağrılarının nasıl yapılacağını öğrenmek için bkz. aşağıdaki Akıllı Dokümanlar:

OAuth 2.0 jetonlarına erişimi etkinleştirmek için kullanıcı kimliği ve uygulama kimliği

OAuth 2.0 jetonlarına erişimi kullanıcı kimliği ve uygulama kimliğine göre nasıl etkinleştireceğiniz, dağıtım yönteminize bağlıdır. Kenar:

  • Bulut tabanlı dağıtım

    Edge'in bulut tabanlı dağıtımı, yapılandırmanın büyük bölümünün Apigee tarafından yapılmasını sağlar. Siz yalnızca OAuth 2.0 politikasını yapılandırarak kullanıcı kimliğini erişime jeton. Daha fazla bilgi için aşağıdaki prosedüre bakın.

  • Private Cloud dağıtımı için uç

    Apigee Edge for Private Cloud'da (şirket içi) şunların tamamen sorumluluğu size aittir: yapılandırma. Daha fazla bilgi için Operasyonlar ve Yapılandırma.

  • Apigee hybrid

    OAuth 2.0 jetonlarına kullanıcı kimliğine göre erişim varsayılan olarak etkindir. Siz yalnızca OAuth 2.0 politikasını yapılandırarak kullanıcı kimliğini erişime jeton. Daha fazla bilgi için aşağıdaki prosedürün 5. Adımına bakın.

Bulutta erişimi etkinleştirme

1. Adım: Şu işlemleri gerçekleştirmek için bir kuruluşu etkinleştirin: bu özelliği destekleyin

Bu özelliği desteklemek istediğiniz her kuruluş için bu özelliğin etkinleştirilmesi gerekir.

Kuruluşunuzu güncellemeleri için Apigee Edge Destek Ekibi ile iletişime geçin.

Adım 2: opsadmin ve orgadmin rollerine oauth2 kaynak izinleri sağlama

Yalnızca orgadmin ve opsadmin rollerinize verilmelidir. bu alma (get) ve iptal (put) çağrılarını Son kullanıcı kimliği veya uygulama kimliğine göre oauth2 kaynak.

Oturum açmak için İzin Alın kaynak API çağrısı için get ve put rollerine sahip olanları görebilirsiniz. oauth2 kaynağı için izinler.

Herhangi bir izin eklemeniz veya kaldırmanız gerekirse Apigee Edge Destek Ekibi ile iletişime geçerek güncellemeleri yapmasını isteyin.

Adım 3: Mevcut OAuth 2.0 erişim jetonlarını Cassandra düğümlerinize kopyalayın

Apigee Desteği tarafından gerçekleştirilir: Bu görevde, mevcut OAuth 2.0'ın kopyaları Etkilenen kuruluşlardaki erişim jetonları kopyalanıp Cassandra düğümlerinizde depolanır. Bu prosedür her bir Apigee Edge kapsülünüz için Cassandra düğümlerinde gerçekleştirilir. Bu işlem, tüm OAuth 2.0 erişim jetonlarınızda çalıştırılacak API çağrılarını almak ve iptal etmek yeni oluşturulmuş olabilir.

4. Adım: oauth_max_search_limit özelliğini yönetim sunucunuza ve iletinize ekleyin işleyen

Bu görevde, yönetim sunucunuzun keymanagement.properties dosyaları ve mesaj işlemcisi, şu özelliği içerecek şekilde güncellenecektir: oauth_max_search_limit = 100. 100, Apigee'nin önerilen değeridir ancak bu değeri uygun gördüğünüz şekilde ayarlayabilirsiniz.

Bu ekleme işlemini yapmaları için Apigee Edge Destek Ekibi ile iletişime geçin.

5. Adım: Son kullanıcı kimliklerini içeren erişim jetonları oluşturmak için bir OAuth 2.0 politikası yapılandırın

Erişim jetonları oluşturmak için kullanılan OAuth 2.0 politikasını jeton. Erişim jetonlarına son kullanıcı kimliklerini ekleyerek alma işlemleri gerçekleştirebilirsiniz. son kullanıcı kimliğine göre iptal eder.

Politikayı, erişim jetonuna bir son kullanıcı kimliği ekleyecek şekilde yapılandırmak için giriş değişkeni ekleyin. <AppEndUser> etiketini, değişkenine eklenmelidir.

Aşağıdaki GenerateAccessTokenClient adlı OAuth 2.0 politikası OAuth oluşturur. 2.0 erişim jetonu. <AppEndUser> etiketinin kalın harflerle eklendiğini unutmayın:

<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=k3nJyFJIA3p62TKIkLO6OJNi87GYXFmP&client_secret=gk58jK5lIp943AY4'

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