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.
Apigee X belgelerine gidin.
bilgi

Bu bölümde, 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 edilmesinin nasıl etkinleştirileceği açıklanmaktadır. Son kullanıcı kimliği özelliği, bu konuda açıklandığı gibi özel kurulum gerektirir. Son kullanıcı, API'yi çağıran uygulamanın kullanıcısını belirtir.

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

Bazen kullanıcı kimliğinin bir erişim jetonunda depolanması kullanışlı olur. Son kullanıcı kimliği erişimi özelliğini yalnızca iyi bir kullanım alanınız varsa etkinleştirin. Örneğin:

  • Web sitenizde veya uygulamanızda, kullanıcıların hangi üçüncü taraf uygulamalarını yetkilendirdiklerini görebilecek ve bu uygulamalara erişimi iptal etme seçeneği sunabilecek bir özellik.
  • Yetkili bir kullanıcının belirli bir Geliştirici Uygulaması ile ilişkilendirilmiş tüm erişim jetonlarını iptal etmesine olanak tanıyan bir özellik.

OAuth erişim jetonları hakkında

Uygulama kimlikleri bir OAuth erişim jetonuna otomatik olarak eklenir. Bu nedenle, bir kuruluş için aşağıda açıklandığı şekilde jeton erişimini etkinleştirdikten sonra, 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 erişim jetonlarında son kullanıcı kimliği bulunmalıdır. Aşağıdaki prosedürde, mevcut bir jetona 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 jetonun biçimi aşağıdaki gibi olur:

{
 "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. OAuth 2.0 erişim jetonlarının uygulama kimliğine göre alınmasını ve iptal edilmesini etkinleştirirseniz bu, kullandığınız uygulama kimliği olur.
  • 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 yoktur. 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ı, aşağıdaki prosedürde açıklandığı gibi kullanıcı kimliğini jetona dahil edecek şekilde yapılandırmanız gerekir. OAuth 2.0 erişim jetonlarını yalnızca uygulama kimliğine göre almak ve iptal etmek istiyorsanız erişimi son kullanıcı kimliğine göre etkinleştirmeniz gerekmediğini unutmayın.

Son kullanıcı kimliğini jeton oluşturma uç noktasına geçirirsiniz. Son kullanıcının kimliğini sorgu parametresi, form parametresi veya başlık olarak (bu konunun devamında açıklandığı gibi) aktarabilirsiniz. Edge'i son kullanıcı kimliğini jetona dahil edecek şekilde yapılandırdıktan sonra, 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 iptal işlemlerini gerçekleştiren API çağrılarının nasıl yapılacağını öğrenmek için aşağıdaki Akıllı Dokümanları inceleyin:

Kullanıcı kimliği ve uygulama kimliğine göre OAuth 2.0 jetonlarına erişim sağlama

OAuth 2.0 jetonlarına erişimi kullanıcı kimliği ve uygulama kimliğine göre nasıl etkinleştireceğiniz, Edge'i nasıl dağıttığınıza bağlıdır:

  • Bulut tabanlı dağıtım

    Edge'in bulut tabanlı dağıtımı, yapılandırmanın büyük bir kısmının Apigee tarafından işlendiği anlamına gelir. OAuth 2.0 politikasını, kullanıcı kimliğini erişim jetonuna ekleyecek şekilde yapılandırmak yalnızca sizin sorumluluğunuzdadır. 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) yapılandırmadan tamamen siz sorumlu olursunuz. Daha fazla bilgi için İşlemler ve Yapılandırma bölümünü inceleyin.

  • Apigee hybrid

    OAuth 2.0 jetonlarına kullanıcı kimliğine göre erişim varsayılan olarak etkindir. OAuth 2.0 politikasını, kullanıcı kimliğini erişim jetonuna ekleyecek şekilde yapılandırmak yalnızca sizin sorumluluğunuzdadır. 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: Bu özelliği desteklemesi için bir kuruluşu etkinleştirin

Bu özellik, desteklemek istediğiniz her kuruluş için etkinleştirilmelidir.

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

2. Adım: Oauth2 Kaynak İzinlerini opsadmin ve orgadmin Rollerine sağlayın

Son kullanıcı kimliğine veya uygulama kimliğine göre oauth2 kaynağına yapılan çağrıları alma (get) ve iptal etme (put) işlemleri için yalnızca orgadmin ve opsadmin rollerinize izin verilmelidir.

Get Permission for a Resource API çağrısını kullanarak hangi rollerin oauth2 kaynağı için get ve put izinlerine sahip olduğunu öğrenebilirsiniz.

Herhangi bir izin eklemeniz veya kaldırmanız gerekiyorsa güncellemeleri gerçekleştirmek için Apigee Edge Destek Ekibi ile iletişime geçin.

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

Apigee Desteği tarafından gerçekleştirilir: Bu görevde, etkilenen kuruluşlardaki mevcut OAuth 2.0 erişim jetonlarının kopyaları kopyalanıp Cassandra düğümlerinizde depolanır. Bu prosedür, Apigee Edge kapsüllerinizin her biri için Cassandra düğümlerinde gerçekleştirilir. Bu, API çağrılarını alma ve iptal etme işlemlerinin mevcut ve yeni oluşturulmuş tüm OAuth 2.0 erişim jetonlarınızda kullanılmasına izin verir.

4. Adım: Yönetim sunucunuza ve mesaj işlemcinize oauth_max_search_limit özelliğini ekleyin

Bu görevde, yönetim sunucunuz ve mesaj işlemcinizdeki keymanagement.properties dosyaları şu özelliği içerecek şekilde güncellenir: oauth_max_search_limit = 100. 100, Apigee'nin önerilen değeridir ancak istediğiniz şekilde ayarlanabilir.

Bu eklemeleri 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 OAuth 2.0 politikası yapılandırın

Son kullanıcı kimliğini jetona dahil etmek amacıyla erişim jetonları oluşturmak için kullanılan OAuth 2.0 politikasını yapılandırın. Erişim jetonlarına son kullanıcı kimliklerini dahil ederek son kullanıcı kimliğine göre alma ve iptal işlemleri yapabilirsiniz.

Politikayı erişim jetonuna bir son kullanıcı kimliği içerecek şekilde yapılandırmak için son kullanıcı kimliğini içeren giriş değişkenini belirtmeniz gerekir. Değişkeni belirtmek için <AppEndUser> etiketini kullanın.

Aşağıdaki OAuth 2.0 politikası (GenerateAccessTokenClient) bir OAuth 2.0 erişim jetonu oluşturur. <AppEndUser> etiketinin kalın karakterlerle 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 aşağıdaki cURL komutunu kullanarak OAuth 2.0 erişim jetonu oluşturabilir ve kullanıcı kimliğini appuserID üst bilgisi olarak iletebilirsiniz:

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 bir istek başlığı olarak iletilir. Bir istek kapsamında bilgi iletmenin birçok yolu vardır. Ö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 kullanma