Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Ne?
JWT'deki imzayı doğrulamadan JWT'nin kodunu çözer. Bu politika, JWT'nin imzası doğrulanmadan önce JWT'deki bir talebin değerinin bilinmesi gerektiğinde VerifyJWT politikası ile birlikte kullanıldığında en yararlı olur.
JWT Decode politikası, JWT'yi imzalamak için kullanılan algoritmadan bağımsız olarak çalışır. Ayrıntılı bir giriş için JWS ve JWT politikalarına genel bakış başlıklı makaleyi inceleyin.
Video
JWT'nin kodunu çözmeyi öğrenmek için kısa bir video izleyin.
Örnek: JWT'nin kodunu çözme
Aşağıda gösterilen politika, akış değişkeninde var.jwt bulunan bir JWT'nin kodunu çözüyor. Bu değişken mevcut olmalı ve geçerli (kod çözülebilir) 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, çıkışını bağlam değişkenlerine yazar. Böylece API proxy'sindeki sonraki politikalar veya koşullar bu değerleri inceleyebilir. Bu politika tarafından ayarlanan değişkenlerin listesi için Akış değişkenleri başlıklı makaleyi inceleyin.
JWT kodunu çözme için öğe referansı
Politika referansında, Decode JWT politikasının öğeleri ve özellikleri açıklanır.
En üst düzey öğeye uygulanan özellikler
<DecodeJWT name="JWT" continueOnError="false" enabled="true" async="false">
Aşağıdaki özellikler tüm politika üst öğeleri için ortaktır.
| Özellik | Açıklama | Varsayılan | Varlık (Presence) |
|---|---|---|---|
| ad |
Politikanın dahili adı. Adda kullanabileceğiniz karakterler şunlarla sınırlıdır:
A-Z0-9._\-$ %. Ancak Edge yönetim kullanıcı arayüzü, alfanümerik olmayan karakterleri otomatik olarak kaldırma gibi ek kısıtlamalar uygular.
İsteğe bağlı olarak, |
Yok | Zorunlu |
| continueOnError |
Bir politika başarısız olduğunda hata döndürmek için false olarak ayarlayın. Bu, çoğu politika için beklenen bir davranıştır.
Bir politika başarısız olsa bile akış yürütme işleminin devam etmesi için |
yanlış | İsteğe bağlı |
| etkin |
Politikayı zorunlu kılmak için true olarak ayarlayın.
Politikayı "kapatmak" için |
doğru | İsteğe bağlı |
| eş zamansız | Bu özelliğin desteği sonlandırıldı. | yanlış | Kullanımdan kaldırıldı |
<DisplayName>
<DisplayName>Policy Display Name</DisplayName>
Politikayı yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı bir doğal dil adıyla etiketlemek için ad özelliğine ek olarak kullanılır.
| Varsayılan | Bu öğeyi atlarsanız politikanın ad özelliği değeri kullanılır. |
| Varlık (Presence) | İsteğe bağlı |
| Tür | Dize |
<Source>
<Source>jwt-variable</Source>
Varsa politika tarafından kod çözme için JWT'nin bulunmasının beklendiğ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.) |
| Varlık (Presence) | İsteğe bağlı |
| Tür | Dize |
| Geçerli değerler | Bir Edge akış değişkeni adı |
Akış değişkenleri
Başarının ardından, JWT'yi doğrulayın ve JWT kodunu çözme politikaları ayarlandı. bağlam değişkenlerini görürsünüz:
jwt.{policy_name}.{variable_name}
Örneğin, politika adı jwt-parse-token ise politika,
JWT'de belirtilen konu, jwt.jwt-parse-token.decoded.claim.sub adlı bağlam değişkenine.
(Geriye dönük uyumluluk için jwt.jwt-parse-token.claim.subject içinde de kullanılabilir)
| Değişken adı | Açıklama |
|---|---|
claim.audience |
JWT kitle talebi. 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 oluşturulduğu ve epoch'tan bu yana milisaniye cinsinden ifade edilen tarih. |
claim.issuer |
JWT'yi veren kuruluş hak talebi. |
claim.notbefore |
JWT bir nbf talebi içeriyorsa bu değişken şu değeri içerir: epoch'tan beri milisaniye cinsinden ifade edilir. |
claim.subject |
JWT konusuyla ilgili hak talebi. |
claim.name |
Adı verilen talebin (standart veya ek) yükteki değeri. Bunlardan biri tüm hak taleplerini karşılayabilir. |
decoded.claim.name |
Yükteki belirtilen talebin (standart veya ek) JSON ile ayrıştırılabilir değeri. Bir değişken
tüm hak taleplerini karşılayabilir. Örneğin, decoded.claim.iat kullanarak
dönemden bu yana geçen saniye cinsinden ifade edilen, JWT'nin verilme zamanını alır. Bu sırada
claim.name akış değişkenlerini de kullanabilir. Bu,
bir hak talebine erişmek için kullanılması önerilen bir değişkendir. |
decoded.header.name |
Yükteki bir başlığın JSON ile ayrıştırılabilir değeri. Bir değişken
yükteki her başlıktan oluşur. header.name akış değişkenlerini de kullanabilirsiniz
bir başlığa erişmek için kullanılması önerilen değişkendir. |
expiry_formatted |
Son kullanma tarihi/saati (kullanıcılar tarafından okunabilir bir dize olarak biçimlendirilmiştir). Ö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 (Algorithm) Header Parametresi bölümüne bakın. |
header.kid |
JWT oluşturulurken eklendiyse Anahtar Kimliği. Ayrıca bkz. "JSON Web Anahtarı Seti Kullanma (JWKS)" JWT'de politikalara genel bakış bölümünü inceleyin. Daha fazla bilgi için (Anahtar Kimliği) Başlık Parametresi bölümüne bakın. |
header.type |
JWT olarak ayarlanacak. |
header.name |
Adlandırılmış başlığın değeri (standart veya ek). Bunlardan biri JWT'nin başlık bölümündeki her ek üstbilgiyi içerir. |
header-json |
JSON biçiminde üstbilgi. |
is_expired |
doğru veya yanlış |
payload-claim-names |
JWT tarafından desteklenen bir dizi iddia. |
payload-json |
JSON biçimindeki yük.
|
seconds_remaining |
Jetonun süresinin dolmasına kalan saniye sayısı. Jetonun süresi dolmuşsa sayı negatif olur. |
time_remaining_formatted |
Jetonun süresi dolmadan önce kalan süre, okunabilir bir dize olarak biçimlendirilir. Örnek: 00:59:59.926 |
valid |
VerifyJWT için, imza doğrulandığında bu değişken "true" (doğru) olacaktır.
geçerli zaman, jetonun süresi dolmadan önce ve jeton notBefore değerinden sonraysa
olduğundan emin olun. Aksi takdirde false (yanlış) değerini alır.
DecodeJWT'de 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, çalışma zamanı hatası oluştuğunda ayarlanır. Daha fazla bilgi için Bilmeniz gerekenler hakkında daha fazla 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 Matches "TokenExpired" |
JWT.failed |
Tüm JWT politikaları, hata durumunda aynı değişkeni ayarlar. | JWT.failed = true |
Örnek hata yanıtı
Hata giderme için en iyi uygulama, hatanın errorcode kısmını yakalamaktır
tıklayın. Değişebileceği için faultstring içindeki metne güvenmeyin.
Örnek hata kuralı
<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>