OAuth

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

OAuth, API'ler için önde gelen yetkilendirme protokolü olarak görünmektedir. Bu konuda ayrıntılı olarak ele alınan OAuth sürümü, OAuth 2.0 Spesifikasyonu'nda tanımlanmıştır.

OAuth, uygulama son kullanıcılarının, uygulamaları kendi adlarına işlem yapmaları için yetkilendirmesini sağlayan bir protokoldür. Uygulamalar bunu API sağlayıcılarından erişim jetonları alarak yapar. API sağlayıcı, uygulama son kullanıcısının kimlik bilgilerini doğrular, kullanıcının uygulamayı yetkilendirdiğinden emin olur ve uygulamaya bir erişim jetonu yayınlar. Uygulama, korunan bir API'yi kullandığında Apigee Edge, erişim jetonunu kontrol ederek geçerli olduğundan ve süresinin dolmadığından emin olur. API sağlayıcısı olarak, uygulamaların erişim jetonları almasını sağlayan uç noktaları göstermeniz gerekir.

OAuth kullanmaya başlamanızı kolaylaştırmak için Apigee Edge, herhangi bir kod yazmanıza gerek kalmadan politikalar kullanarak OAuth'u yapılandırmanıza ve zorunlu kılmanıza olanak tanır. Bu konuda, API'lerinizi nasıl koruyacağınızı, erişim jetonlarını nasıl edineceğinizi ve korumalı API'lere erişmek için bu erişim jetonlarını nasıl kullanacağınızı öğreneceksiniz.

Kuruluşunuz için varsayılan OAuth yapılandırması

Kolaylık sağlaması açısından Apigee Edge'deki tüm kuruluşlar, istemci kimlik bilgileri izin türünü uygulayan bir dizi OAuth 2.0 uç noktasıyla önceden yapılandırılmış olarak gelir. İstemci kimlik bilgileri izin türü, uygulama kimlik bilgileri karşılığında erişim jetonları verme prosedürünü tanımlar. Bu uygulama kimlik bilgileri, Apigee Edge'in bir kuruluşta kayıtlı her uygulama için yayınladığı tüketici anahtarı ve gizli anahtar çiftidir. "İstemci kimlik bilgileri", tüketici anahtarı ve gizli anahtar çiftinin kendisini ifade eder.

Edge Developer Services'ı kullanan uygulamalara kimlik bilgileri verme hakkında daha fazla bilgi edinmek için Uygulamaları kaydetme ve anahtarları yönetme bölümüne bakın.

Bu nedenle, API güvenlik şemanızı API anahtarı doğrulamasından OAuth istemci kimlik bilgilerine kadar "yükseltmek" nispeten kolaydır. İki şema da istemci uygulamasını doğrulamak için aynı tüketici anahtarını ve sırrını kullanır. Aralarındaki fark, istemci kimlik bilgilerinin ek bir kontrol katmanı sağlamasıdır. Çünkü, gerektiğinde erişim jetonunu, uygulamanın tüketici anahtarını iptal etmenize gerek kalmadan kolayca iptal edebilirsiniz. Varsayılan OAuth uç noktalarıyla çalışmak amacıyla, kuruluşunuzdaki uygulama için oluşturulan herhangi bir tüketici anahtarını ve gizli anahtarı kullanarak jeton uç noktasından erişim jetonları alabilirsiniz. (Halihazırda tüketici anahtarları ve gizli anahtarları olan uygulamalar için de istemci kimlik bilgilerini etkinleştirebilirsiniz.)

İstemci kimlik bilgileri izni ile ilgili tüm özellikler OAuth 2.0 Spesifikasyonu'nda bulunabilir.

API'nizi politikayla koruyun

Erişim jetonlarını kullanabilmek için API'lerinizi çalışma zamanında OAuth erişim jetonlarını doğrulayacak şekilde yapılandırmanız gerekir. Bunu yapmak için, erişim jetonlarını validate bir API proxy'si yapılandırırsınız. Yani, bir uygulamanın API'lerinizden birini kullanmak için istekte bulunduğu her seferde, uygulamanın API isteğiyle birlikte geçerli bir erişim jetonu sunması gerekir. Apigee Edge, sunulan erişim jetonlarını oluşturmanın, depolamanın ve doğrulamanın arkasındaki karmaşıklığı halleder.

Yeni bir API proxy'si oluşturduğunuzda OAuth doğrulamasını API'ye kolayca ekleyebilirsiniz. Yeni bir API proxy'si oluştururken Özellik Ekle seçeneğini belirleyebilirsiniz. Aşağıda gösterildiği gibi, OAuth v2.0 Erişim Jetonlarıyla Güvenli Arama'nın yanındaki radyo düğmesini seçerek OAuth 2.0 erişim jetonlarının doğrulamasını ekleyebilirsiniz. Bu seçeneği belirlediğinizde, yeni oluşturulan API proxy'sine biri erişim jetonlarını doğrulamak, diğeri ise erişim jetonunu doğruladıktan sonra ayırmak için iki politika eklenir.

