OAuthV2 politikası

Apigee Edge belgelerini görüntülüyorsunuz.
. Git: Apigee X belgeleri.
bilgi

Ne?

OAuthV2, OAuth 2.0 izin türüyle ilgili işlemler gerçekleştirmek için çok yönlü bir politikadır. Bu, Apigee Edge'de OAuth 2.0 uç noktalarını yapılandırmak için kullanılan birincil politikadır.

İpucu: Apigee Edge'de OAuth hakkında daha fazla bilgi edinmek için şu sayfaya göz atın: OAuth ana sayfası. Bağlantı sağlar kaynaklar, örnekler, videolar ve daha fazlası. Ayrıntılı bilgi için gelişmiş Bu politikanın çalışan bir ortamda nasıl kullanıldığını iyi bir şekilde görmek için GitHub'da OAuth örneği bir uygulamadır.

Örnekler

VerifyAccessToken

VerifyAccessToken

Bu OAuthV2 politika yapılandırması (VerifyAccessToken işlemiyle) Apigee Edge'e gönderilen erişim jetonu geçerli. Bu politika işlemi tetiklendiğinde Edge istekte geçerli bir erişim jetonu arar. Erişim jetonu geçerliyse istek devam etmesine izin veriliyor. Geçersiz olursa tüm işlemeler durdurulur ve tıklayın.

<OAuthV2 async="false" continueOnError="false" enabled="true" name="OAuth-v20-2">
    <DisplayName>OAuth v2.0 2</DisplayName>
    <Operation>VerifyAccessToken</Operation>
    <AccessTokenPrefix>Bearer</AccessTokenPrefix> <!-- Optional, default is Bearer -->
</OAuthV2>

Not: Yalnızca OAuth 2.0 Taşıyıcı Jetonları desteklenir. İleti Kimlik Doğrulaması Kod (MAC) jetonları desteklenmez.

Örneğin:

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

Edge, Authorization üstbilgisinde varsayılan olarak aşağıdakilerin yer aldığı erişim jetonlarını kabul eder: Bearer öneki. Bu varsayılan ayarı <AccessToken> ile değiştirebilirsiniz. öğesine dokunun.

GenerateAccessToken

Erişim jetonları oluşturma

Desteklenen izin türlerinin her biri için erişim jetonlarının nasıl isteneceğini gösteren örneklere bakın. Erişim jetonları isteme ve yetkilendirme kodları hakkında daha fazla bilgi edinin. Konuda şu işlemlerin örnekleri bulunmaktadır:

GenerateAuthorizationCode

Yetkilendirme kodu oluştur

Yetkilendirme kodlarının nasıl isteneceğini gösteren örnekler için bkz. yetkilendirme kodu'na gidin.

RefreshAccessToken

Erişim jetonunu yenileme

Yenileme jetonu kullanarak erişim jetonlarının nasıl isteneceğini gösteren örnekler için erişim jetonu ile kullanılabilir.

Yanıt akışı jetonu

Yanıt akışında erişim jetonu oluşturma

Bazen yanıt akışında bir erişim jetonu oluşturmanız gerekebilir. Örneğin, bunu arka uç hizmetinde yapılan bazı özel doğrulamalara yanıt olarak yapabilir. Bu örnekte kullanım alanı için hem erişim jetonu hem yenileme jetonu gerekir ve örtülü izin türü. Bu durumda, jetonu oluşturmak için şifre verme türünü kullanırız. Gördüğünüz gibi, bunu yapmanın püf noktası, JavaScript ile bir Yetkilendirme isteği başlığı politikası.

İlk olarak, örnek politikaya göz atalım:

<OAuthV2 enabled="true" continueOnError="false" async="false" name="generateAccessToken">
    <Operation>GenerateAccessToken</Operation>
    <AppEndUser>Doe</AppEndUser>
    <UserName>jdoe</UserName>
    <PassWord>jdoe</PassWord>
    <GrantType>grant_type</GrantType>
    <ClientId>a_valid_client_id</ClientId>
    <SupportedGrantTypes>
        <GrantType>password</GrantType>
    </SupportedGrantTypes>
</OAuthV2>

Bu politikayı yanıt akışına uygularsanız uygulama, 401 Yetkilendirilmemiş hatası ile başarısız olur. politikada doğru giriş parametreleri belirtilmiş olsa bile. Bu sorunu çözmek için Yetkilendirme isteği başlığı ayarlamanız gerekir.

Yetkilendirme başlığı, Base64 kodlu bir Temel erişim şeması içermelidir. client_id:client_secret.

Bu üstbilgiyi, OAuthV2 politikasından hemen önceye yerleştirilmiş bir JavaScript politikasıyla ekleyebilirsiniz. İşte bu şekilde. "local_clientid" ve "local_secret" önceden ayarlanmış ve görebilirsiniz:

var client_id = context.getVariable("local_clientid");
var client_secret = context.getVariable("local_secret");
context.setVariable("request.header.Authorization","Basic "+CryptoJS.enc.Base64.stringify(CryptoJS.enc.Latin1
                                      .parse(client_id + ':' + client_secret)));

Ayrıca bkz. "Kodlama temel bilgileri kimlik doğrulama bilgileri ekleyin".

Öğe referansı

Politika referansında OAuthV2 politikasının öğeleri ve özellikleri açıklanır.

Aşağıda gösterilen örnek politika, olası birçok yapılandırmadan biridir. Bu örnekte bir GenerateAccessToken işlemi için yapılandırılmış OAuthV2 politikası. Projenin gidişatı boyunca isteğe bağlı öğeler. Ayrıntılar için bu bölümdeki öğe açıklamalarına bakın.

<OAuthV2 name="GenerateAccessToken">
  <!-- 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>
    <GrantType>client_credentials</GrantType>
  </SupportedGrantTypes>
  <GrantType>request.queryparam.grant_type</GrantType>
  <GenerateResponse/>
</OAuthV2>

<OAuthV2> özellikler

<OAuthV2 async="false" continueOnError="false" enabled="true" name="MyOAuthPolicy">

Aşağıdaki tabloda tüm politika üst öğelerinde ortak olan özellikler açıklanmaktadır:

Özellik Açıklama Varsayılan Varlık
name

Politikanın dahili adı. name özelliğinin değeri Harf, sayı, boşluk, kısa çizgi, alt çizgi ve nokta içermelidir. Bu değer, 255 karakteri aşmalıdır.

İsteğe bağlı olarak, politikayı<DisplayName> yönetim arayüzü proxy düzenleyicisinde farklı bir doğal dil adı kullanabilir.

Yok Zorunlu
continueOnError

Bir politika başarısız olduğunda hata döndürmesi için false olarak ayarlayın. Bu beklenen bir durumdur çoğu politika için geçerli olur.

Akış yürütmenin bir politikadan sonra bile devam etmesi için true olarak ayarlayın başarısız olur.

false İsteğe bağlı
enabled

Politikayı uygulamak için true olarak ayarlayın.

Politikayı devre dışı bırakmak için false değerine ayarlayın. Bu politika, bir akışa bağlı kalsa bile uygulanır.

true İsteğe bağlı
async

Bu özelliğin desteği sonlandırıldı.

false Kullanımdan kaldırıldı

&lt;DisplayName&gt; öğe

Politikayı name özelliğine ek olarak farklı bir doğal dil adına sahip yönetim arayüzü proxy düzenleyicisi.

<DisplayName>Policy Display Name</DisplayName>
Varsayılan

Yok

Bu öğeyi çıkarırsanız politikanın name özelliğinin değeri: kullanılır.

Varlık İsteğe bağlı
Tür Dize

&lt;AccessToken&gt; öğe

<AccessToken>request.header.access_token</AccessToken>

Varsayılan olarak, VerifyAccessToken, erişim jetonunun Authorization içinde gönderilmesini bekler. kullanabilirsiniz. Bu varsayılan öğeyi kullanarak değiştirebilirsiniz. Örneğin, request.queryparam.access_token örneği, erişim jetonunun access_token adlı bir sorgu parametresi olarak bulunmalıdır.

<AccessToken>request.header.access_token</AccessToken> örneği belirtilen:

curl https://myorg-myenv.apigee.net/oauth2/validate -H "access_token:Rft3dqrs56Blirls56a"
. <AccessToken>request.queryparam.access_token</AccessToken> örneği belirtilen:

curl "https://myorg-myenv.apigee.net/oauth2/validate?access_token:Rft3dqrs56Blirls56a"

Varsayılan:

Yok

Bulunma:

İsteğe bağlı

Tür: Dize
İşlemlerle kullanılır:
  • VerifyAccessToken

&lt;AccessTokenPrefix&gt; öğe

<AccessTokenPrefix>Bearer</AccessTokenPrefix>

Varsayılan olarak VerifyAccessToken, erişim jetonunun bir Yetkilendirme başlığında gönderilmesini bekler. hamleli jeton olarak kabul edilir. Örneğin:

-H "Authorization: Bearer Rft3dqrs56Blirls56a"

