OAuth

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

OAuth, API'ler için önde gelen yetkilendirme protokolü olarak ortaya çıkmıştır. 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 uygulamalara kendi adlarına hareket etme yetkisi vermesini 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 uygulamaya yetki verdiğinden emin olur ve ardından uygulamaya bir erişim jetonu verir. Uygulama, korumalı bir API kullandığında Apigee Edge, erişim jetonunun geçerli olduğundan ve süresinin dolmadığından emin olmak için jetonu kontrol eder. API sağlayıcı olarak, uygulamaların erişim jetonları almasını sağlayan uç noktalar sunmanız gerekir.

Apigee Edge, OAuth'u kullanmaya başlamanızı kolaylaştırmak için 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 alacağınız ve bu erişim jetonlarını korunan API'lere erişmek için nasıl kullanacağınız açıklanmaktadır.

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

Kolaylık sağlamak için Apigee Edge'deki tüm kuruluşlar, istemci kimlik bilgileri yetkilendirme türünü uygulayan bir dizi OAuth 2.0 uç noktasıyla önceden yapılandırılmış olarak gelir. İstemci kimlik bilgileri yetkilendirme 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şa kaydedilen her uygulama için verdiği tüketici anahtarı ve gizli bilgi çiftidir. "İstemci kimlik bilgileri", tüketici anahtarı ve gizli bilgi çiftini ifade eder.

Edge Developer Services'i kullanan uygulamalara kimlik bilgisi verme hakkında daha fazla bilgi edinmek için Uygulamaları kaydetme ve anahtarları yönetme başlıklı makaleyi inceleyin.

Bu nedenle, API güvenlik düzeninizi API anahtarı doğrulamasından OAuth istemci kimlik bilgilerine yükseltmek nispeten basittir. Her iki şema da istemci uygulamasını doğrulamak için aynı tüketici anahtarını ve gizli anahtarı kullanır. Aradaki fark, istemci kimlik bilgilerinin ek bir kontrol katmanı sağlamasıdır. Bu sayede, uygulamanın tüketici anahtarını iptal etmenize gerek kalmadan erişim jetonunu gerektiğinde kolayca iptal edebilirsiniz. Varsayılan OAuth uç noktalarıyla çalışmak için kuruluşunuzdaki uygulama için oluşturulan herhangi bir tüketici anahtarını ve gizli anahtarı kullanarak jeton uç noktasından erişim jetonlarını alabilirsiniz. (Hatta, halihazırda tüketici anahtarları ve gizli anahtarları olan uygulamalar için bile istemci kimlik bilgilerini etkinleştirebilirsiniz.)

İstemci kimlik bilgisi atama ile ilgili tüm spesifikasyonları OAuth 2.0 Spesifikasyonu'nda bulabilirsiniz.

API'nizi politikayla koruma

Erişim jetonlarını kullanabilmek için API'lerinizi, OAuth erişim jetonlarını çalışma zamanında doğrulayacak şekilde yapılandırmanız gerekir. Bunu yapmak için, erişim jetonlarını doğrulamak üzere bir API proxy'si yapılandırırsınız. Bu, bir uygulama API'lerinizden birini kullanmak için her istekte bulunduğunda API isteğiyle birlikte geçerli bir erişim jetonu sunması gerektiği anlamına gelir. Apigee Edge, sunulan erişim jetonlarının oluşturulması, depolanması ve doğrulanmasıyla ilgili karmaşıklığı yönetir.

Yeni bir API proxy'si oluşturduğunuzda API'ye kolayca OAuth doğrulaması ekleyebilirsiniz. Yeni bir API proxy'si oluştururken Özellik ekle'yi seçebilirsiniz. Aşağıda gösterildiği gibi, OAuth v2.0 erişim jetonlarıyla güvenli seçeneğinin yanındaki radyo düğmesini belirleyerek OAuth 2.0 erişim jetonlarının doğrulanmasını ekleyebilirsiniz. Bu seçeneği belirlediğinizde, yeni oluşturulan API proxy'sine iki politika eklenir. Bunlardan biri erişim jetonlarını doğrulamak, diğeri ise doğrulandıktan sonra erişim jetonunu kaldırmak için kullanılır.

Ayrıca, OAuth v2.0 erişim jetonlarıyla güvenli hale getirme 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 ürünü otomatik olarak oluşturmak istiyorsanız bu seçeneği işaretleyin. Otomatik olarak oluşturulan ürün, yeni API proxy'siyle ilişkilendirilerek 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? başlıklı makaleyi inceleyin.

Halihazırda mevcut olan bir API proxy'si için erişim jetonu doğrulamayı etkinleştirmeniz gerekiyorsa korumak istediğiniz API'ye OAuthV2 türünde bir politika eklemeniz yeterlidir. OAuthV2 politikaları, bir işlem belirtilerek ç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'dır. OAuth uç noktalarını ayarlarken bu işlemler hakkında bilgi edineceksiniz.)

OAuthV2 türünde VerifyOAuthTokens politikası

