Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Neler öğreneceksiniz?
- Örnek bir API proxy'si indirip dağıtın.
- OAuth korumalı bir API proxy'si oluşturun.
- Ürün, geliştirici ve uygulama oluşturun.
- Bir OAuth erişim jetonu için kimlik bilgilerini takas edin.
- Erişim jetonu olan bir API'yi çağırın.
Bu eğitim, OAuth 2.0 kullanarak bir API'nin güvenliğini nasıl sağlayacağınızı gösterir.
OAuth, kullanıcıların kullanıcı adlarını ve şifrelerini belirtmelerine gerek kalmadan uygulamaların kullanıcılar adına bilgilere erişmesini sağlayan bir yetkilendirme protokolüdür.
OAuth ile güvenlik kimlik bilgileri (ör. kullanıcı adı/şifre veya anahtar/sır) erişim jetonu olarak değiştirilir. Örneğin:
joe:joes_password
(kullanıcı adı:şifre) veya
Nf2moHOASMJeUmXVdDhlMbPaXm2U7eMc:unUOXYpPe74ZfLEb
(key:gizli)
şöyle bir şeye dönüşür:
b0uiYwjRZLEo4lEu7ky2GGxHkanN
Erişim jetonu, rastgele bir karakter dizesidir ve geçicidir (nispeten kısa bir süre sonra süresinin sona ermesi gerekir). Bu nedenle, uygulama iş akışında kullanıcının kimliğini doğrulamak için jetonun iletilmesi, gerçek kimlik bilgilerinin yeni bir kısmını iletmekten çok daha güvenlidir.
OAuth 2.0 spesifikasyonu, uygulamalar için erişim jetonları dağıtmak üzere "izin türleri" adı verilen farklı mekanizmalar tanımlar. OAuth 2.0 tarafından tanımlanan en temel izin türü "istemci kimlik bilgileri" olarak adlandırılır. Bu izin türünde OAuth erişim jetonları, yukarıdaki örnekte gösterildiği gibi tüketici anahtarı/tüketici gizli anahtarı çiftleri olan istemci kimlik bilgileri karşılığında oluşturulur.
Edge'deki istemci kimlik bilgileri izin türü, API proxy'lerindeki politikalar kullanılarak uygulanır. Tipik bir OAuth akışı iki adımdan oluşur:
- İstemci kimlik bilgilerinden OAuth erişim jetonu oluşturmak için Call API proxy 1'i seçin. Bu işlem, API proxy'sindeki OAuth v2.0 politikası tarafından yönetilir.
- OAuth erişim jetonunu bir API çağrısında göndermek için Call API proxy 2'yi seçin. API proxy'si, OAuth v2.0 politikası kullanarak erişim jetonunu doğrular.
Gerekenler
- Apigee Edge hesabı. Henüz hesabınız yoksa Apigee Edge hesabı oluşturma sayfasındaki talimatlarla kaydolabilirsiniz.
- Komut satırından API çağrıları yapmak için makinenize cURL yüklenmiştir.
Jeton oluşturan API proxy'si indirin ve dağıtın
Bu adımda, API çağrısında gönderilen bir tüketici anahtarı ve tüketici sırrından OAuth erişim jetonu oluşturan API proxy'si oluşturacaksınız. Apigee, bunu yapan örnek bir API proxy'si sunar. Proxy'yi şimdi indirip dağıtacaksınız ve eğitimde daha sonra kullanacaksınız. (Bu API proxy'sini kendiniz kolayca oluşturabilirsiniz. Bu indirme ve dağıtma adımı kolaylık sağlamak ve önceden oluşturulmuş proxy'leri paylaşmanın ne kadar kolay olduğunu göstermek içindir.)
- "oauth" örnek API proxy'si ZIP dosyasını, dosya sisteminizdeki herhangi bir dizine indirin.
- https://apigee.com/edge adresine gidip oturum açın.
- Sol gezinme çubuğunda Geliştirme > API Proxy'leri öğesini seçin.
- + Proxy'yi tıklayın.
- Proxy Oluşturma sihirbazında, Proxy paketi yükle'yi tıklayın.
- İndirdiğiniz
oauth.zip
dosyasını seçin ve İleri'yi tıklayın. - Oluştur'u tıklayın.
- Derleme tamamlandıktan sonra API proxy düzenleyicisinde yeni proxy'yi görüntülemek için Proxy'yi düzenle'yi tıklayın.
- API Proxy düzenleyicisine Genel Bakış sayfasında Dağıtım açılır menüsünü tıklayın ve test seçeneğini belirleyin. Bu, kuruluşunuzdaki test ortamıdır.
Onay isteminde Dağıt'ı tıklayın.
Dağıtım açılır menüsünü tekrar tıkladığınızda yeşil bir simge, proxy'nin test ortamına dağıtıldığını gösterir.
Tebrikler! Erişim jetonu oluşturan bir API proxy'sini başarıyla indirip Edge kuruluşunuza dağıttınız.
OAuth akışını ve politikasını görüntüleme
API proxy'sinin içeriğini daha yakından inceleyelim.
- API proxy düzenleyicisinde Geliştir sekmesini tıklayın. Soldaki Gezgin bölmesinde iki politika görürsünüz. Ayrıca
Proxy Endpoints
bölümünde ikiPOST
akışı görürsünüz. -
Proxy Endpoints
altındaki AccessTokenClientCredential bağlantısını tıklayın.
XML kodu görünümünde
AccessTokenClientCredential
adında birFlow
görürsünüz:<Flow name="AccessTokenClientCredential"> <Description/> <Request> <Step> <Name>GenerateAccessTokenClient</Name> </Step> </Request> <Response/> <Condition>(proxy.pathsuffix MatchesPath "/accesstoken") and (request.verb = "POST")</Condition> </Flow>
Akış, API proxy'sindeki bir işleme adımıdır. Bu durumda, belirli bir koşul karşılandığında akış tetiklenir (buna koşullu akış denir).
<Condition>
öğesinde tanımlanan koşul, API proxy çağrısı/accesstoken
kaynağına yapılırsa ve istek fiiliPOST
ise erişim jetonunu oluşturanGenerateAccessTokenClient
politikasını yürütür. -
Şimdi koşullu akışın tetikleyeceği politikaya göz atalım. Akış şemasında GenerateAccessTokenClient politika simgesini tıklayın.
Aşağıdaki XML yapılandırması kod görünümüne yüklenir:<OAuthV2 name="GenerateAccessTokenClient"> <!-- This policy generates an OAuth 2.0 access token using the client_credentials grant type --> <Operation>GenerateAccessToken</Operation> <!-- This is in millseconds, so expire in an hour --> <ExpiresIn>3600000</ExpiresIn> <SupportedGrantTypes> <!-- This part is very important: most real OAuth 2.0 apps will want to use other grant types. In this case it is important to NOT include the "client_credentials" type because it allows a client to get access to a token with no user authentication --> <GrantType>client_credentials</GrantType> </SupportedGrantTypes> <GrantType>request.queryparam.grant_type</GrantType> <GenerateResponse/> </OAuthV2>
Yapılandırma şunları içerir:
- Önceden tanımlanmış birkaç değerden biri olabilen
<Operation>
, politikanın ne yapacağını tanımlar. Bu örnekte, bir erişim jetonu oluşturur. - Jeton, oluşturulduktan 1 saat (360.000 milisaniye) sonra geçerliliğini yitirir.
<SupportedGrantTypes>
bölgesinde kullanılması beklenen OAuth<GrantType>
,client_credentials
'dir (tüketici anahtarı ve sırrını OAuth jetonu için değiştirme).- İkinci
<GrantType>
öğesi, politikaya OAuth 2.0 spesifikasyonunun gerektirdiği şekilde izin türü parametresi için API çağrısında nereye bakılacağını bildirir. (Bunu daha sonra API çağrısında görürsünüz). İzin türü, HTTP üst bilgisi içinde (request.header.grant_type
) veya form parametresi (request.formparam.grant_type
) olarak da gönderilebilir.
- Önceden tanımlanmış birkaç değerden biri olabilen
Şu anda API proxy'si ile ilgili başka bir işlem yapmanıza gerek yoktur. Sonraki adımlarda, OAuth erişim jetonu oluşturmak için bu API proxy'sini kullanacaksınız. Ancak öncelikle birkaç şey daha yapmanız gerekiyor:
- OAuth ile güvenliğini sağlamak istediğiniz API proxy'sini oluşturun.
- Tüketici anahtarı ve tüketici sırrının erişim jetonuyla değiştirilmesine neden olacak birkaç yapı daha oluşturun.
OAuth korumalı API proxy'si oluşturma
Şimdi, korumak istediğiniz API proxy'sini oluşturacaksınız. Bu, istediğiniz bir şeyi döndüren API çağrısıdır. Bu durumda API proxy'si, IP adresinizi döndürmek için Apigee'nin sahte hedef hizmetini çağırır. ANCAK bunu yalnızca API çağrınızla geçerli bir OAuth erişim jetonu iletirseniz görürsünüz.
Burada oluşturduğunuz API proxy'si, istekte OAuth jetonu olup olmadığını kontrol eden bir politika içerir.
- Sol gezinme çubuğunda Geliştirme > API Proxy'leri öğesini seçin.
- + Proxy'yi tıklayın.
- Proxy oluşturun sihirbazında, Ters proxy (en yaygın) seçeneğini belirleyin ve İleri'yi tıklayın.
- Proxy'yi şu şekilde yapılandırın:
Bu alanda bunu yap Proxy Adı Şunu girin: helloworld_oauth2
Proje Temel Yolu Şununla değiştir:
/hellooauth2
Proje Temel Yolu, API proxy'sine istek göndermek için kullanılan URL'nin bir parçasıdır.
Mevcut API Şunu girin:
https://mocktarget.apigee.net/ip
Bu parametre, Apigee Edge'in API proxy'sine yapılan bir istekte çağırdığı hedef URL'yi tanımlar.
Açıklama Şunu girin: hello world protected by OAuth
- İleri'yi tıklayın.
- Genel politikalar sayfasında:
Bu alanda bunu yap Güvenlik: Yetkilendirme Seçin: OAuth 2.0 - İleri'yi tıklayın.
- Virtual Hosts (Sanal Barındırıcılar) sayfasında Next (İleri) seçeneğini tıklayın.
- Derleme sayfasında test ortamının seçili olduğundan emin olun ve Oluştur ve Dağıt'ı tıklayın.
- Özet sayfasında, yeni API proxy'nizin başarıyla oluşturulduğuna ve API proxy'sinin test ortamınıza dağıtıldığına dair bir onay görürsünüz.
- API proxy'sine ilişkin Genel Bakış sayfasını görüntülemek için Proxy'yi düzenle'yi tıklayın.
Bu kez API proxy'sinin otomatik olarak dağıtıldığına dikkat edin. "Test" ortamının yanında yeşil bir dağıtım noktası olduğundan emin olmak için Dağıtım açılır menüsünü tıklayın.
Politikaları görüntüle
Oluşturduklarınıza daha yakından bakalım.
- API proxy düzenleyicisinde Geliştir sekmesini tıklayın. API proxy'sinin istek akışına iki politikanın eklendiğini göreceksiniz:
- OAuth v2.0 Erişim Jetonunu Doğrulama: Geçerli bir OAuth jetonunun mevcut olduğundan emin olmak için API çağrısını kontrol eder.
- Remove Header Authorization (Başlık Yetkilendirmesini Kaldır) – Erişim jetonunu kontrol edildikten sonra, hedef hizmete iletilmemesi için kaldıran bir AttributionMessage politikasıdır. (Hedef hizmette OAuth erişim jetonu gerekiyorsa bu politikayı kullanamazsınız).
-
Akış görünümünde OAuth v2.0 Erişim Jetonunu Doğrula simgesini tıklayın ve kod bölmesinde altındaki XML'e bakın.
<OAuthV2 async="false" continueOnError="false" enabled="true" name="verify-oauth-v2-access-token"> <DisplayName>Verify OAuth v2.0 Access Token</DisplayName> <Operation>VerifyAccessToken</Operation> </OAuthV2>
<Operation>
öğesininVerifyAccessToken
olduğuna dikkat edin. İşlem, politikanın ne yapması gerektiğini tanımlar. Bu durumda, istekte geçerli bir OAuth jetonu olup olmadığını kontrol eder.
API ürünü ekleyin
Apigee kullanıcı arayüzünü kullanarak API ürünü eklemek için:
- Yayınla > API Ürünleri'ni seçin.
- +API ürünü'nü tıklayın.
- API ürününüzün ürün ayrıntılarını girin.
Alan Açıklama Ad API ürününün dahili adı. Adda özel karakter belirtmeyin.
Not: API ürünü oluşturulduktan sonra adı düzenleyemezsiniz. Örneğin,helloworld_oauth2-Product
Görünen ad API ürününün görünen adı. Görünen ad, kullanıcı arayüzünde kullanılır ve istediğiniz zaman bu adı düzenleyebilirsiniz. Belirtilmezse Name (Ad) değeri kullanılır. Bu alan, Ad değeri kullanılarak otomatik olarak doldurulur. Bu alanın içeriğini düzenleyebilir veya silebilirsiniz. Görünen ad özel karakterler içerebilir. Örneğin, helloworld_oauth2-Product
.Açıklama API ürününün açıklaması. Ortam API ürününün erişime izin vereceği ortamlar. API proxy'sini dağıttığınız ortamı seçin. Örneğin, test
.Erişim Herkese açık'ı seçin. Erişim isteklerini otomatik olarak onayla Herhangi bir uygulamadan bu API ürünü için anahtar isteklerinin otomatik olarak onaylanmasını etkinleştirin. Kota Bu eğitim için yoksayın. İzin Verilen OAuth Kapsamları Bu eğitim için yoksayın. - API proxy'leri alanında, az önce oluşturduğunuz API proxy'sini seçin.
- Yol alanına "/" yazın. Diğer alanları dikkate almayın.
- Kaydet'i tıklayın.
Kuruluşunuza geliştirici ve uygulama ekleyin
Ardından, API'lerinizi kullanmak üzere kaydolan bir geliştiricinin iş akışını simüle edeceksiniz. İdeal olarak, geliştiricilerin kendilerini ve uygulamalarını geliştirici portalınız üzerinden kaydettirmeleri önerilir. Ancak bu adımda, bir geliştirici ve bir uygulamayı yönetici olarak ekleyeceksiniz.
Bir geliştiricinin, API'lerinizi çağıran bir veya daha fazla uygulaması olacaktır ve her uygulama benzersiz bir tüketici anahtarı ve tüketici sırrı alır. Edge hangi geliştiricinin ve uygulamanın hangi OAuth jetonuna ait olduğunu bileceği için bu anahtar/uygulama başına gizli anahtar, API sağlayıcısı olarak da size API'lerinize erişim konusunda daha ayrıntılı kontrol ve API trafiği hakkında daha ayrıntılı analiz raporları sunar.
Geliştirici oluşturma
Nigel Tufnel adında bir geliştirici oluşturalım.
- Menüde Yayınla > Geliştiriciler'i seçin.
- + Geliştirici'yi tıklayın.
- Yeni Geliştirici penceresine aşağıdakileri girin:
Bu alanda Enter Ad Nigel
Soyadı Tufnel
Kullanıcı Adı nigel
E-posta nigel@example.com
- Oluştur'u tıklayın.
Uygulama kaydetme
Nigel için bir uygulama oluşturalım.
- Yayınla > Uygulamalar'ı seçin.
- + Uygulama'yı tıklayın.
- New App (Yeni Uygulama) penceresine aşağıdakileri girin:
Bu alanda bunu yap Ad ve Görünen Ad Şunu girin: nigel_app
Developer Geliştirici'yi tıklayıp seçin: Nigel Tufnel (nigel@example.com)
Geri çağırma URL'si ve Notlar Boş bırak - Ürünler altında, Ürün Ekle'yi tıklayın.
- helloworld_oauth2-Product öğesini seçin.
- Oluştur'u tıklayın.
Tüketici anahtarını ve tüketici sırrını alma
Artık OAuth erişim jetonuyla değiştirilecek tüketici anahtarını ve tüketici sırrını alacaksınız.
- nigel_app sayfasının gösterildiğinden emin olun. Görmüyorsanız Uygulamalar sayfasında (Yayınla > Uygulamalar) nigel_app'i tıklayın.
-
nigel_app sayfasındaki Anahtar ve Gizli sütunlarında Göster'i tıklayın. Anahtar/sırrın, önceden otomatik olarak oluşturulan "helloworld_oauth2-Product" ile ilişkilendirildiğine dikkat edin.
- Anahtar ve Sırrı seçip kopyalayın. Bunları bir geçici metin dosyasına yapıştırın. Bunları daha sonraki bir adımda kullanacaksınız. Bu adımda, bu kimlik bilgilerini OAuth erişim jetonuyla değiştirecek API proxy'sini çağıracaksınız.
IP adresinizi almak için API'yi çağırmayı deneyin (başarısız).
Sadece başlatmak için IP adresinizi döndürmesi gereken korumalı API proxy'sini çağırmayı deneyin. Aşağıdaki cURL komutunu, bir terminal penceresinde Edge kuruluşunuzun adıyla değiştirerek yürütün. URL'deki test
kelimesi kuruluşunuzun test ortamıdır ve proxy'lerinizi dağıttığınız ortamdır. Proxy temel yolu, proxy'yi oluştururken belirttiğiniz temel yol olan /hellooauth2
'dir.
Çağrıda OAuth erişim jetonu iletmediğinize dikkat edin.
curl https://ORG_NAME-test.apigee.net/hellooauth2
API proxy'sinde, OAuth v2.0 Erişim Jetonunu Doğrulama politikası, istekte geçerli bir OAuth jetonu olup olmadığını kontrol ettiği için çağrı, aşağıdaki mesajla başarısız olur.
{"fault":{"faultstring":"Invalid access token","detail":{"errorcode":"oauth.v2.InvalidAccessToken"}}}
Bu durumda başarısızlık iyidir. API proxy'nizin çok daha güvenli olduğu anlamına gelir. Yalnızca geçerli OAuth erişim jetonu olan güvenilir uygulamalar bu API'yi başarıyla çağırabilir.
OAuth erişim jetonu alma
Şimdi en büyük faydayı sağlamaya geçebiliriz. Kopyalayıp bir metin dosyasına yapıştırdığınız anahtarı ve gizli anahtarı kullanmak ve bunları bir OAuth erişim jetonuyla değiştirmek üzeresiniz. Şimdi, içe aktardığınız API örnek proxy'sine (oauth) bir API çağrısı yapacaksınız. Bu işlem bir API erişim jetonu oluşturur.
Bu anahtarı ve gizli anahtarı kullanarak aşağıdaki cURL çağrısını yapın (protokolün https
olduğunu unutmayın). Burada belirtilen yerlerde Edge kuruluş adınızı, anahtarınızı ve gizli kodunuzu değiştirin:
curl -X POST -H "Content-Type: application/x-www-form-urlencoded" \ "https://ORG_NAME-test.apigee.net/oauth/client_credential/accesstoken?grant_type=client_credentials" \ -d "client_id=CLIENT_KEY&client_secret=CLIENT_SECRET"
Arama yapmak için Postman gibi bir istemci kullanıyorsanız client_id
ve client_secret
öğelerinin, isteğin Gövde bölümünde yer alacağını ve x-www-form-urlencoded
olması gerektiğini unutmayın.
Şuna benzer bir yanıt alırsınız:
{ "issued_at" : "1466025769306", "application_name" : "716bbe61-f14a-4d85-9b56-a62ff8e0d347", "scope" : "", "status" : "approved", "api_product_list" : "[helloworld_oauth2-Product]", "expires_in" : "3599", //--in seconds "developer.email" : "nigel@example.com", "token_type" : "BearerToken", "client_id" : "xNnREu1DNGfiwzQZ5HUN8IAUwZSW1GZW", "access_token" : "GTPY9VUHCqKVMRB0cHxnmAp0RXc0", "organization_name" : "myOrg", "refresh_token_expires_in" : "0", //--in seconds "refresh_count" : "0" }
OAuth erişim jetonunuzu aldınız. access_token değerini (tırnak işaretleri olmadan) kopyalayıp metin dosyanıza yapıştırın. Birazdan bunu kullanacaksınız.
Ne oldu?
Erişim jetonu oluşturan GenerateAccessTokenClient
OAuth politikasını yürütmek için daha önce, oauth proxy'sinde söz konusu koşullu akışa baktığınızda, kaynak URI'sının /accesstoken
ve istek fiilinin POST
olduğunu belirttiğinizde hatırlıyor musunuz? cURL komutunuz bu koşulları karşıladığı için OAuth politikası yürütüldü. Ekip, tüketici anahtarınız ile tüketici gizli anahtarınızı doğrulayarak bunların yerine 1 saat içinde süresi dolacak bir OAuth jetonu aldı.
API'yi erişim jetonuyla çağırma (başarılı!)
Artık bir erişim jetonunuz olduğuna göre API proxy'sini çağırmak için bu jetonu kullanabilirsiniz. Aşağıdaki cURL çağrısını yapın. Bunun yerine Edge kuruluş adınızı ve erişim jetonunu kullanın.
curl https://ORG_NAME-test.apigee.net/hellooauth2 -H "Authorization: Bearer TOKEN"
Artık IP adresinizi döndüren API proxy'sine başarılı bir çağrı almanız gerekir. Örneğin:
{"ip":"::ffff:192.168.14.136"}
Bu API çağrısını yaklaşık bir saat boyunca tekrarlayabilirsiniz. Bu sürenin sonunda erişim jetonunun süresi dolar. Bir saat sonra çağrı yapmak için önceki adımları kullanarak yeni bir erişim jetonu oluşturmanız gerekir.
Tebrikler! API proxy'si oluşturdunuz ve çağrıya geçerli bir OAuth erişim jetonunun dahil edilmesini zorunlu kılarak API proxy'sini korudunuz.
İlgili konular
- OAuth ana sayfası
- OAuthV2 politikası
- API proxy'lerini indir (API proxy'sinin, indirdiğinize benzer bir ZIP dosyasında nasıl paketleneceğini gösterir)