Şu anda desteklenen tek ön ek Taşıyıcıdır.

Varsayılan:

Taşıyıcı

Bulunma:

İsteğe bağlı

Tür: Dize
Geçerli değerler:

Taşıyıcı

İşlemlerle kullanılır:
  • VerifyAccessToken

&lt;AppEndUser&gt; öğe

<AppEndUser>request.queryparam.app_enduser</AppEndUser>

Uygulama son kullanıcı kimliğinin yetkilendirme sunucusuna gönderilmesinin gerektiği durumlarda bu öğe, Edge'in son kullanıcı kimliğini nerede arayacağını belirtebilirsiniz. Örneğin, parametresini kullanabilirsiniz.

Örneğin request.queryparam.app_enduser, AppEndUser, örnek, ?app_enduser=ntesla@theramin.com. AppEndUser'ı HTTP'de zorunlu kılmak için başlığını kullanabilirsiniz. Örneğin, bu değeri request.header.app_enduser olarak ayarlayabilirsiniz.

Bu ayarın sağlanması, erişim jetonuna bir uygulama son kullanıcı kimliği ekleyebilmenizi sağlar. Bu Bu özellik, son aşamada OAuth 2.0 erişim jetonlarını alabilmek veya iptal edebilmek istiyorsanız kullanışlıdır kullanıcı kimliği. Daha fazla bilgi için bkz. OAuth 2.0 erişim jetonlarının alınmasını ve iptal edilmesini son kullanıcı kimliği, uygulama kimliği veya kullanabilirsiniz.

Varsayılan:

Yok

Bulunma:

İsteğe bağlı

Tür: Dize
Geçerli değerler:

Çalışma zamanında politika tarafından erişilebilen herhangi bir akış değişkeni.

İzin türleriyle kullanılır:
  • authorization_code
  • örtülü
  • şifre
  • client_credentials

&lt;Attributes/Attribute&gt;

<Attributes>
    <Attribute name="attr_name1" ref="flow.variable" display="true|false">value1</Attribute>
    <Attribute name="attr_name2" ref="flow.variable" display="true|false">value2</Attribute>
</Attributes>

Erişim jetonuna veya yetkilendirme koduna özel özellikler eklemek için bu öğeyi kullanın. Örneğin, Örneğin, kullanıcı kimliğini veya oturum tanımlayıcısını çalışma zamanında ayıklanır ve kontrol edilir.

Bu öğe, bir akış değişkeninde veya harflerden oluşan bir dizede değer belirtebilmenizi sağlar. Şu durumda: hem değişken hem de dize belirtirseniz akış değişkeninde belirtilen değer kullanılır. Öğe değişkeni çözümlenemezse dize varsayılan olur.

Bu öğeyi kullanma hakkında daha fazla bilgi için Jetonları ve Jetonları Özelleştirme Yetkilendirme Kodları bölümüne bakın.

Özel özellikleri yanıt

Bu politikanın GenerateResponse öğesini true olarak ayarlarsanız jetonun tam JSON gösterimi, tüm özel etkinlikler de dahil olmak üzere yanıtta döndürülür. özellikler. Bazı durumlarda, özel anahtarlarınızın bir kısmını veya tamamını gizlemek isteyebilirsiniz. özelliklerini istemci uygulamaları tarafından görülemeyecek şekilde ayarlayın.

Varsayılan olarak, özel özellikler yanıtta görünür. Bunları gizlemek isterseniz, display parametresini false olarak ayarlayın. Örneğin:

<Attributes>
    <Attribute name="employee_id" ref="employee.id" display="false"/>
    <Attribute name="employee_name" ref="employee.name" display="false"/>
</Attributes>

display özelliğinin değeri devam ediyordu. Tabloda gizlemek istediğiniz özel özelliklere sahip bir erişim jetonu oluşturduğunuzu varsayalım oluşturulmuş yanıt. display=false ayarlandığında bu hedefe ulaşılır. Ancak yeni bir erişim jetonu daha sonra bir yenileme jetonu kullanılarak oluşturulur. yenileme jetonu yanıtında erişim jetonu gösterilir. Bunun nedeni, Edge'in display özelliği, erişim jetonu oluşturma politikasında başlangıçta false olarak ayarlanmıştı (özel özelliği, erişim jetonunun meta verilerinin bir parçasıdır.

Bir yetkilendirme koduna özel özellikler eklediğinizde de aynı davranışı erişim jetonu bu kod kullanılarak oluşturulduğunda, bu özel özellikler erişim jetonunda gösterilir tıklayın. Beklediğiniz davranış bu olmayabilir.

Özeli gizlemek için özellikleri için şu seçenekleri kullanabilirsiniz:

  • Yenileme jetonu politikasındaki özel özellikleri açık bir şekilde sıfırlayın ve bunların görüntülerini şu şekilde ayarlayın: false (yanlış) değerini alır. Bu durumda, orijinal özel değerleri orijinal erişim jetonu olarak ayarlayın.
  • İncelemediğiniz özel özellikleri manuel olarak ayıklamak için işleme sonrası JavaScript politikası kullanın. yanıtta görmek istediğiniz şeydir.

Ayrıca bkz. Jetonları ve Jetonları Yetkilendirme Kodları bölümüne bakın.

Varsayılan:

N/A

Bulunma:

İsteğe bağlı

Geçerli değerler:
  • name -Özellik adı
  • ref: Özelliğin değeri. Bir akış değişkeninden alınabilir.
  • display - (İsteğe bağlı) Özel özellikleri kullanıp kullanmayacağınızı belirtmenizi sağlar yanıtta görünür. true ise yanıtta özel özellikler görünür (GenerateResponse özelliği de etkinse). false ise özel özellikleri yanıta dahil edilmez. true varsayılan değerdir. yanıt ekleyin.
İzin türleriyle kullanılır:
  • authorization_code
  • örtülü
  • şifre
  • client_credentials
  • yenileme_jetonu
  • GenerateAuthorizationCode işlemiyle de kullanılabilir.

&lt;ClientId&gt; öğe

<ClientId>request.formparam.client_id</ClientId>

Bazı durumlarda istemci uygulamasının, istemci kimliğini yetkilendirme sunucusuna göndermesi gerekir. Bu öğesi, Edge'in istemci kimliğini nerede araması gerektiğini belirtmenizi sağlar. Tek geçerli konum bilgisi varsayılan olarak konumunu ayarlamak için akış değişkeni request.formparam.client_id olarak ayarlayın. ClientId ayarlanıyor değeri desteklenmez. Ayrıca bkz. Erişim jetonları ve yetkilendirme isteme ekleyebilirsiniz.

Varsayılan:

request.formparam.client_id (bir x-www-form-url olarak kodlanır ve istekte belirtilir) gövde)

Bulunma:

İsteğe bağlı

Tür: Dize
Geçerli değerler: Akış değişkeni: request.formparam.client_id
İzin türleriyle kullanılır:
  • authorization_code
  • şifre
  • örtülü
  • client_credentials

GenerateAuthorizationCode işlemiyle de kullanılabilir.

&lt;Code&gt; öğe

<Code>request.queryparam.code</Code>

Yetkilendirme izni türü akışında müşterinin yetkilendirme sunucusuyla (Apigee Edge) birlikte çalışır. Bu öğe, Edge'in yetkilendirme kodu. Örneğin; sorgu parametresi, HTTP üst bilgisi veya form olarak gönderilebilir. parametresi (varsayılan).

request.queryparam.auth_code değişkeni, yetkilendirme kodu, örnek, ?auth_code=AfGlvs9. HTTP'de yetkilendirme kodunu zorunlu kılmak için başlığını kullanabilirsiniz. Örneğin, bu değeri request.header.auth_code olarak ayarlayabilirsiniz. Şu kaynakları da inceleyin Erişim jetonları isteme ve yetkilendirme kodları hakkında daha fazla bilgi edinin.

Varsayılan:

request.formparam.code (x-www-form-url olarak kodlanır ve istek gövdesinde belirtilir)

Bulunma:

isteğe bağlı

Tür: Dize
Geçerli değerler: Çalışma zamanında politika tarafından erişilebilen herhangi bir akış değişkeni
İzin türleriyle kullanılır: authorization_code

&lt;ExpiresIn&gt; öğe

<ExpiresIn>10000</ExpiresIn> 

Erişim jetonlarının ve yetkilendirme kodlarının geçerlilik bitiş zamanını milisaniye cinsinden zorunlu kılar. ( yenileme jetonları, <RefreshTokenExpiresIn> kullanın.) Geçerlilik bitiş zamanı değeri: sistem tarafından oluşturulan değer ve <ExpiresIn> değeri. Eğer <ExpiresIn>, -1 olarak ayarlanırsa jetonun veya kodun süresi Maksimum OAuth erişim jetonunun geçerlilik süresi uyarınca sona erer. <ExpiresIn> belirtilmezse sistem bir sistem düzeyinde yapılandırılan varsayılan değerdir.

