Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Ne
JWT üzerindeki imzayı doğrulamadan bir JWT'nin kodunu çözer. Bu, en çok VerifyJWT politikasıyla uyumlu olarak kullanıldığında, yani JWT'nin imzası doğrulanmadan önce JWT içindeki bir hak talebinin değerinin bilinmesi gerektiğinde yararlıdır.
JWT Kod Çözme politikası, JWT'yi imzalamak için kullanılan algoritmadan bağımsız olarak çalışır. Ayrıntılı tanıtım için JWS ve JWT politikalarına genel bakış başlıklı makaleyi inceleyin.
Video
JWT'nin kodunu nasıl çözeceğinizi öğrenmek için kısa bir video izleyin.
Örnek: JWT'nin kodunu çözme
Aşağıda gösterilen politika, var.jwt akış değişkeninde bulunan bir JWT'nin kodunu çözer. Bu değişken mevcut olmalı ve uygun (çözünür) bir JWT içermelidir. Politika, JWT'yi herhangi bir akış değişkeninden alabilir.
<DecodeJWT name="JWT-Decode-HS256"> <DisplayName>JWT Verify HS256</DisplayName> <Source>var.jwt</Source> </DecodeJWT>
Politika, çıktısını bağlam değişkenlerine yazar. Böylece, API proxy'sinde sonraki politikalar veya koşullar bu değerleri inceleyebilir. Bu politika tarafından ayarlanan değişkenlerin listesi için Akış değişkenleri bölümüne bakın.
JWT Kodu Çözme için öğe referansı
Politika referansı, Kod Çözme JWT politikasının öğelerini ve özelliklerini açıklar.
Üst düzey öğe için geçerli olan özellikler
<DecodeJWT name="JWT" continueOnError="false" enabled="true" async="false">
Aşağıdaki özellikler, tüm politika üst öğelerinde ortaktır.
Özellik | Açıklama | Varsayılan | Bulunma |
---|---|---|---|
ad |
Politikanın dahili adı. Adda kullanabileceğiniz karakterler şunlarla sınırlıdır:
A-Z0-9._\-$ % . Bununla birlikte, Edge yönetim kullanıcı arayüzü, alfanümerik olmayan karakterlerin otomatik olarak kaldırılması gibi ek kısıtlamalar uygular.
İsteğe bağlı olarak, politikayı yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı bir doğal dil adıyla etiketlemek için |
Yok | Gerekli |
continueOnError |
Bir politika başarısız olduğunda hata döndürülmesi için false olarak ayarlayın. Bu, çoğu politika için beklenen davranıştır.
Bir politika başarısız olduktan sonra bile akış yürütülmesinin devam etmesi için |
false | İsteğe bağlı |
etkin |
Politikayı uygulamak için true değerine ayarlayın.
Politikayı "devre dışı bırakmak" için |
true | İsteğe bağlı |
async | Bu özellik kullanımdan kaldırıldı. | false | Kullanımdan kaldırıldı |
<DisplayName>
<DisplayName>Policy Display Name</DisplayName>
Yönetim arayüzü proxy düzenleyicisinde politikayı farklı bir doğal dil adıyla etiketlemek için name özelliğine ek olarak kullanın.
Varsayılan | Bu öğeyi çıkarırsanız politikanın ad özelliğinin değeri kullanılır. |
Bulunma | İsteğe bağlı |
Tür | Dize |
<Kaynak>
<Source>jwt-variable</Source>
Varsa politikanın kodu çözmek için JWT'yi bulmayı beklediği akış değişkenini belirtir.
Varsayılan | request.header.authorization (Varsayılan değerle ilgili önemli bilgiler için yukarıdaki nota bakın). |
Bulunma | İsteğe bağlı |
Tür | Dize |
Geçerli değerler | Edge akışı değişken adı |
Akış değişkenleri
Başarılı olduktan sonra, JWT'yi Doğrulama ve JWT'nin Kodunu Çöz politikaları bağlam değişkenlerini şu kalıba göre ayarlar:
jwt.{policy_name}.{variable_name}
Örneğin, politika adı jwt-parse-token
ise politika , JWT'de belirtilen konuyu jwt.jwt-parse-token.decoded.claim.sub
adlı bağlam değişkeninde saklar.
(Geriye dönük uyumluluk için jwt.jwt-parse-token.claim.subject
sürümünde de kullanıma sunulacaktır)
Değişken adı | Açıklama |
---|---|
claim.audience |
JWT kitlesi iddiası. Bu değer bir dize veya bir dize dizisi olabilir. |
claim.expiry |
Dönemden bu yana milisaniye cinsinden ifade edilen geçerlilik bitiş tarihi/saati. |
claim.issuedat |
Jetonun verildiği tarih. Dönemden bu yana geçen milisaniye cinsinden ifade edilir. |
claim.issuer |
JWT'yi veren kuruluş iddiası. |
claim.notbefore |
JWT, bir nbf talebi içeriyorsa bu değişken, epoch'tan itibaren milisaniye cinsinden ifade edilen değeri içerir. |
claim.subject |
JWT konusunun iddiası. |
claim.name |
Yükteki adlandırılmış hak talebinin (standart veya ek) değeri. Yükteki her hak talebi için bunlardan biri ayarlanır. |
decoded.claim.name |
Yükteki belirtilen hak talebinin (standart veya ek) JSON ile ayrıştırılabilir değeri. Yükteki her hak talebi için bir değişken ayarlanır. Örneğin, dönemden bu yana saniye cinsinden ifade edilen JWT zamanında verilen bilgiyi almak için decoded.claim.iat kullanabilirsiniz. claim.name akış değişkenlerini de kullanabilirsiniz ancak bir hak talebine erişmek için kullanılması önerilen değişken budur. |
decoded.header.name |
Yükteki bir başlığın JSON ile ayrıştırılabilir değeri. Yükteki her başlık için bir değişken ayarlanır. header.name akış değişkenlerini de kullanabilirsiniz ancak bir başlığa erişmek için önerilen değişken budur. |
expiry_formatted |
Kullanıcıların okuyabileceği bir dize olarak biçimlendirilmiş geçerlilik bitiş tarihi/saati. Örnek: 2017-09-28T21:30:45.000+0000 |
header.algorithm |
JWT'de kullanılan imzalama algoritması. Örneğin, RS256, HS384 vb. Daha fazla bilgi için (Algoritma) Başlık Parametresi konusuna bakın. |
header.kid |
JWT oluşturulurken eklenmişse Anahtar Kimliği. Ayrıca bir JWT'yi doğrulamak için JWT politikalarına genel bakış bölümündeki "Using a JSON Web Key Set (JWKS)" (JSON Web Anahtarı Kümesi Kullanma) bölümüne de göz atın. Daha fazla bilgi için (Anahtar Kimliği) Başlık Parametresi konusuna bakın. |
header.type |
JWT olarak ayarlanacak. |
header.name |
Adlandırılmış başlığın değeri (standart veya ek). JWT'nin başlık bölümündeki her ek başlık için bunlardan biri ayarlanır. |
header-json |
JSON biçiminde üstbilgi. |
is_expired |
doğru veya yanlış |
payload-claim-names |
JWT tarafından desteklenen bir dizi hak talebi. |
payload-json |
JSON biçimindeki yük.
|
seconds_remaining |
Jetonun süresinin dolmasına kalan saniye sayısı. Jetonun süresi dolmuşsa bu sayı negatif olur. |
time_remaining_formatted |
Jetonun sona ermesinden önce kalan ve okunabilir bir dize olarak biçimlendirilmiş süre. Örnek: 00:59:59.926 |
valid |
DoğrulamaJWT durumunda, imza doğrulandığında bu değişken "true" olur. Geçerli zaman, jetonun süresinin sona ermesinden önce ve varsa jetonun notBefore değerinden sonradır. Aksi takdirde yanlış değerini alır.
DecodeJWT durumunda bu değişken ayarlanmamıştır. |
Hata referansı
Bu bölümde, bu politika bir hatayı tetiklediğinde Edge tarafından ayarlanan hata kodları ile hata mesajları ve döndürülen hata mesajları ile Edge tarafından ayarlanan hata değişkenleri açıklanmaktadır. Bu bilgiyi, hataları ele almak için hata kuralları geliştirip geliştirmediğinizi bilmeniz önemlidir. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler ve Hataları işleme bölümlerine bakın.
Çalışma zamanı hataları
Politika yürütüldüğünde bu hatalar ortaya çıkabilir.
Hata kodu | HTTP durumu | Neden | Düzelt |
---|---|---|---|
steps.jwt.FailedToDecode |
401 | Politika, JWT'nin kodunu çözemediğinde ortaya çıkar. JWT bozuk, geçersiz veya başka bir şekilde kodu çözülemeyebilir. | build |
steps.jwt.FailedToResolveVariable |
401 | Politikanın <Source> öğesinde belirtilen akış değişkeni mevcut olmadığında ortaya çıkar. |
|
steps.jwt.InvalidToken |
401 | Politikanın <Source> öğesinde belirtilen akış değişkeni kapsam dışında olduğunda veya çözümlenemediğinde ortaya çıkar. |
build |
Dağıtım hataları
Bu hatalar, bu politikayı içeren bir proxy dağıttığınızda ortaya çıkabilir.
Hata adı | Neden | Düzelt |
---|---|---|
InvalidEmptyElement |
Kodu çözülecek JWT'yi içeren akış değişkeni politikanın <Source> öğesinde belirtilmediğinde ortaya çıkar.
|
build |
Hata değişkenleri
Bu değişkenler, bir çalışma zamanı hatası oluştuğunda ayarlanır. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler bölümüne bakın.
Değişkenler | Konum | Örnek |
---|---|---|
fault.name="fault_name" |
fault_name, yukarıdaki Çalışma zamanı hataları tablosunda listelenen hatanın adıdır. Hata adı, hata kodunun son kısmıdır. | fault.name Matches "TokenExpired" |
JWT.failed |
Tüm JWT politikaları, hata durumunda aynı değişkeni ayarlar. | JWT.failed = true |
Örnek hata yanıtı
Hata işleme için en iyi uygulama, hata yanıtının errorcode
bölümünü yakalamaktır. Değişebileceği için faultstring
içindeki metne güvenmeyin.
Hata kuralı örneği
<FaultRules> <FaultRule name="JWT Policy Errors"> <Step> <Name>JavaScript-1</Name> <Condition>(fault.name Matches "TokenExpired")</Condition> </Step> <Condition>JWT.failed=true</Condition> </FaultRule> </FaultRules>