Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Sürüm: 2.0.2
Belirttiğiniz Google API'lerine erişmek için Google ile kimliğinizi doğrulayın.
Google Cloud hizmetleri için jeton (OAuth veya JWT) almak üzere bu uzantıyı kullanın, ardından ServiceCallout politikası kullanarak Google API'ye yapılan sonraki çağrılarda jetonu kullanın.
Örneğin, bir API proxy'sinde bu uzantıya sahip bir jeton alabilir, PopulateCache politikası ile jetonu önbelleğe alabilir, ardından ServiceCallout politikasını kullanarak jetonu ileterek bir API proxy akışından Google Cloud hizmetlerine erişebilirsiniz.
Ön koşullar
Bu içerik, uzantının yapılandırılması ve kullanılmasıyla ilgili referans bilgiler sağlar. ExtensionCallout politikası kullanılarak bir API proxy'sinden uzantıyı kullanmadan önce şunları yapmanız gerekir:
Uzantının kullanacağı hesabın (kimlik bilgileri için kullanacağınız hizmet hesabıyla temsil edilen hesap), uzantının kimliğini doğrulayacağı Google Cloud hizmetlerine erişimi olduğundan emin olun.
Hizmet hesabı için anahtar oluşturmak üzere Google Cloud Console'u kullanın.
Yapılandırma referansını kullanarak uzantıyı eklerken ve yapılandırırken sonuçta elde edilen hizmet hesabı anahtarı JSON dosyasının içeriğini kullanın.
Google Cloud ile kimlik doğrulama hakkında
Bu uzantı, belirli bir Google Cloud projenizde tanımlanan üyeyi temsil ederek Google Cloud'dan kimlik doğrulama isteğinde bulunur. Bu uzantıyı yapılandırırken söz konusu proje üyesinin hizmet hesabı JSON dosyasını kullanırsınız.
Bu nedenle, uzantı yalnızca söz konusu üyenin izni olan kaynaklara erişebilir. Başka bir deyişle, bu uzantının başarılı bir şekilde kimlik doğrulaması yapması, Google Cloud Console'da verilen izinler ile uzantının çalışma zamanında istediği erişim (kapsamlar veya kitle aracılığıyla) arasındaki eşleşmeye bağlıdır.
Genel olarak, bu uzantıdan API'lere erişmek için kimlik doğrulama adımlarınız şunlar olacaktır:
Bu uzantının temsil ettiği üye hizmet hesabının, erişmek istediğiniz Google kaynağına erişimi olduğundan emin olun. Bu uzantının temsil ettiği proje üyesine rol vermek için Google Cloud Console'daki Cloud Identity and Access Management (Cloud IAM) sayfasını kullanabilirsiniz.
Bu uzantıyı yapılandırırken söz konusu üyenin hizmet hesabı anahtarı JSON'unu kullanın.
Bu uzantıyı kullanmak için ExtensionCallout politikası yapılandırırken yalnızca proje üyenizin erişebildiği kaynaklar için kimlik doğrulama isteğinde bulunun.
Örnekler
Aşağıdaki örneklerde, ExtensionCallout politikası kullanılarak Google Cloud ile kimlik doğrulamanın nasıl yapılacağı gösterilmektedir.
Erişim jetonu alma
Aşağıdaki örnekte, uzantının getOauth2AccessToken işlemi, Cloud Translation API'ye yapılan isteklerde kullanılacak bir jeton alıyor.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Get-Access-Token">
<DisplayName>Get Access Token</DisplayName>
<Connector>google-auth</Connector>
<Action>getOauth2AccessToken</Action>
<Input><![CDATA[{
"scope" : [
"https://www.googleapis.com/auth/cloud-translation"
]
}]]></Input>
<Output>google.credentials</Output>
</ConnectorCallout>
Yanıt değeri aşağıdaki gibi görünür:
{
"access_token":"ya29.c.ElpSB...BMgkALBJ0kou-8",
"token_type":"Bearer",
"expiresInSec": 3600
}
Aşağıdaki AssignMessage politikası, ExtensionCallout politikasından yanıt değerini alır ve yanıt yüküne kopyalar. Bu, hata ayıklama açısından yararlı olabilir. Gerçek uygulamada, jetonu istemciye döndürmek istemeyebilirsiniz.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Retrieve-Auth-Token">
<DisplayName>Retrieve Auth Token</DisplayName>
<AssignTo type="response" createNew="false"/>
<Set>
<Payload contentType="application/json">{google.credentials.access_token}</Payload>
</Set>
</AssignMessage>
Erişim jetonunu önbelleğe alma
Jeton almak için gereksiz çağrılar yapmamak üzere aldığınız jetonu önbelleğe alabilirsiniz. Jeton gerektiren sonraki çağrılar için jetonu Apigee Edge önbelleğinden almak, yeni bir jeton almaktan daha hızlıdır. Önbelleğe alınan jetonun süresi dolduğunda yeni bir jeton alın ve önbelleği bu jetonla yenileyin.
Bir örnek API proxy'sindeki aşağıdaki kod, ServiceCallout politikasıyla Google Çeviri API'sini çağırmak için önbelleğe alınmış bir jetonun nasıl ayarlanacağını ve kullanılacağını gösterir. Buradaki her kod örneği, akıştaki farklı bir politika içindir.
Aşağıdaki politikalar, aşağıdaki akış XML'sinde açıklanan sırayla yürütülür:
<Request>
<!-- Attempt to get a token from the cache. -->
<Step>
<Name>Get-Cached-Auth-Token</Name>
</Step>
<!-- Only execute the following ExtensionCallout policy if the call to the
cache couldn't retrieve a cached token. -->
<Step>
<Name>Google-Auth-Callout</Name>
<Condition>lookupcache.Get-Cached-Auth-Token.cachehit is false</Condition>
</Step>
<!-- Only execute the following PopulateCache policy if the call to the
cache couldn't retrieve a cached token. -->
<Step>
<Name>Cache-Auth-Token</Name>
<Condition>lookupcache.Get-Cached-Auth-Token.cachehit is false</Condition>
</Step>
<!-- Use the ServiceCallout policy to call the translate API. -->
<Step>
<Name>Translate-Text</Name>
</Step>
</Request>
Aşağıdaki LookupCache politikası, önbellekten jeton almaya çalışır. Jeton daha önce alınmış ve önbelleğe alınmışsa bu politika, API proxy'si tarafından kullanılmak üzere jetonu alır.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <LookupCache async="false" continueOnError="false" enabled="true" name="Get-Cached-Auth-Token"> <DisplayName>Get Cached Auth Token</DisplayName> <!-- Give cache key and scope to specify the entry for the cached token. --> <CacheKey> <Prefix/> <KeyFragment>gcp_translate_token_</KeyFragment> </CacheKey> <Scope>Exclusive</Scope> <!-- Assign the retrieved token (if any) to a variable, where it can be retrieved by policies. --> <AssignTo>cloud.translation.auth.token</AssignTo> </LookupCache>Önbellek araması önbelleğe alınmış bir jetonu almazsa aşağıdaki ExtensionCallout politikası, jetonun kapsamı olarak Google Cloud Translation API'yi belirterek yeni bir OAuth jetonu alır.
Google-Auth-Calloutuzantısı yapılandırılırken kullanılan hizmet hesabı kimlik bilgileri, API'ye erişimi olan bir proje üyesini temsil ediyorsa Google Cloud geçerli bir jeton döndürür.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ConnectorCallout async="false" continueOnError="true" enabled="true" name="Google-Auth-Callout"> <DisplayName>Google-Auth-Callout</DisplayName> <Connector>example-auth-extension</Connector> <Action>getOauth2AccessToken</Action> <Input><![CDATA[{ "scope" : ["https://www.googleapis.com/auth/cloud-translation"] }]]></Input> <Output parsed="false">cloud.translation.auth.token</Output> </ConnectorCallout>ExtensionCallout politikası yeni bir jeton aldıktan sonra PopulateCache politikası, API proxy'sindeki politikalar tarafından daha sonra kullanılmak üzere jetonu önbelleğe alır.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <PopulateCache async="false" continueOnError="false" enabled="true" name="Cache-Auth-Token"> <DisplayName>Cache Auth Token</DisplayName> <Properties/> <!-- Set cache key information to specify a unique key for this entry. --> <CacheKey> <Prefix/> <KeyFragment>gcp_translate_token_</KeyFragment> </CacheKey> <Scope>Exclusive</Scope> <ExpirySettings> <TimeoutInSec>5</TimeoutInSec> </ExpirySettings> <!-- Get the token to cache from the variable where the ExtensionCallout put it. --> <Source>cloud.translation.auth.token</Source> </PopulateCache>
İşlemler
getOauth2AccessToken
OAuth 2.0 erişim jetonu alır. Google API'leri bir OAuth jetonu gerektirdiğinde API proxy'niz ile Google API'leri arasında iki ayaklı OAuth'u desteklemek için bu işlemi kullanın.
İki aşamalı OAuth'ta bu uzantı işlemi, hizmet hesabı JSON'u (bu uzantıyı yapılandırırken eklediğiniz JSON) kullanarak Google ile kimlik doğrulama yaparak bir OAuth jetonu alır. Bu işlem OAuth jetonunu aldıktan sonra API proxy'niz, Google API'lerine çağrı yapmak için jetonu kullanabilir ve Google hizmet hesabı adına API'leri etkili bir şekilde çağırabilir.
Google Cloud API'lerine erişim, Google API'leri için OAuth 2.0 kapsamları bölümünde listelenen kapsamlar üzerinden filtrelenir.
OAuth 2.0 ile sunucudan sunucuya etkileşimler hakkında daha fazla bilgi için Sunucudan Sunucuya Uygulamalar için OAuth 2.0'ı Kullanma başlıklı makaleyi inceleyin.
Söz dizimi
<Action>getOauth2AccessToken</Action>
<Input><![CDATA[{
"scope" : [
"scope1",
"scope2"
]
}]]></Input>
Örnek
Aşağıdaki örnekte, uzantının getOauth2AccessToken işlemi, Cloud Translation API'ye yapılan isteklerde kullanılacak bir jeton alıyor.
<Action>getOauth2AccessToken</Action>
<Input><![CDATA[{
"scope" : [
"https://www.googleapis.com/auth/cloud-translation"
]
}]]></Input>
İstek parametreleri
| Parametre | Açıklama | Tür | Varsayılan | Zorunlu |
|---|---|---|---|---|
| kapsam | OAuth 2.0 kapsamları dizisi. Kapsamlar hakkında daha fazla bilgi için Google API'leri için OAuth 2.0 kapsamları başlıklı makaleyi inceleyin. | Dizi | ["https://www.googleapis.com/auth/cloud-platform"], hizmet hesabının erişebildiği tüm API'lere erişim izni verir. |
Sıra |
Yanıt
Erişim jetonunu, türünü ve geçerlilik bitiş tarihini aşağıdaki biçimde içeren bir nesne:
{
"accessToken": "ewogICJ0eXB...C5jb20iCn0K",
"token_type": "Bearer",
"expiresInSec": 3600
}
Yanıt özellikleri
| Parametre | Açıklama | Varsayılan | Zorunlu |
|---|---|---|---|
| accessToken | OAuth 2.0 erişim jetonu. | Yok | Evet |
| tokenType | Jeton türü. | Taşıyıcı | Evet |
| expiresInSec | Jetonun süresinin dolmasına kadar geçecek saniye sayısı. | 3600 | Evet |
getJWTAccessToken
JSON web jetonu (JWT) erişim jetonu alır. Çağırmak istediğiniz API'nin Google API'leri GitHub deposunda yayınlanmış bir hizmet tanımı varsa bu jetonu kullanarak Google API'lerinde kimliğinizi doğrulayabilirsiniz.
Bazı Google API'lerinde, OAuth 2.0 erişim jetonu yerine doğrudan taşıyıcı jeton olarak imzalı bir JWT kullanarak yetkilendirilmiş API çağrıları yapabilirsiniz. Bu mümkün olduğunda, API çağrısı yapmadan önce Google'ın yetkilendirme sunucusuna ağ isteği göndermeniz gerekmez.
JWT erişim jetonuyla kimlik doğrulama hakkında daha fazla bilgi için Sunucudan Sunucuya Uygulamalar için OAuth 2.0'ı Kullanma başlıklı makaleyi inceleyin.
Söz dizimi
<Action>getJWTAccessToken</Action>
<Input><![CDATA[{
"audience" : "audience"
}]]></Input>
Örnek: Cloud Functions URL'si
Aşağıdaki örnekte, uzantının getOauth2AccessToken işlemi, Cloud Translation API'ye yapılan isteklerde kullanılacak bir jeton alıyor.
<Action>getJWTAccessToken</Action>
<Input><![CDATA[{
"audience" : "https://YOUR_REGION-YOUR_PROJECT_ID.cloudfunctions.net/FUNCTION_NAME"
}]]></Input>
Örnek: Cloud IAP ile güvenliği sağlanmış istemci kimliği
Aşağıdaki örnekte, uzantının getOauth2AccessToken işlemi, Cloud Translation API'ye yapılan isteklerde kullanılacak bir jeton alıyor.
<Action>getJWTAccessToken</Action>
<Input><![CDATA[{
"audience" : "Cloud-IAP-secured-client-ID"
}]]></Input>
İstek parametreleri
| Parametre | Açıklama | Varsayılan | Zorunlu |
|---|---|---|---|
| audience | Jetonun hedeflenen alıcısı. Bu, Cloud IAP ile güvenliği sağlanmış bir istemci kimliğini veya Cloud Functions URL'sini içerebilir. | Yok | Evet |
Yanıt
{
"accessToken": "token",
"tokenType": "Bearer",
"expiresInSec": 3600
}
Yanıt özellikleri
| Parametre | Açıklama | Varsayılan | Zorunlu |
|---|---|---|---|
| accessToken | Erişim jetonu. | Yok | Evet |
| tokenType | Jeton türü. | Taşıyıcı | Evet |
| expiresInSec | Saniye cinsinden geçerlilik süresi. | 3600 | Evet |
Yapılandırma referansı
Bu uzantıyı API proxy'lerinde kullanılacak şekilde yapılandırıp dağıtırken aşağıdakileri kullanın. Apigee konsolunu kullanarak uzantı yapılandırma adımları için Uzantı ekleme ve yapılandırma başlıklı makaleyi inceleyin.
Sık kullanılan uzantı özellikleri
Aşağıdaki özellikler her uzantı için mevcuttur.
| Mülk | Açıklama | Varsayılan | Zorunlu |
|---|---|---|---|
name |
Uzantının bu yapılandırmasını verdiğiniz ad. | Yok | Evet |
packageName |
Apigee Edge'in sağladığı uzantı paketinin adı. | Yok | Evet |
version |
Uzantıyı yapılandırdığınız uzantı paketinin sürüm numarası. | Yok | Evet |
configuration |
Eklediğiniz uzantıya özgü yapılandırma değeri. Bu uzantı paketinin özellikleri başlıklı makaleyi inceleyin | Yok | Evet |
Bu uzantı paketinin özellikleri
Bu uzantıya özel aşağıdaki yapılandırma özelliklerinin değerlerini belirtin.
| Mülk | Açıklama | Varsayılan | Zorunlu |
|---|---|---|---|
| giriş bilgileri | Apigee Edge konsoluna girildiğinde bu, hizmet hesabı anahtarı JSON dosyanızın tüm içeriğidir. Yönetim API'si kullanılarak gönderildiğinde, hizmet hesabı anahtarı JSON dosyasının tamamından oluşturulan base64 kodlu bir değerdir. | Yok | Evet |