Geçerlilik bitiş zamanı ayrıca çalışma zamanında sabit kodlu bir varsayılan değer veya bir akış değişkeni referans alır. Örneğin, jeton son kullanma değerini bir anahtar değerinde saklayabilirsiniz. alması, bir değişkene ataması ve politikada referans vermesi gerekir. Örneğin, kvm.oauth.expires_in

Herkese Açık Bulut İçin Apigee Edge sayesinde Edge, Aşağıdaki varlıklar için, varlıklara erişildikten sonra en az 180 saniye boyunca önbellekte tutulur.

  • OAuth erişim jetonları. Bu, iptal edilen bir jetonun en fazla üç deneme için daha başarılı olabileceği anlamına gelir. dakika içinde sona erecektir.
  • Key Management Service (KMS) varlıkları (Uygulamalar, Geliştiriciler, API Ürünleri).
  • OAuth jetonları ve KMS varlıklarındaki özel özellikler.

Aşağıdaki dize, bir akış değişkenini ve varsayılan değeri de belirtir. Akışın değişken değeri, belirtilen varsayılan değere göre önceliklidir.

<ExpiresIn ref="kvm.oauth.expires_in">
    3600000 <!--default value in milliseconds-->
</ExpiresIn>

Edge, oluşturulduktan sonra jetonun süresinin dolmasını zorunlu kılmayı desteklemez. Jeton geçerlilik süresinin bitmesini zorunlu kılmanız gerekiyorsa (örneğin, bir koşula göre) olası bir çözüm bölümünde açıklanmıştır bu Apigee topluluk gönderisine göz atın.

Süresi dolmuş erişim jetonları varsayılan olarak Apigee'den silinir Edge sistemi, süresi dolduktan 3 gün sonra otomatik olarak. Ayrıca bkz. Erişimi silme jetonlar

Private Cloud: Private Cloud kurulumu için Edge'de varsayılan ayardır değeri, conf_keymanagement_oauth_auth_code_expiry_time_in_millis özelliği tarafından ayarlanır. Bu özelliği ayarlamak için:

  1. message-processor.properties dosyasını bir düzenleyicide açın. Dosya yoksa, oluşturun:
    vi /opt/apigee/customer/application/message-processor.properties
    .
  2. Tesisi istediğiniz gibi ayarlayın:
    conf_keymanagement_oauth_auth_code_expiry_time_in_millis=3600000
    .
  3. Özellikler dosyasının sahibi olarak "Apigee" bulunduğundan emin olun kullanıcı:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    .
  4. Mesaj İşleyici'yi yeniden başlatın.
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

Varsayılan:

Belirtilmezse sistem, sistemde yapılandırılmış bir varsayılan değeri uygular seviyesinde olmalıdır.

Bulunma:

İsteğe bağlı

Tür: Tamsayı
Geçerli değerler:
  • Sıfır olmayan herhangi bir pozitif tam sayı. Geçerlilik bitiş zamanını milisaniye cinsinden belirtin. Her ne kadar bu öğenin değeri milisaniye cinsindendir. Bu değer, jetonun expires_in parametresinde ayarlanır. özelliğindeki ve expires_in akış değişkenindeki değer saniye cinsinden ifade edilir.
  • -1 geçerlilik süresi, maksimum OAuth erişim jetonu son kullanma tarihi uyarınca sona erer.
    .
    . NOT: Başka herhangi bir negatif tam sayı veya sıfırın belirtilmesi dağıtım hatası.

    Antipattern: OAuth jetonları için uzun geçerlilik süresi ayarlama başlıklı makaleye de bakın.

İzin türleriyle kullanılır:
  • authorization_code
  • örtülü
  • şifre
  • client_credentials
  • yenileme_jetonu

GenerateAuthorizationCode işlemiyle de kullanılır.

&lt;ExternalAccessToken&gt; öğe

<ExternalAccessToken>request.queryparam.external_access_token</ExternalAccessToken>

Apigee Edge'e harici erişim jetonunu ( Apigee Edge'de kullanılabilir).

request.queryparam.external_access_token değişkeni harici erişim jetonu, örnek, ?external_access_token=12345678. Harici erişim jetonunu zorunlu kılmak için bir HTTP üstbilgisinde şu değeri ayarlayın: request.header.external_access_token numaralı telefona. Ayrıca bkz. Üçüncü Taraf OAuth Kullanma Jetonlar.

&lt;ExternalAuthorization&gt; öğe

<ExternalAuthorization>true</ExternalAuthorization>

Bu öğe yanlışsa veya mevcut değilse Edge, client_id ve client_secret bilgilerini doğrular. normalde Apigee Edge yetkilendirme deposuna kıyasla çalışır. Üzerinde çalışmak için bu öğeyi üçüncü taraf OAuth jetonları. Bu öğenin kullanımıyla ilgili ayrıntılar için Üçüncü Taraf OAuth Kullanma Jetonlar.

Varsayılan:

false

Bulunma:

İsteğe bağlı

Tür: Boole
Geçerli değerler: doğru veya yanlış
İzin türleriyle kullanılır:
  • authorization_code
  • şifre
  • client_credentials

&lt;ExternalAuthorizationCode&gt; öğe

<ExternalAuthorizationCode>request.queryparam.external_auth_code</ExternalAuthorizationCode>

Apigee Edge'e harici yetkilendirme kodunu nerede bulacağını söyler (yetkilendirme kodu Apigee Edge'de kullanılabilir).

request.queryparam.external_auth_code değişkeni harici yetkilendirme kodu, örnek, ?external_auth_code=12345678. Harici kimlik doğrulamayı zorunlu kılmak için kod bir HTTP üstbilgisinde şu değeri ayarlayın: request.header.external_auth_code numaralı telefona. Ayrıca bkz. Üçüncü Taraf OAuth Kullanma Jetonlar.

&lt;ExternalRefreshToken&gt; öğe

<ExternalRefreshToken>request.queryparam.external_refresh_token</ExternalRefreshToken>

Apigee Edge'e harici bir yenileme jetonunu ( Apigee Edge'de kullanılabilir).

request.queryparam.external_refresh_token değişkeni Harici yenileme jetonu, örnek, ?external_refresh_token=12345678. Harici yenileme jetonunu zorunlu kılmak için bir HTTP üstbilgisinde şu değeri ayarlayın: request.header.external_refresh_token numaralı telefona. Ayrıca bkz. Üçüncü Taraf OAuth Kullanma Jetonlar.

&lt;GenerateResponse&gt; öğe

<GenerateResponse enabled='true'/>

true değerine ayarlanırsa politika bir yanıt oluşturur ve döndürür. Örneğin, GenerateAccessToken'ı seçerseniz yanıt aşağıdaki gibi olabilir:

{
  "issued_at" : "1467841035013",
  "scope" : "read",
  "application_name" : "e31b8d06-d538-4f6b-9fe3-8796c11dc930",
  "refresh_token_issued_at" : "1467841035013",
  "status" : "approved",
  "refresh_token_status" : "approved",
  "api_product_list" : "[Product1, nhl_product]",
  "expires_in" : "1799",
  "developer.email" : "edward@slalom.org",
  "token_type" : "BearerToken",
  "refresh_token" : "rVSmm3QaNa0xBVFbUISz1NZI15akvgLJ",
  "client_id" : "Adfsdvoc7KX5Gezz9le745UEql5dDmj",
  "access_token" : "AnoHsh2oZ6EFWF4h0KrA0gC5og3a",
  "organization_name" : "cerruti",
  "refresh_token_expires_in" : "0",
  "refresh_count" : "0"
}

false ise yanıt gönderilmez. Bunun yerine, bir dizi akış değişkeni değerleri, politikanın işleviyle ilgili değerler içermelidir. Örneğin, oauthv2authcode.OAuthV2-GenerateAuthorizationCode.code, yeni basılmış yetkilendirme kodu. expires_in değerinin tıklayın.

Varsayılan:

false

Bulunma:

İsteğe bağlı

Tür: dize
Geçerli değerler: doğru veya yanlış
İzin türleriyle kullanılır:
  • örtülü
  • şifre
  • client_credentials
  • yenileme_jetonu
  • GenerateAuthorizationCode işlemiyle de kullanılabilir.

&lt;GenerateErrorResponse&gt; öğe

<GenerateErrorResponse enabled='true'/>

true değerine ayarlanırsa politika ContinueOnError özelliği true olarak ayarlandı. false (varsayılan) ise hayır gönderilir. Bunun yerine bir dizi akış değişkeni, politikanın işlevini yerine getirecektir.

Varsayılan:

false

Bulunma:

İsteğe bağlı

Tür: dize
Geçerli değerler: doğru veya yanlış
İzin türleriyle kullanılır:
  • örtülü
  • şifre
  • client_credentials
  • yenileme_jetonu
  • GenerateAuthorizationCode işlemiyle de kullanılabilir.

&lt;GrantType&gt;

<GrantType>request.queryparam.grant_type</GrantType>

