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ı. İsteğe bağlı olarak, politikayı |
Yok | Zorunlu |
continueOnError |
Bir politika başarısız olduğunda hata döndürmesi için Akış yürütmenin bir politikadan sonra bile devam etmesi için |
false | İsteğe bağlı |
enabled |
Politikayı uygulamak için Politikayı devre dışı bırakmak için |
true | İsteğe bağlı |
async |
Bu özelliğin desteği sonlandırıldı. |
false | Kullanımdan kaldırıldı |
<DisplayName> öğ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 |
---|---|
Varlık | İsteğe bağlı |
Tür | Dize |
<AccessToken> öğ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: |
|
<AccessTokenPrefix> öğ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: |
|
<AppEndUser> öğ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: |
|
<Attributes/Attribute>
<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: |
|
Bulunma: |
İsteğe bağlı |
Geçerli değerler: |
|
İzin türleriyle kullanılır: |
|
<ClientId> öğ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: |
GenerateAuthorizationCode işlemiyle de kullanılabilir. |
<Code> öğ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 |
<ExpiresIn> öğ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:
message-processor.properties
dosyasını bir düzenleyicide açın. Dosya yoksa, oluşturun:vi /opt/apigee/customer/application/message-processor.properties
.- Tesisi istediğiniz gibi ayarlayın:
conf_keymanagement_oauth_auth_code_expiry_time_in_millis=3600000
. - Özellikler dosyasının sahibi olarak "Apigee" bulunduğundan emin olun kullanıcı:
chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
. - 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: |
|
İzin türleriyle kullanılır: |
GenerateAuthorizationCode işlemiyle de kullanılır. |
<ExternalAccessToken> öğ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.
<ExternalAuthorization> öğ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: |
|
<ExternalAuthorizationCode> öğ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.
<ExternalRefreshToken> öğ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.
<GenerateResponse> öğ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: |
|
<GenerateErrorResponse> öğ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: |
|
<GrantType>
<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: |
|
<Operation> öğe
<Operation>GenerateAuthorizationCode</Operation>
Politika tarafından yürütülen OAuth 2.0 işlemi.
Varsayılan: |
|
Bulunma: |
İsteğe bağlı |
Tür: | Dize |
Geçerli değerler: |
|
<PassWord> öğ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 |
<RedirectUri> öğ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: |
GenerateAuthorizationCode işlemiyle de kullanılır. |
<RefreshToken> öğ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: |
|
<RefreshTokenExpiresIn> öğ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:
message-processor.properties
dosyasını bir düzenleyicide açın. Dosya yoksa, oluşturun:vi /opt/apigee/customer/application/message-processor.properties
.- Tesisi istediğiniz gibi ayarlayın:
conf_keymanagement_oauth_refresh_token_expiry_time_in_millis=3600000
. - Özellikler dosyasının sahibi olarak "Apigee" bulunduğundan emin olun kullanıcı:
chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
. - 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: |
|
<ResponseType> öğ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: |
|
<ReuseRefreshToken> öğ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: |
|
Bulunma: |
isteğe bağlı |
Tür: | boolean |
Geçerli değerler: |
|
İzin türüyle kullanılır: |
|
<Scope> öğ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: |
|
<State> öğ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: |
|
<StoreToken> öğ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: |
|
<SupportedGrantTypes>/<GrantType> öğ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 <GrantType> öğ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: |
|
<Tokens>/<Token> öğ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.
<UserName> öğ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.
proxy.pathsuffix
) tıklayın. Flow.resource.name değişkeninin açık bir şekilde ayarlanması gerekmez.
API ürünleri geçerli ortamlar ve API proxy'leriyle yapılandırılmadığında,
flow.resource.name
,
akışı sağlar. Ürün yapılandırmasıyla ilgili ayrıntılar için Uç yönetimini kullanma
API to Publish API (API'yi Yayınlama API'si).
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 |
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. <ExpiresIn> öğ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 <ExpiresIn> öğ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 |
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 |
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ı, Not: Mevcut hata kuralını değiştirmeniz önerilir
koşullarını karşılamak için |
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\ |
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ı, |
GenerateAccessToken |
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 ( <SupportedGrantTypes> öğ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 |
|
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 |
Not: |
InvalidOperation |
Bu politikada geçerli bir işlem belirtmek için
Not: |
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.
<GenerateResponse>
şuna ayarlandı:
false
. <GenerateResponse>
ise
true
ise, bir hata oluşursa politika istemciye anında yanıt döndürür --
hata akışı atlanır ve bu değişkenler doldurulmaz. Daha fazla bilgi için bkz.
Yapmanız gerekenler
bilgi edinin.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: |
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.
errorcode
bölümü. Yalnızca
faultstring
, çünkü değişebilir.<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.
- Düzenlemek için şu dosyayı açın:
/opt/apigee/customer/application/message-processor.properties
. - Jetonu tamamen silmeden önce beklenecek saniye sayısını ayarlamak için aşağıdaki özelliği ekleyin
geçerliliğini yitirmez:
conf_keymanagement_oauth.access.token.purge.after.seconds=<number of seconds>
. - Mesaj işlemcisini yeniden başlatın. Örnek:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
.
<ExpiresIn>
ve
<RefreshTokenExpiresIn>
özellikleri.
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.
-
<ExpiresIn>
ve için pozitif değerler ayarlayın OAuthV2 politikasında<RefreshTokenExpiresIn>
özellikleri bulunuyor. Değerler şurada: milisaniye cinsinden ayarlanır. Örneğin:<ExpiresIn>1000</ExpiresIn> <RefreshTokenExpiresIn>10000</RefreshTokenExpiresIn>
-
Proxy'yi yeniden dağıtın.
-
Kuruluşunuz için jeton kalıcı olarak silme özelliklerini güncellemek üzere bu API'yi kullanın:
POST https://<host-name>/v1/organizations/<org-name>
Yük:
<Organization name="AutomationOrganization"> <Description>Desc</Description> <Properties> <Property name="keymanagement.oauth20.access.token.purge">true</Property> <Property name="keymanagement.oauth20.access.token.purge.after.seconds">120</Property> </Properties> </Organization>
-
Mesaj işlemcisini yeniden başlatın. Örneğin:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Bu API, AutomationOrganization. Bu durumda, erişim jetonu 120 veritabanından kalıcı olarak silinir saniye sonra kullanılabilir.
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"}