Ayrıca, OAuth v2.0 Erişim Jetonlarıyla Güvenli seçeneğini belirlediğinizde API Ürününü Yayınla onay kutusu seçilebilir hale gelir ve otomatik olarak seçilir. Yeni API proxy'si oluşturduğunuzda otomatik olarak bir ürün oluşturmak istiyorsanız bunu işaretleyin. Otomatik olarak oluşturulan ürün, yeni API proxy'si ile ilişkilendirmeyle oluşturulur. Bu yeni API'yi ilişkilendirmek istediğiniz mevcut bir ürününüz varsa gereksiz bir ürün oluşturmamak için bu onay kutusunun işaretini kaldırdığınızdan emin olun. Ürünler hakkında bilgi için API ürünü nedir? bölümüne bakın.

Mevcut API proxy'si için erişim jetonu doğrulamasını etkinleştirmeniz gerekiyorsa yapmanız gereken tek şey, korumak istediğiniz API'ye OAuthV2 türünde bir politika eklemektir. OAuthV2 politikaları bir işlem belirterek çalışır. Erişim jetonlarını doğrulamak istiyorsanız VerifyAccessToken adlı işlemi belirtirsiniz. (OAuthV2 politika türü tarafından desteklenen diğer işlem türleri, GenerateAccessToken ve GeneraterefreshToken'dir. OAuth uç noktalarını ayarladığınızda bu işlemler hakkında bilgi edineceksiniz.)

OAuthV2 türündeki DoğrulamaOAuthTokens politikası

Erişim jetonlarını doğrulamaya yönelik örnek bir politika aşağıda verilmiştir. (Ayarlar aşağıdaki tabloda açıklanmıştır.)

<OAuthV2 name="VerifyOAuthTokens"> 
  <Operation>VerifyAccessToken</Operation> 
</OAuthV2>

Politika ayarları

Ad Açıklama Varsayılan Zorunlu mu?
OAuthV2 Politika türü
name API proxy'si uç nokta yapılandırmasında belirtilen politika adı. Yok Evet
Operation OAuthV2 politikası tarafından yürütülecek işlem. ValidAccessToken'i belirterek politikayı, erişim jetonları isteklerini kontrol edecek şekilde yapılandırırsınız. Ayrıca erişim jetonunun geçerli olduğunu, süresinin dolmadığını ve istenen API kaynağını (URI) tüketmesinin onaylandığını doğrularsınız. (Bu kontrolün yapılması için politika, uygulamanın tüketmesinin onaylandığı API ürününü okur.) Yok Evet

Bu politikayı yönetim kullanıcı arayüzünde oluşturmak için API'ler > API Proxy'leri bölümüne gidin.

API proxy'leri listesinden weatherapi'yi seçin.

Hava durumu API'sinin Genel Bakış bölümünden Geliştir görünümünü seçin.

Açılır menüden Yeni Politika > OAuth v2.0'ı seçin.

OAuth v2.0 politikasını seçtikten sonra Yeni Politika yapılandırma menüsü görüntülenir.

Politikanıza açıklayıcı bir ad verin ve politika eki ayarları olarak Politika Ekle, Akış PreFlow ve İstek'i seçtiğinizden emin olun.

Ekle'yi seçin. Politika oluşturulur ve weatherapi'nin isteği PreFlow'a eklenir.

Politikayı ekledikten sonra, aşağıdaki PreFlow isteği yapılandırması Tasarımcı bölmesinde görüntülenir.

Bir metin düzenleyicide veya IDE'de yerel olarak çalışıyorsanız politikayı korumak istediğiniz API proxy'sinin PreFlow isteğine eklersiniz:

<PreFlow>
  <Request>
    <Step><Name>VerifyOAuthTokens</Name></Step>
  </Request>
</PreFlow>

Politikayı PreFlow isteğine ekleyerek politikanın tüm istek mesajlarında her zaman uygulanmasını sağlarsınız.

Artık OAuth 2.0 istemci kimlik bilgilerini kullanarak bir API'nin güvenliğini sağladınız. Bir sonraki adım, erişim jetonunun nasıl alınacağını ve güvenli API'ye erişmek için nasıl kullanılacağını öğrenmektir.

Korunan bir kaynağa erişmek için erişim jetonu kullanma

Hava durumu API'sinin güvenliği OAuth 2.0 ile sağlandığı için uygulamaların API'yi kullanmak için erişim jetonları sunması gerekir. Uygulama, korunan bir kaynağa erişmek için istekte "Yetkilendirme" HTTP başlığı olarak aşağıdaki şekilde bir erişim jetonu sunar:

$ curl -H "Authorization: Bearer ylSkZIjbdWybfs4fUQe9BqP0LH5Z" http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282

API'ye OAuthV2 politikası eklenmiş olduğundan Apigee Edge, sunulan erişim jetonunun geçerli olduğunu doğrular ve ardından API'ye erişim izni vererek hava durumu raporunu istekte bulunan uygulamaya döndürür.

Peki uygulamalar erişim jetonlarını nasıl alır? Bu konuyu bir sonraki bölümde ele alacağız.

İstemci kimlik bilgilerini erişim jetonuyla değiştirme

Uygulamalar, erişim jetonlarını tüketici anahtar/gizli çiftlerini jeton uç noktasına sunarak elde eder. Jeton uç noktası, oauth adlı API proxy'sinde yapılandırılır. Dolayısıyla, uygulamaların erişim jetonu almak için oauth API proxy'si tarafından sunulan API'yi çağırması gerekir. Uygulama bir erişim jetonu edindikten sonra, erişim jetonunun süresi dolana veya erişim jetonu iptal edilene kadar weatherapi'yi tekrar tekrar çağırabilir.

Şimdi kendinizi bir uygulama geliştirici olarak düşünmek için ne yapmanız gerekiyor? Hava durumu API'sini çağırmak istediğinizden, uygulamanız için bir erişim jetonu almanız gerekir. Yapmanız gereken ilk şey bir tüketici anahtarı ve gizli bilgi çifti (API anahtarı veya uygulama anahtarı olarak da bilinir) edinmektir.

Kuruluşunuzdaki bir uygulamayı Apigee Edge'e kaydederek tüketici anahtarı ve sırrı alabilirsiniz.

Kuruluşunuzdaki tüm uygulamaları Apigee Edge yönetim kullanıcı arayüzünde görebilirsiniz.

Kuruluşunuzda kayıtlı olan uygulamaların listesi gösterilir.

(Hiçbir uygulama gösterilmiyorsa Uygulamaları kaydetme ve API anahtarlarını yönetme başlıklı konuya bir uygulamayı nasıl kaydedeceğinizi öğrenebilirsiniz.)

Ayrıntılı profilini görüntülemek için listeden bir uygulama seçin.

Seçtiğiniz uygulamanın ayrıntı görünümünde Tüketici Anahtarı ve Tüketici Gizli Anahtarı alanlarına dikkat edin. Bu iki değer, OAuth erişim jetonu almak için kullanacağınız istemci kimlik bilgileridir.

$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/apps \
-u myname:mypass 

Bu çağrı, uygulama kimliğine göre bir uygulama listesi döndürür.

[ "da496fae-2a04-4a5c-b2d0-709278a6f9db", "50e3e831-175b-4a05-8fb6-05a54701af6e" ]

Bir uygulamanın profilini, uygulama kimliğinde basit bir GET çağrısı yaparak alabilirsiniz:

$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/apps/{app_id} \
-u myname:mypass 

Örneğin:

$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/apps/da496fae-2a04-4a5c-b2d0-709278a6f9db \
-u myname:mypass 

API çağrısı, belirttiğiniz uygulamanın profilini döndürür. Örneğin, hava durumu uygulaması için bir uygulama profili aşağıdaki JSON gösterimine sahiptir:

{
  "accessType" : "read",
  "apiProducts" : [ ],
  "appFamily" : "default",
  "appId" : "da496fae-2a04-4a5c-b2d0-709278a6f9db",
  "attributes" : [ ],
  "callbackUrl" : "http://weatherapp.com",
  "createdAt" : 1380290158713,
  "createdBy" : "noreply_admin@apigee.com",
  "credentials" : [ {
    "apiProducts" : [ {
      "apiproduct" : "PremiumWeatherAPI",
      "status" : "approved"
    } ],
    "attributes" : [ ],
    "consumerKey" : "bBGAQrXgivA9lKu7NMPyoYpVKNhGar6K",
    "consumerSecret" : "hAr4Gn0gA9vAyvI4",
    "expiresAt" : -1,
    "issuedAt" : 1380290161417,
    "scopes" : [ ],
    "status" : "approved"
  } ],
  "developerId" : "5w95xGkpnjzJDBT4",
  "lastModifiedAt" : 1380290158713,
  "lastModifiedBy" : "noreply_admin@apigee.com",
  "name" : "weatherapp",
  "scopes" : [ ],
  "status" : "approved"
}

consumerKey ve consumerSecret değerlerini not edin. Bu kimlik bilgilerini, aşağıda gösterildiği gibi bir HTTP isteğinde Temel Kimlik Doğrulama kimlik bilgileri olarak sunarak bir erişim jetonu almak için kullanırsınız. İzin türü, istek için sorgu parametresi olarak sunulur. ({org_name} değişkeninin değerini, kuruluşunuzun Apigee Edge'deki adını yansıtacak şekilde değiştirdiğinizden emin olun.)

Erişim jetonu almak için istek oluşturma

Aşağıdaki istekte client_id yerine consumerKey değerini kullanın. client_secret için ilişkili consumerSecret değerini değiştirin.

$ curl https://{org_name}-test.apigee.net/oauth/client_credential/accesstoken?grant_type=client_credentials -X POST -d 'client_id=bBGAQrXgivA9lKu7NMPyoYpVKNhGar6K&client_secret=hAr4Gn0gA9vAyvI4'

API Hizmetleri, tüketici anahtarını ve sırrını doğrular ve ardından bu uygulama için erişim jetonunu içeren bir yanıt oluşturur:

{
  "issued_at" : "1380892555397",
  "application_name" : "957aa73f-25c2-4ead-8021-adc01f0d2c6b",
  "scope" : "",
  "status" : "approved",
  "api_product_list" : "[oauth-test]",
  "expires_in" : "3599",
  "developer.email" : "tesla@weathersample.com",
  "organization_id" : "0",
  "client_id" : "bBGAQrXgivA9lKu7NMPyoYpVKNhGar6K",
  "access_token" : "ylSkZIjbdWybfs4fUQe9BqP0LH5Z",
  "organization_name" : "rqa",
  "refresh_token_expires_in" : "0",
  "refresh_count" : "0"
}

Yukarıdaki yanıtta access_token değerini not edin. Bu, uygulamanın korunan kaynaklara çalışma zamanında erişim elde etmek için kullanacağı erişim jetonudur. Bu uygulamanın erişim jetonu: ylSkZIjbdWybfs4fUQe9BqP0LH5Z.

Artık korunan API'lere erişmek için kullanılabilecek geçerli bir erişim jetonunuz (ylSkZIjbdWybfs4fUQe9BqP0LH5Z) var.

Varsayılan OAuth yapılandırmasıyla çalışma

Apigee Edge'deki her kuruluş (ücretsiz deneme sürümü kuruluşu bile) bir OAuth jeton uç noktası ile sağlanır. Uç nokta, API proxy'sindeki oauth adı verilen politikalarla önceden yapılandırılmıştır. Apigee Edge'de hesap oluşturur oluşturmaz jeton uç noktasını kullanmaya başlayabilirsiniz.

Varsayılan OAuth uç noktası, aşağıdaki uç nokta URI'sini gösterir:

/oauth/client_credential/accesstoken

Erişim jetonları alması gereken geliştiricilere bu URI'yi yayınlayın. Uygulama geliştiriciler, uygulamalarını bu uç noktayı çağıracak şekilde yapılandırır ve erişim jetonları edinmek için tüketici anahtarı ve gizli anahtar çiftlerini sunar.

Varsayılan istemci kimlik bilgisi jetonu uç noktası, ağ üzerinden aşağıdaki URL'de gösterilir:

https://{org_name}-{env_name}.apigee.net/oauth/client_credential/accesstoken

Örneğin, kuruluşunuzun adı "apimakers" ise URL şöyle olacaktır:

https://apimakers-test.apigee.net/oauth/client_credential/accesstoken

Bu, geliştiricilerin erişim jetonları almak için çağırdığı URL'dir.

3 aşamalı OAuth yapılandırmaları

Üç aşamalı OAuth yapılandırmaları (yetkilendirme kodu, dolaylı ve şifre erişim türleri), uygulama son kullanıcılarının kimliğini API sağlayıcısı olarak doğrulamanızı gerektirir. Her kuruluş, kullanıcıların kimliğini farklı şekillerde doğruladığından OAuth'u kullanıcı mağazanıza entegre etmek için bir miktar politika özelleştirmesi veya kod gerekir. Örneğin, tüm kullanıcılarınız Active Directory'de, bir LDAP'de veya başka bir kullanıcı deposunda depolanıyor olabilir. Üç aşamalı OAuth'u kurmak için bu kullanıcı mağazasını temel alan bir kontrolü genel OAuth akışına entegre etmeniz gerekir.

OAuth 1.0a

OAuth 1.0a politikasıyla ilgili ayrıntılı bilgi için OAuth v1.0a politikası başlıklı makaleyi inceleyin.

Yardım alma

Yardım için Apigee Müşteri Desteği sayfasını inceleyin.