Politikaya, bir istekte geçirilen izin türü parametresini nerede bulacağını bildirir. OAuth 2.0 spesifikasyonu, izin türünün, erişim jetonları ve yetkilendirme kodları. Değişken bir başlık, sorgu parametresi veya form parametresi olabilir (varsayılan).

Örneğin request.queryparam.grant_type, Şifrenin bir sorgu parametresi olarak (örneğin, ?grant_type=password) bulunmalıdır. Örneğin bir HTTP başlığında izin türünü zorunlu kılmak için şu değeri ayarlayın: request.header.grant_type numaralı telefona. Ayrıca bkz. Erişim jetonları ve yetkilendirme isteme ekleyebilirsiniz.

Varsayılan:

request.formparam.grant_type (istekte belirtilen ve x-www-form-url olarak kodlanan bir) gövde)

Bulunma:

İsteğe bağlı

Tür: dize
Geçerli değerler: Yukarıda açıklandığı gibi bir değişken.
İzin türleriyle kullanılır:
  • authorization_code
  • şifre
  • örtülü
  • client_credentials
  • yenileme_jetonu

&lt;Operation&gt; öğe

<Operation>GenerateAuthorizationCode</Operation>

Politika tarafından yürütülen OAuth 2.0 işlemi.

Varsayılan:

<Operation> belirtilmezse Edge, <SupportedGrantTypes>. Yalnızca bu izin türlerindeki işlemler işidir. Diğer bir deyişle, bir<Operation> <SupportedGrantTypes> listesinde <GrantType> var. Eğer ne <Operation> ne de <SupportedGrantTypes> belirtildiğinde, varsayılan izin türü yetkilendirme_kodu'dur. Yani, yetkilendirme_kodu izin türü istekleri başarılı olur, ancak diğer tüm istekler başarısız olur.

Bulunma:

İsteğe bağlı

Tür: Dize
Geçerli değerler:

&lt;PassWord&gt; öğe

<PassWord>request.queryparam.password</PassWord>

Bu öğe yalnızca şifre izni türüyle kullanılır. Entegre şifre verme türünün, kullanıcı kimlik bilgilerinin (şifre ve kullanıcı adı) OAuthV2 politikası. <PassWord> ve <UserName> öğeleri Edge'in bu değerleri bulabileceği değişkenleri belirtmek için kullanılır. Bu öğeler belirtilmezse politika, değerleri (varsayılan olarak) username adlı form parametrelerinde bulmayı bekler ve password. Değerler bulunamazsa politika bir hata verir. Tekliflerinizi otomatikleştirmek ve optimize etmek için herhangi birine başvuruda bulunmak için <PassWord> ve <UserName> öğeleri akış değişkeni ekleyin.

Örneğin, sorgu parametresi kullanarak parolayı jeton isteğinde aktarabilir ve öğesini seçin: <PassWord>request.queryparam.password</PassWord>. Bitiş HTTP üstbilgisinde şifre kullanılmasını gerektiriyor, bu değeri ayarla alıcı: request.header.password.

OAuthV2 politikası, bu kimlik bilgisi değerleriyle başka bir işlem yapmaz. Edge, mevcut olduklarından emin olun. Değerler isteğini almak ve bunları jeton oluşturma politikası yürürlüğe girmeden önce bir kimlik sağlayıcıya gönderebilirsiniz.

Ayrıca bkz. Erişim jetonları isteme ve yetkilendirme kodları hakkında daha fazla bilgi edinin.

Varsayılan:

request.formparam.password (x-www-form-url olarak kodlanmış ve istekte belirtilen bir şifre) gövde)

Bulunma:

İsteğe bağlı

Tür: Dize
Geçerli değerler: Çalışma zamanında politika için kullanılabilecek tüm akış değişkenleri.
İzin türleriyle kullanılır: şifre

&lt;RedirectUri&gt; öğe

<RedirectUri>request.queryparam.redirect_uri</RedirectUri>

Edge'inredirect_uri isteğinde bulunabilirsiniz.

Yönlendirme URI'leri hakkında

Yönlendirme URI'leri yetkilendirme kodu ve örtülü izin türleriyle kullanılır. Yönlendirme URI, yetkilendirme sunucusuna (Edge) yetkilendirme kodunun nereye gönderileceğini (yetkilendirme kodu için) bildirir izin türü) veya erişim jetonu (örtülü izin türü için) olabilir. Bu durumun ne zaman parametresi gerekli, ne zaman isteğe bağlı olduğu ve nasıl kullanıldığı:

  • (gerekli) isteğin istemci anahtarları ve istekte redirect_uri varsa bu iki değerin tam olarak eşleşmesi gerekir. Eşleşmiyorlarsa bir hata döndürülür. Daha fazla bilgi için Edge'de geliştirici uygulamalarını kaydettirme ve bir Geri Çağırma URL'si belirtme hakkında bilgi için Uygulamaları kaydetme ve API'yi yönetme tuşlar.

  • (isteğe bağlı) Geri çağırma URL'si kayıtlıysa ve redirect_uri eksikse Edge, kayıtlı Geri Arama URL'sine yönlendirir.
  • (zorunlu) Geri Arama URL'si kayıtlı değilse redirect_uri gereklidir. Bu durumda Edge'in TÜM URL'leri kabul edeceğini unutmayın. Bu vaka, bir Bu nedenle yalnızca güvenilir istemcilerle kullanılmalıdır uygulamalar. İstemci uygulamalarına güvenilmiyorsa en iyi uygulama her zaman kaydına geri arama URL'si ekleyebilirsiniz.

Bu parametreyi bir sorgu parametresinde veya başlıkta gönderebilirsiniz. İlgili içeriği oluşturmak için kullanılan request.queryparam.redirect_uri değişkeni, RedirectUri gibi bir sorgu parametresi olarak mevcut olmalıdır; örnek, ?redirect_uri=login.myapp.com. HTTP'de RedirectUri'yi zorunlu kılmak için başlığını kullanabilirsiniz. Örneğin, bu değeri request.header.redirect_uri olarak ayarlayabilirsiniz. Görüntüleyin Erişim jetonları isteme ve yetkilendirme kodları hakkında daha fazla bilgi edinin.

Varsayılan:

request.formparam.redirect_uri (x-www-form-url olarak kodlanmıştır ve istekte belirtilir gövde)

Bulunma:

İsteğe bağlı

Tür: Dize
Geçerli değerler: Çalışma zamanında politikada erişilebilir olan herhangi bir akış değişkeni
İzin türleriyle kullanılır:
  • authorization_code
  • örtülü

GenerateAuthorizationCode işlemiyle de kullanılır.

&lt;RefreshToken&gt; öğe

<RefreshToken>request.queryparam.refreshtoken</RefreshToken>

Yenileme jetonu kullanarak erişim jetonu isterken yenileme jetonunu şurada sağlamanız gerekir: talep ediyor. Bu öğe, Edge'in yenileme jetonunu nerede arayacağını belirtmenizi sağlar. Örneğin, Örneğin, sorgu parametresi, HTTP başlığı veya form parametresi (varsayılan) olarak gönderilebilir.

request.queryparam.refreshtoken değişkeni, yenileme işleminin jeton aşağıdaki gibi bir sorgu parametresi olarak bulunmalıdır: örnek, ?refresh_token=login.myapp.com. HTTP'de RefreshToken'ı zorunlu kılmak için başlığını kullanabilirsiniz. Örneğin, bu değeri request.header.refresh_token olarak ayarlayabilirsiniz. Görüntüleyin Erişim jetonları isteme ve yetkilendirme kodları hakkında daha fazla bilgi edinin.

Varsayılan:

request.formparam.refresh_token (istekte belirtilen ve x-www-form-url olarak kodlanan bir) gövde)

Bulunma:

İsteğe bağlı

Tür: Dize
Geçerli değerler: Çalışma zamanında politikada erişilebilir olan herhangi bir akış değişkeni
İzin türleriyle kullanılır:
  • yenileme_jetonu

&lt;RefreshTokenExpiresIn&gt; öğe

<RefreshTokenExpiresIn>1000</RefreshTokenExpiresIn>

Yenileme jetonlarının geçerlilik bitiş zamanını milisaniye cinsinden zorunlu kılar. Geçerlilik bitiş zamanı değeri bir sistemdir oluşturulan değer artı <RefreshTokenExpiresIn> değeri. Eğer <RefreshTokenExpiresIn>, yenileme jetonu -1 olarak ayarlandı maksimum OAuth yenileme jetonunun geçerlilik süresi uyarınca süresi dolacaktır. <RefreshTokenExpiresIn> belirtilmezse sistem, sistem düzeyinde yapılandırılmış varsayılan bir değeri uygular. Daha fazla bilgi için Apigee Edge Destek Ekibi ile iletişime geçin varsayılan sistem ayarlarıyla ilgili bilgi edinin.

Geçerlilik bitiş zamanı ayrıca çalışma zamanında sabit kodlu bir varsayılan değer veya bir akış değişkeni referans alır. Örneğin, jeton son kullanma değerini bir anahtar değerinde saklayabilirsiniz. alması, bir değişkene ataması ve politikada referans vermesi gerekir. Örneğin, örnek, kvm.oauth.expires_in.