Erişim jetonlarını doğrulayan örnek bir politika aşağıdaki gibi görünür. (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 referans verilen politikanın adı. Yok Evet
Operation OAuthV2 politikası tarafından yürütülecek işlem. VerifyAccessToken'i belirterek, politikayı erişim jetonları için istekleri kontrol edecek ve erişim jetonunun geçerli, süresinin dolmamış ve istenen API kaynağını (URI) kullanmak için onaylanmış olduğunu doğrulayacak şekilde yapılandırırsınız. (Bu kontrolü yapmak için politika, uygulamanın kullanması onaylanan 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'ne gidin.

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

weatherapi'nin Genel Bakış bölümünde 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österilir.

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

Ekle'yi seçtiğinizde politika oluşturulur ve weatherapi'nin isteği PreFlow'a eklenir.

Politikayı ekledikten sonra aşağıdaki istek PreFlow yapılandırması Tasarımcı bölmesinde gösterilir.

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

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

Politikayı isteğin PreFlow'una ekleyerek, politikanın tüm istek mesajlarında her zaman zorunlu kılınmasını sağlarsınız.

Artık bir API'yi OAuth 2.0 istemci kimlik bilgileriyle güvenli hale getirdiniz. Sonraki adımda, erişim jetonunun nasıl alınacağını ve güvenli API'ye erişmek için nasıl kullanılacağını öğreneceksiniz.

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

Weatherapi, OAuth 2.0 ile güvenli hale getirildiğinden uygulamaların API'yi kullanmak için erişim jetonları sunması gerekir. Uygulama, korumalı bir kaynağa erişmek için istekte erişim jetonunu "Authorization" HTTP üstbilgisi olarak aşağıdaki şekilde sunar:

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

API'ye bir OAuthV2 politikası eklendiğinden Apigee Edge, sunulan erişim jetonunun geçerli olduğunu doğrulayacak ve ardından API'ye erişim izni vererek hava durumu raporunu isteği gönderen uygulamaya döndürecektir.

Ancak 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, tüketici anahtarı/gizli anahtar çiftlerini jeton uç noktasına sunarak erişim jetonları elde eder. Jeton uç noktası, oauth adlı API proxy'sinde yapılandırılır. Bu nedenle, uygulamaların erişim jetonu almak için oauth API proxy'si tarafından kullanıma sunulan API'yi çağırması gerekir. Erişim jetonu olan uygulama, erişim jetonunun süresi dolana veya erişim jetonu iptal edilene kadar weatherapi'yi tekrar tekrar çağırabilir.

Artık kendinizi bir uygulama geliştirici olarak görmeniz gerekiyor. Weatherapi'yi çağırmak istediğiniz için uygulamanız için bir erişim jetonu almanız gerekir. Yapmanız gereken ilk şey, tüketici anahtarı ve gizli bilgi çifti (diğer adıyla API anahtarı veya uygulama anahtarı) almaktır.

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

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

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

(Uygulama gösterilmiyorsa Uygulamaları kaydetme ve API anahtarlarını yönetme başlıklı makalede uygulama kaydetme hakkında bilgi edinebilirsiniz.)

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 Consumer Key (Tüketici Anahtarı) ve Consumer Secret (Tüketici Gizli Anahtarı) alanlarını not 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 uygulamaların listesini döndürür.

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

Uygulama kimliğinde basit bir GET çağrısı yaparak uygulamanın profilini 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, weatherapp için bir uygulama profilinin JSON gösterimi şu şekildedir:

{
  "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 erişim jetonu almak için kullanırsınız. Yetkilendirme türü, isteğe sorgu parametresi olarak sunulur. (Değişkenin değerini {org_name}, Apigee Edge'deki kuruluşunuzun adını yansıtacak şekilde değiştirdiğinizden emin olun.)

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

Aşağıdaki istekte, consumerKey değerini client_id ile değiştirin. İlişkili consumerSecret değerini client_secret ile 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 gizli anahtarı doğruladıktan sonra 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 korumalı kaynaklara çalışma zamanı erişimi 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 kuruluşu bile) bir OAuth jetonu uç noktasıyla sağlanır. Uç nokta, oauth adlı API proxy'sindeki 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 kullanır:

/oauth/client_credential/accesstoken

Bu URI'yi, erişim jetonu alması gereken geliştiricilerle paylaşın. Uygulama geliştiriciler, erişim jetonları almak için tüketici anahtarı ve gizli anahtar çiftlerini sunarak uygulamalarını bu uç noktayı çağıracak şekilde yapılandırır.

Varsayılan istemci kimlik bilgileri jeton uç noktası, ağ üzerinden aşağıdaki URL'de kullanıma sunulur:

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

Örneğin, kuruluşunuzun adı "apimakers" ise URL şu şekilde olur:

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

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

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

Üç ayaklı OAuth yapılandırmaları (yetkilendirme kodu, örtülü ve şifre verme türleri) API sağlayıcı olarak sizin uygulama son kullanıcılarının kimliğini doğrulamanızı gerektirir. Her kuruluş kullanıcıların kimliğini farklı şekillerde doğruladığından, OAuth'u kullanıcı mağazanızla entegre etmek için bazı politika özelleştirmeleri veya kodlar gerekir. Örneğin, tüm kullanıcılarınız Active Directory, LDAP veya başka bir kullanıcı deposunda saklanıyor olabilir. Üç ayaklı OAuth'u kullanmaya başlamak için bu kullanıcı deposuna karşı bir kontrolü genel OAuth akışına entegre etmeniz gerekir.

OAuth 1.0a

OAuth 1.0a desteği sonlandırıldı. Ayrıntılı bilgi için Kullanımdan kaldırılan özellikler başlıklı makaleyi inceleyin.

Yardım alın

Yardım için Apigee Müşteri Destek Ekibi ile iletişime geçin.