Aşağıdaki dize, bir akış değişkenini ve varsayılan değeri de belirtir. Akışın değişken değeri, belirtilen varsayılan değere göre önceliklidir.

<RefreshTokenExpiresIn ref="kvm.oauth.expires_in">
    3600000 <!--default value in milliseconds-->
</RefreshTokenExpiresIn>

Private Cloud: Private Cloud kurulumu için Edge'de varsayılan ayardır değeri, conf_keymanagement_oauth_refresh_token_expiry_time_in_millis özelliği tarafından ayarlanır. Bu özelliği ayarlamak için:

  1. message-processor.properties dosyasını bir düzenleyicide açın. Dosya yoksa, oluşturun:
    vi /opt/apigee/customer/application/message-processor.properties
    .
  2. Tesisi istediğiniz gibi ayarlayın:
    conf_keymanagement_oauth_refresh_token_expiry_time_in_millis=3600000
    .
  3. Özellikler dosyasının sahibi olarak "Apigee" bulunduğundan emin olun kullanıcı:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    .
  4. Mesaj İşleyici'yi yeniden başlatın.
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

Varsayılan:

63072000000 ms (2 yıl) (5 Ağustos 2024'ten itibaren geçerlidir)

Bulunma:

İsteğe bağlı

Tür: Tamsayı
Geçerli değerler:
İzin türleriyle kullanılır:
  • authorization_code
  • şifre
  • yenileme_jetonu

&lt;ResponseType&gt; öğe

<ResponseType>request.queryparam.response_type</ResponseType>

Bu öğe, Edge'e istemci uygulamasının istediği izin türünü bildirir. Yalnızca örtülü izin türü akışlarına göre belirlenir.

Edge, varsayılan olarak response_type sorgusunda yanıt türü değerini arar parametresinden sonra bir değer girin. Bu varsayılan davranışı geçersiz kılmak istiyorsanız <ResponseType> öğesini yanıt türü değerini içeren bir akış değişkeni yapılandırın. Örneğin, öğesi request.header.response_type öğesine ayarlanırsa Edge, iletilmiş olması gerekir. Ayrıca bkz. Erişim jetonları ve yetkilendirme isteme ekleyebilirsiniz.

Varsayılan:

request.formparam.response_type (bir x-www-form-url olarak kodlanmış ve istekte belirtilmiştir) gövde)

Bulunma:

İsteğe bağlı. Varsayılan davranışı geçersiz kılmak istiyorsanız bu öğeyi kullanın.

Tür: Dize
Geçerli değerler: code (yetkilendirme kodu izin türü için) veya token (örtülü izin türü için)
İzin türleriyle kullanılır:
  • örtülü
  • GenerateAuthorizationCode işlemiyle de kullanılır.

&lt;ReuseRefreshToken&gt; öğe

<ReuseRefreshToken>true</ReuseRefreshToken>

true olarak ayarlandığında mevcut yenileme jetonu, süresi dolana kadar yeniden kullanılır. Eğer false, geçerli bir yenileme jetonu olduğunda Apigee Edge tarafından yeni bir yenileme jetonu verilir anlatacağım.

Varsayılan:

false

Bulunma:

isteğe bağlı

Tür: boolean
Geçerli değerler:

true veya false

İzin türüyle kullanılır:
  • yenileme_jetonu

&lt;Scope&gt; öğe

<Scope>request.queryparam.scope</Scope>

Bu öğe, GenerateAccessToken veya GenerateAuthorizationCode politikaları, jeton veya koda hangi kapsamların verileceğini belirtmek için kullanılır. Bu değerler, genellikle bir istemci uygulamasından istekte politikaya iletilir. Öğeyi şu şekilde yapılandırabilirsiniz: bir akış değişkeni alır. Bu değişken, bir istekte kapsamların nasıl geçirileceğini seçmenize olanak tanır. İçinde aşağıdaki örnekte request.queryparam.scope, kapsamın bir sorgu parametresi olarak mevcut olmalıdır (örneğin, ?scope=READ). kapsam, örneğin, bir HTTP üst bilgisinde şu değeri ayarlayın: request.header.scope numaralı telefona.

Bu öğe "VerifyAccessToken" içinde görünüyorsa politika, daha sonra hangi kullanıcıların kapsam dışıdır. Bu politika türünde, değer "sabit kodlu" olmalıdır kapsam değişken kullanamazsınız. Örneğin:

<Scope>A B</Scope>

Ayrıca bkz. OAuth2 ile çalışma kapsamlar ve Erişim jetonları isteme ve yetkilendirme kodları hakkında daha fazla bilgi edinin.

Varsayılan:

Kapsam yok

Bulunma:

İsteğe bağlı

Tür: Dize
Geçerli değerler:

Oluşturma* politikalarıyla birlikte kullanılıyorsa bir akış değişkeni.

VerifyAccessToken ile kullanılıyorsa kapsam adlarının (dizelerin) boşlukla ayrılmış listesi.

İzin türleriyle kullanılır:
  • authorization_code
  • örtülü
  • şifre
  • client_credentials
  • GenerateAuthorizationCode ve VerifyAccessToken ile de kullanılabilir. anlamına gelir.

&lt;State&gt; öğe

<State>request.queryparam.state</State>

İstemci uygulamasının yetkilendirme sunucusuna durum bilgilerini göndermesi gerektiğinde bu öğe, Edge'in durum değerlerini nerede araması gerektiğini belirtmenizi sağlar. Örneğin, sorgu parametresi olarak veya HTTP üstbilgisi içinde gönderilmelidir. Eyalet değeri genellikle CSRF saldırılarını önlemeye yönelik güvenlik önlemleri

Örneğin request.queryparam.state, eyaletin bir sorgu parametresi olarak sunulur (örneğin, ?state=HjoiuKJH32). Gereklilik: durumu öğrenmek için bir HTTP üst bilgisinde aşağıdaki değeri request.header.state numaralı telefona. Ayrıca bkz. Erişim jetonları ve yetkilendirme isteme ekleyebilirsiniz.

Varsayılan:

Durum yok

Bulunma:

İsteğe bağlı

Tür: Dize
Geçerli değerler: Çalışma zamanında politika tarafından erişilebilen herhangi bir akış değişkeni
İzin türleriyle kullanılır:
  • Tümü
  • GenerateAuthorizationCode işlemiyle de kullanılabilir

&lt;StoreToken&gt; öğe

 <StoreToken>true</StoreToken> 

<ExternalAuthorization> aşağıdaki durumlarda bu öğeyi true olarak ayarlayın: öğesi true. <StoreToken> öğesi, Apigee Edge'e şunu söyler: saklamayı unutmayın. Aksi takdirde kalıcı hale getirilmez.

Varsayılan:

false

Bulunma:

İsteğe bağlı

Tür: Boole
Geçerli değerler: doğru veya yanlış
İzin türleriyle kullanılır:
  • authorization_code
  • şifre
  • client_credentials

&lt;SupportedGrantTypes&gt;/&lt;GrantType&gt; öğe

<SupportedGrantTypes>
    <GrantType>authorization_code</GrantType>
    <GrantType>client_credentials</GrantType>
    <GrantType>implicit</GrantType>
    <GrantType>password</GrantType>
</SupportedGrantTypes>

Apigee Edge'de OAuth jetonu uç noktası tarafından desteklenen izin türlerini belirtir. Bir uç nokta, birden fazla izin türünü desteklemelidir (yani, erişimi dağıtmak için tek bir uç nokta yapılandırılabilir) birden fazla izin türüne ilişkin jetonlar arasında yer alır.) Uç noktalar hakkında daha fazla bilgi için OAuth'u anlama uç noktaları. İzin türü, grant_type içindeki jeton isteklerinde iletilir parametresinden sonra bir değer girin.

Desteklenen izin türü belirtilmediyse yalnızca izin verilen izin türleri şunlardır: authorization_code ve implicit. Ayrıca &lt;GrantType&gt; öğesine de bakın (bu öğe, Apigee Edge'ingrant_type müşteri isteğidir. Edge, grant_type parametresinin değerinin desteklenen izin türlerinden biriyle eşleşir).

Varsayılan:

yetkilendirme_kodu ve örtülü

Bulunma:

Zorunlu

Tür: Dize
Geçerli değerler:
  • client_credentials
  • authorization_code
  • şifre
  • örtülü

&lt;Tokens&gt;/&lt;Token&gt; öğe

ValidateToken ve InValidateToken işlemleriyle birlikte kullanılır. Ayrıca bkz. Onaylama ve erişim jetonlarını iptal etme başlıklı makaleye bakın. <Token> öğesi, feed'inizi oluşturan akış değişkenini iptal edilecek jetonun kaynağını gösterir. Geliştiricilerin erişim jetonlarını Örneğin, access_token adlı sorgu parametrelerini request.queryparam.access_token kullanın.

&lt;UserName&gt; öğe

<UserName>request.queryparam.user_name</UserName>

Bu öğe yalnızca şifre izni türüyle kullanılır. Entegre şifre verme türünün, kullanıcı kimlik bilgilerinin (şifre ve kullanıcı adı) OAuthV2 politikası. <PassWord> ve <UserName> öğeleri Edge'in bu değerleri bulabileceği değişkenleri belirtmek için kullanılır. Bu öğeler belirtilmezse politika, değerleri (varsayılan olarak) username adlı form parametrelerinde bulmayı bekler ve password. Değerler bulunamazsa politika bir hata verir. Tekliflerinizi otomatikleştirmek ve optimize etmek için herhangi birine başvuruda bulunmak için <PassWord> ve <UserName> öğeleri akış değişkeni ekleyin.

Örneğin, kullanıcı adını bir sorgu parametresinde iletebilir ve Şuna benzer <UserName> öğesi: <UserName>request.queryparam.username</UserName>.Zorunluluk kullanıcı adını almak için bu değeri ayarlayın Hedef: request.header.username.

OAuthV2 politikası, bu kimlik bilgisi değerleriyle başka bir işlem yapmaz. Edge, mevcut olduklarından emin olun. Değerler isteğini almak ve bunları jeton oluşturma politikası yürürlüğe girmeden önce bir kimlik sağlayıcıya gönderebilirsiniz.

Ayrıca bkz. Erişim jetonları isteme ve yetkilendirme kodları hakkında daha fazla bilgi edinin.

Varsayılan:

request.formparam.username (x-www-form-url olarak kodlanmıştır ve istekte belirtilir gövde)

Bulunma:

İsteğe bağlı

Tür: Dize
Geçerli değerler: Herhangi bir değişken ayarı.
İzin türleriyle kullanılır: şifre

Erişimi doğrulama jetonlar

API proxy'si için jeton uç noktası ayarlandıktan sonra akışa eklendiği VerifyAccessToken işlemini belirtir güvenli bir kaynaktır.

Örneğin, bir API'ye yapılan tüm isteklerin yetkilendirilmesini sağlamak için aşağıdaki politika erişim jetonu doğrulamasını zorunlu kılar:

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

Politika, korunacak API kaynağına eklenir. Bir API doğrulandı. Politikayı aşağıdaki gibi ProxyEndpoint isteği PreFlow'a ekleyin:

<PreFlow>
  <Request>
    <Step><Name>VerifyOAuthAccessToken</Name></Step>
  </Request>
</PreFlow>

Aşağıdaki isteğe bağlı öğeler, VerifyAccessToken işlemi.

Ad Açıklama
Kapsam

Boşlukla sınırlandırılmış kapsam listesi. Aşağıdakilerden en az biri listelenen kapsamlar erişim jetonunda mevcuttur. Örneğin, aşağıdaki politika listelenen kapsamlardan en az birini içerdiğinden emin olmak için erişim jetonunu kontrol edin. Eğer READ veya WRITE mevcutsa doğrulama yardımcı olur.

<OAuthV2 name="ValidateOauthScopePolicy">
  <Operation>VerifyAccessToken</Operation>
  <Scope>READ WRITE</Scope>
</OAuthV2>
AccessToken Erişim jetonunun bulunması beklenen değişken. Örneğin: request.queryparam.accesstoken Erişim jetonunun varsayılan olarak Uygulama tarafından OAuth 2.0 spesifikasyonuna göre Yetkilendirme HTTP başlığında sunulur. Bunu kullan Bu ayar, erişim jetonunun standart olmayan bir konumda sunulması bekleniyorsa: bir sorgu parametresi veya Yetkilendirme dışında bir ada sahip HTTP üstbilgisi kullanmamalıdır.

Ayrıca bkz. Erişimi doğrulama jetonlar ve Erişim jetonları isteme ve yetkilendirme kodları hakkında daha fazla bilgi edinin.

İstek değişkeni konumlarını belirtme

Politika, her izin türü için konum veya gerekli bilgiler hakkında varsayımlarda bulunur veya istek mesajlarında kullanabilirsiniz. Bu varsayımlar, OAuth 2.0 spesifikasyonunu temel alır. Uygulamalarınız OAuth 2.0 spesifikasyonundan sapmak zorundaysanız, ileti için beklenen konumları her parametreye dahil edilir. Örneğin, bir yetkilendirme kodunu işlerken, yetkilendirme kodu, Client-ID, yönlendirme URI'si ve kapsam. Bunlar, HTTP üstbilgileri, sorgu parametreleri veya form parametreleri.

Aşağıdaki örnekte, gerekli yetkilendirme kodunun konumunu nasıl belirtebileceğiniz gösterilmektedir parametrelerini HTTP üstbilgileri olarak kullanma:

  ...
  <GrantType>request.header.grant_type</GrantType>
  <Code>request.header.code</Code>
  <ClientId>request.header.client_id</ClientId>
  <RedirectUri>request.header.redirect_uri</RedirectUri>
  <Scope>request.header.scope</Scope>
  ...

Müşteri uygulama tabanınızı desteklemek için gerekirse başlıklarla sorguları karıştırıp eşleştirebilirsiniz. parametre:

  ...
  <GrantType>request.header.grant_type</GrantType>
  <Code>request.header.code</Code>
  <ClientId>request.queryparam.client_id</ClientId>
  <RedirectUri>request.queryparam.redirect_uri</RedirectUri>
  <Scope>request.queryparam.scope</Scope>
  ...

Parametre başına yalnızca bir konum yapılandırılabilir.

Akış değişkenleri

Bu tabloda tanımlanan akış değişkenleri, ilgili OAuth politikaları geçerli olduğunda doldurulur çalıştırılabilir ve bu nedenle API proxy'sinde yürütülen diğer politikalar veya uygulamalar akışı sağlar.

VerifyAccessToken işlemi

VerifyAccessToken işlemi yürütülür, çok sayıda akış değişkeni doldurulur proxy'nin yürütme bağlamını kullanır. Bu değişkenler size erişimle alakalı mülkler sağlar jeton, geliştirici uygulaması, geliştirici ve şirket. Ataması veya JavaScript politikası kullanabilirsiniz. kullanabilirsiniz. Bu değişkenleri de hata ayıklama açısından faydalı olabilir.

Jetona özel değişkenler

Değişkenler Açıklama
organization_name Proxy'nin çalıştığı kuruluşun adı.
developer.id Kayıtlı istemci uygulamasıyla ilişkilendirilen geliştiricinin kimliği.
developer.app.name Kayıtlı istemci uygulamasıyla ilişkilendirilen geliştiricinin adı.
client_id Kayıtlı istemci uygulamasının istemci kimliği.
grant_type İstekle ilişkili izin türü.
token_type İstekle ilişkili jeton türü.
access_token Doğrulanan erişim jetonu.
accesstoken.{custom_attribute} Erişim jetonunda adlandırılmış özel bir özellik.
issued_at Erişim jetonunun yayınlandığı tarih (Unix'te belirtilir) milisaniye cinsinden sıfır zamanı.
expires_in Erişim jetonunun geçerlilik süresi. İfade saniye cinsinden belirtilir. ExpiresIn öğesi, jeton yanıtında geçerlilik süresini milisaniye cinsinden akış değişkenlerini seçerseniz değer saniye cinsinden ifade edilir.
status Erişim jetonunun durumu (ör. onaylandı veya iptal edildi).
scope Erişim jetonuyla ilişkilendirilmiş kapsam (varsa).
apiproduct.<custom_attribute_name> Kayıtlı müşteriyle ilişkilendirilmiş API ürününün adlandırılmış özel özelliği uygulamasını indirin.
apiproduct.name Kayıtlı istemci uygulamasıyla ilişkilendirilen API ürününün adı.
revoke_reason

(Yalnızca Apigee hybrid) Erişim jetonunun neden iptal edildiğini gösterir.

Değer REVOKED_BY_APP, REVOKED_BY_ENDUSER, REVOKED_BY_APP_ENDUSER, veya TOKEN_REVOKED.

Uygulamaya özel değişkenler

Bu değişkenler, jetonla ilişkilendirilmiş Geliştirici Uygulaması ile ilgilidir.

Değişkenler Açıklama
app.name
app.id
app.accessType
app.callbackUrl
app.status onaylanmış veya iptal edilmiş
app.scopes
app.appFamily
app.apiproducts
app.appParentStatus
app.appType Örneğin: Geliştirici
app.appParentId
app.created_by
app.created_at
app.last_modified_at
app.last_modified_by
app.{custom_attributes} Kayıtlı istemci uygulamasının adlandırılmış özel özelliği.

Geliştiriciye özel değişkenler

app.appType "Company" ise şirket özellikleri doldurulur ve app.appType "Geliştirici", ardından geliştirici özellikleri doldurulur.

Değişkenler Açıklama
Geliştiriciye özel değişkenler
developer.id
developer.userName
developer.firstName
developer.lastName
developer.email
developer.status etkin veya etkin değil
developer.apps
developer.created_by
developer.created_at
developer.last_modified_at
developer.last_modified_by
developer.{custom_attributes} Geliştiricinin adlandırılmış özel özelliği.

Şirkete özel değişkenler

app.appType "Company" ise şirket özellikleri doldurulur ve app.appType "Geliştirici", ardından geliştirici özellikleri doldurulur.

Değişkenler Açıklama
company.id
company.displayName
company.apps
company.appOwnerStatus
company.created_by
company.created_at
company.last_modified_at
company.last_modified_by
company.{custom_attributes} Şirketin adlandırılmış özel bir özelliği.

GenerateAuthorizationCode işlem

Bu değişkenler, GenerateAuthorizationCode işlemi yürütüldüğünde ayarlanır (başarıyla):

Önek: oauthv2authcode.{policy_name}.{variable_name}

Örnek: oauthv2authcode.GenerateCodePolicy.code

Değişken Açıklama
code Politika yürütüldüğünde oluşturulan yetkilendirme kodu.
redirect_uri Kayıtlı istemci uygulamasıyla ilişkilendirilen yönlendirme URI'si.
scope İstemci isteğinde iletilen isteğe bağlı OAuth kapsamı.
client_id İstemci isteğinde iletilen istemci kimliği.

GenerateAccessToken ve RefreshAccessToken işlemleri

Bu değişkenler, GenerateAccessToken ve RefreshAccessToken işlemleri yürütüldüğünde ayarlanır. bahsettik. Yenileme jetonu değişkenlerinin, istemci kimlik bilgileri izni için geçerli olmadığını unutmayın görebilirsiniz.

Önek: oauthv2accesstoken.{policy_name}.{variable_name}

Örnek: oauthv2accesstoken.GenerateTokenPolicy.access_token

Değişken adı Açıklama
access_token Oluşturulan erişim jetonu.
client_id Bu jetonla ilişkilendirilmiş geliştirici uygulamasının istemci kimliği.
expires_in Jetonun geçerlilik bitiş değeri. Bkz. &lt;ExpiresIn&gt; öğesine dokunun. Yanıtta, expires_in öğesinin saniye cinsinden belirtilir.
scope Jeton için yapılandırılmış kullanılabilir kapsamların listesi. OAuth2 kapsamlarıyla çalışma başlıklı makaleyi inceleyin.
status approved veya revoked.
token_type BearerToken olarak ayarlandı.
developer.email İlişkilendirilmiş geliştirici uygulamasının sahibi olan kayıtlı geliştiricinin e-posta adresi bunu da belirtelim.
organization_name Proxy'nin yürütüleceği kuruluş.
api_product_list Jetonun ilgili geliştirici uygulamasıyla ilişkilendirilmiş ürünlerin listesi.
refresh_count
refresh_token Oluşturulan yenileme jetonu. Yenileme jetonları şunun için oluşturulmadığını unutmayın: izin türünü belirtmelisiniz.
refresh_token_expires_in Yenileme jetonunun saniye cinsinden kullanım ömrü.
refresh_token_issued_at Bu zaman değeri, karşılık gelen 32 bitlik zaman damgasının dize gösterimidir miktar. Örneğin, "Çar, 21 Ağustos 2013 19:16:47 UTC" zaman damgası değerine karşılık gelir 1377112607413.
refresh_token_status approved veya revoked.

GenerateAccessTokenImplicitGrant

Bu değişkenler, GenerateAccessTokenImplicit işlemi başarıyla yürütüldüğünde ayarlanır. iki seçenek de sunulur.

Önek: oauthv2accesstoken.{policy_name}.{variable_name}

Örnek: oauthv2accesstoken.RefreshTokenPolicy.access_token

Değişken Açıklama
oauthv2accesstoken.access_token Politika yürütüldüğünde oluşturulan erişim jetonu.
oauthv2accesstoken.{policy_name}.expires_in Jeton için süre sonu değeri (saniye cinsinden). Ayrıntılar için &lt;ExpiresIn&gt; öğesine bakın.

Hata referansı

Bu bölümde, bu politika bir hatayı tetiklediğinde döndürülen hata kodları ve hata mesajlarının yanı sıra Edge tarafından ayarlanan hata değişkenleri açıklanmaktadır. Hata kuralları geliştirirken bu bilgilerin farkında olmanız önemlidir. hoşuma gitmesi için bir fırsattır. Daha fazla bilgi için Bilmeniz gerekenler Politika hataları ve Kullanım sorun.

Çalışma zamanı hataları

Bu hatalar, politika yürütüldüğünde ortaya çıkabilir.

Hata kodu HTTP durumu Neden Operasyonlara etkisi
steps.oauth.v2.access_token_expired 401 Erişim jetonunun süresi doldu.

VerifyAccessToken
InvalidateToken

steps.oauth.v2.access_token_not_approved 401 Erişim jetonu iptal edildi. VerifyAccessToken
steps.oauth.v2.apiresource_doesnot_exist 401 İstenen kaynak, erişim jetonu. VerifyAccessToken
steps.oauth.v2.FailedToResolveAccessToken 500 Politikanın, <AccessToken> öğesi, ancak değişken çözümlenemedi. GenerateAccessToken
steps.oauth.v2.FailedToResolveAuthorizationCode 500 Politikanın, <Code> öğesi, ancak değişken çözümlenemedi. GenerateAuthorizationCode
steps.oauth.v2.FailedToResolveClientId 500 Politikanın, <ClientId> öğesi, ancak değişken çözümlenemedi. GenerateAccessToken
GenerateAuthorizationCode
GenerateAccessTokenImplicitGrant
RefreshAccessToken
steps.oauth.v2.FailedToResolveRefreshToken 500 Politikanın, <RefreshToken> öğesi, ancak değişken çözümlenemedi. RefreshAccessToken
steps.oauth.v2.FailedToResolveToken 500 Politikanın, <Tokens> öğesi, ancak değişken çözümlenemedi.

ValidateToken
InvalidateToken

steps.oauth.v2.InsufficientScope 403 İstekte sunulan erişim jetonu, kapsamla eşleşmeyen bir kapsama sahip erişim jetonunu doğrulama politikasında belirtildiğinden emin olun. Kapsam hakkında bilgi edinmek için OAuth2 kapsamlarıyla çalışma başlıklı makaleyi inceleyin. VerifyAccessToken
steps.oauth.v2.invalid_access_token 401 İstemciden gönderilen erişim jetonu geçersiz. VerifyAccessToken
steps.oauth.v2.invalid_client 401

Bu hata adı,<GenerateResponse> politika true olarak ayarlanır ve istekte gönderilen istemci kimliği geçersiz. Aşağıdakiler için doğru istemci anahtarı ve gizli anahtar değerlerini kullandığınızdan emin olun: proxy'nizle ilişkili Geliştirici Uygulaması. Genellikle bu değerler bir Base64 olarak kodlanmış Temel Yetkilendirme başlığı.

Not: Mevcut hata kuralını değiştirmeniz önerilir koşullarını karşılamak için invalid_client ve InvalidClientIdentifier ad. 16.09.21 Sürümüne bakın Notlar başlıklı makaleyi inceleyerek daha fazla bilgi edinebilirsiniz.

GenerateAccessToken
RefreshAccessToken
steps.oauth.v2.invalid_request 400 Bu hata adı, genellikle eksik olan hata türleri için kullanılır. veya istekte gönderilen yanlış parametreler olabilir. <GenerateResponse> ise false olarak ayarlanırsa, hata değişkenlerini (aşağıda açıklanmıştır) kullanarak (ör. hatanın adı ve nedeni) GenerateAccessToken
GenerateAuthorizationCode
GenerateAccessTokenImplicitGrant
RefreshAccessToken
steps.oauth.v2.InvalidAccessToken 401 Yetkilendirme başlığında gerekli olan "Taşıyıcı" kelimesi yok. Örneğin, örnek: Authorization: Bearer your_access_token VerifyAccessToken
steps.oauth.v2.InvalidAPICallAsNo\
steps.oauth.v2.ApiProductMatchFound
401

API proxy'si, erişim jetonuyla ilişkilendirilmiş Üründe yok.

İpuçları: Erişim jetonuyla ilişkilendirilen ürünün yapılandırdığınızdan emin olun. Örneğin, kaynak yollarında joker karakterler kullanıyorsanız joker karakterler doğru şekilde kullanılıyor. Ayrıntılı bilgi için API ürünleri oluşturma başlıklı makaleyi inceleyin.

Ayrıca bkz. Bu hatanın nedenleri hakkında daha fazla bilgi için Apigee Topluluk gönderisi başlıklı makaleyi inceleyin.

VerifyAccessToken
steps.oauth.v2.InvalidClientIdentifier 500

Bu hata adı,<GenerateResponse> politika false (yanlış) olarak ayarlanır ve istekte gönderilen istemci kimliği geçersiz. Proxy'nizle ilişkilendirilmiş Geliştirici Uygulaması. Genellikle bu değerler Base64 olarak gönderilir Kodlanmış Temel Yetkilendirme üstbilgisi.
.
. Not: Böyle bir durumda, bu hata önceden şöyle çağrılıyordu: invalid_client. Mevcut hata kuralını değiştirmeniz önerilir koşullarını karşılamak için invalid_client ve InvalidClientIdentifier ad. 16.09.21 Sürümüne bakın Notlar başlıklı makaleyi inceleyerek daha fazla bilgi edinebilirsiniz.

GenerateAccessToken
RefreshAccessToken

steps.oauth.v2.InvalidParameter 500 Politika bir erişim jetonu veya yetkilendirme kodu belirtmelidir, ancak her ikisini de seçebilirsiniz. GenerateAuthorizationCode
GenerateAccessTokenImplicitGrant
steps.oauth.v2.InvalidTokenType 500 <Tokens>/<Token> öğesi, jetonu belirtmenizi gerektirir türü (örneğin, refreshtoken). İstemci yanlış türü geçerse hatası verilir. ValidateToken
InvalidateToken
steps.oauth.v2.MissingParameter 500 Yanıt türü token, ancak izin türü belirtilmedi. GenerateAuthorizationCode
GenerateAccessTokenImplicitGrant
steps.oauth.v2.UnSupportedGrantType 500

Müşteri, politika tarafından desteklenmeyen bir izin türü belirtti ( &lt;SupportedGrantTypes&gt; öğesi).

Not: Şu anda desteklenmeyen izin türü hatalarının bulunduğu bir hata bulunmaktadır. emin olun. Desteklenmeyen bir izin türü hatası oluşursa proxy Hata Akışı'nı beklendiği gibi girin.

GenerateAccessToken
GenerateAuthorizationCode
GenerateAccessTokenImplicitGrant
RefreshAccessToken

Dağıtım hataları

Bu politikayı içeren bir proxy dağıttığınızda bu hatalar oluşabilir.

Hata adı Neden
InvalidValueForExpiresIn

<ExpiresIn> öğesi için geçerli değerler pozitif tam sayılardır ve -1.

InvalidValueForRefreshTokenExpiresIn <RefreshTokenExpiresIn> öğesi için geçerli değerler pozitiftir tam sayılar ve -1.
InvalidGrantType <SupportedGrantTypes> özelliğinde geçersiz bir izin türü belirtildi öğesine dokunun. Geçerli türlerin listesi için politika referansına bakın.
ExpiresInNotApplicableForOperation <Operations> politikasında belirtilen işlemlerin öğe desteği sona erecektir. Örneğin, VerifyToken işlemi bunu yapmaz.
RefreshTokenExpiresInNotApplicableForOperation <Operations> politikasında belirtilen işlemlerin öğe desteği yenileme jetonun süresinin dolması. Örneğin, VerifyToken işlemi bunu yapmaz.
GrantTypesNotApplicableForOperation <SupportedGrantTypes> bölümünde belirtilen izin türlerinin şunlar için desteklenir: belirtilen işlem.
OperationRequired

<Operation> kullanarak bu politikada bir işlem belirtmelisiniz öğesine dokunun.

Not: <Operation> öğesi eksikse Kullanıcı arayüzü bir şema doğrulama hatası bildiriyor.

InvalidOperation

Bu politikada geçerli bir işlem belirtmek için <Operation> öğesi.

Not: <Operation> öğesi geçersizse Kullanıcı arayüzü bir şema doğrulama hatası bildiriyor.

TokenValueRequired Şu öğede bir jeton <Token> değeri belirtmelisiniz: <Tokens> öğesi.

Hata değişkenleri

Bu değişkenler, politika çalışma zamanında bir hatayı tetiklediğinde ayarlanır.

Değişkenler Konum Örnek
fault.name="fault_name" fault_name, yukarıdaki Çalışma zamanı hataları tablosunda listelendiği gibi hatanın adıdır. Hata adı, hata kodunun son kısmıdır. fault.name = "invalid_request"
oauthV2.policy_name.failed policy_name, hataya neden olan politikanın kullanıcı tarafından belirtilen adıdır. oauthV2.GenerateAccesstoken.failed = true
oauthV2.policy_name.fault.name policy_name, hataya neden olan politikanın kullanıcı tarafından belirtilen adıdır. oauthV2.GenerateAccesstoken.fault.name = invalid_request

Not: VerifyAccessToken işlemi için hata adı şu son eki içerir: keymanagement.service
Örneğin: keymanagement.service.invalid_access_token

oauthV2.policy_name.fault.cause policy_name, hataya neden olan politikanın kullanıcı tarafından belirtilen adıdır. oauthV2.GenerateAccesstoken.cause = Required param : grant_type

Örnek hata yanıtı

<GenerateResponse>, bu yanıtları istemciye geri gönderir. öğesi true olarak ayarlanır.

<GenerateResponse> değeri true ise politika hata döndürür jeton ve kod oluşturan işlemler için bu biçimde sunulur. Tam liste için bkz. OAuth HTTP hatası yanıt referansı.

{"ErrorCode" : "invalid_client", "Error" :"ClientId is Invalid"}

<GenerateResponse> değeri true ise politika hata döndürür kullanabilirsiniz. Tam liste için bkz. OAuth HTTP hatası yanıt referansı.

{  
   {  
      "fault":{  
         "faultstring":"Invalid Access Token",
         "detail":{  
            "errorcode":"keymanagement.service.invalid_access_token"
         }
      }
   }

Örnek hata kuralı

<FaultRule name=OAuthV2 Faults">
    <Step>
        <Name>AM-InvalidClientResponse</Name>
        <Condition>(fault.name = "invalid_client") OR (fault.name = "InvalidClientIdentifier")</Condition>
    </Step>
    <Step>
        <Name>AM-InvalidTokenResponse</Name>
        <Condition>(fault.name = "invalid_access_token")</Condition>
    </Step>
    <Condition>(oauthV2.failed = true) </Condition>
</FaultRule>

Politika şeması

Her politika türü bir XML şemasıyla (.xsd) tanımlanır. Referans olarak, politika şemalarını GitHub'da bulabilirsiniz.

Varsayılan OAuth ile çalışma yapılandırma

Apigee Edge'deki her kuruluşa (ücretsiz deneme sürümü kuruluşları bile) bir OAuth jetonu sağlanır uç nokta. Uç nokta, API proxy'sindeki politikalarla önceden yapılandırılmış oauth olarak adlandırılır. Jeton uç noktasını oluşturduktan hemen sonra kullanmaya başlayabilirsiniz Apigee Edge'de bir hesap açın. Örneğin, OAuth'u anlama uç noktaları.

Erişim jetonlarını kalıcı olarak silme

Varsayılan olarak, OAuth2 jetonları Apigee Edge sisteminden 3 gün (259.200 saniye) silinir hem erişim jetonunun hem de yenileme jetonunun (varsa) süresi dolduğunda. Bazı durumlarda, bu varsayılan ayarı değiştirebilirsiniz. Örneğin, kalıcı olarak silme süresini çok sayıda jeton oluşturuluyorsa disk alanından tasarruf sağlar.

Edge for Private Cloud kullanıyorsanız bu varsayılan ayarı değiştirerek yapabilirsiniz. kuruluş özelliklerini bu bölümde açıklanmıştır. (Süresi dolan jetonların 3 gün içinde kalıcı olarak silinmesi . Önceki sürümlerde ise varsayılan kalıcı silme aralığı 180 gündür.)

Edge Private Cloud 4.16.01 ve sonraki sürümleri için kalıcı olarak silme ayarlarını güncelleme

Not: Yalnızca bu ayarlardan sonra oluşturulan jetonlar değişikliklerin etkilendiğini; Bu ayarlar, daha önce oluşturulan jetonlar için geçerli değildir.

Kalıcı olarak güncelleniyor Edge Private Cloud 4.15.07 ayarları

Not: Yalnızca bu ayarlar uygulandıktan sonra oluşturulan jetonlar etkilendiğini ve Bu ayarlar, daha önce oluşturulan jetonlar için geçerli değildir.

RFC ile uyumlu olmayan davranış

OAuthV2 politikası, RFC ile uyumlu olmayan belirli özellikleri içerir. Aşağıdaki tabloda, uyumlu olmayan reklam öğeleri OAuthV2 politikası ve ilgili uyumlu özellikler tarafından döndürülen özellikler.

OAuthV2 şunları döndürür: RFC uyumlu özellik:
"token_type":"BearerToken" "token_type":"Bearer"
"expires_in":"3600" "expires_in":3600

(Uyumlu değer bir dize değil, sayıdır.)

Ayrıca, grant_type = refresh_token durumunda, süresi dolmuş bir yenileme jetonunun hata yanıtı:

{"ErrorCode" : "invalid_request", "Error" :"Refresh Token expired"}

Ancak RFC uyumlu yanıt şu şekildedir:

{"error" : "invalid_grant", "error_description" :"refresh token expired"}

İlgili konular