JWC politikasını çözün

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

Ne?

JWT'de imzayı doğrulamadan bir JWT'nin kodunu çözer. Bu strateji, özellikle de JWT içinden gelen bir hak talebinin değerinin bilinmesi gerektiğinde VerifyJWT politikasıyla uyumludur kontrol edin.

JWT Kod Çözme politikası, JWT'yi imzalamak için kullanılan algoritmadan bağımsız olarak çalışır. Ayrıntılı bilgi için JWS ve JWT politikalarına genel bakış sayfasına göz atın.

Video

JWT'nin kodunu nasıl çözeceğinizi öğrenmek için kısa bir video izleyin.

Örnek: Bir 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şkeni mevcut ve uygulanabilir (denetlenebilir) bir JWT içermelidir. Politika, JWT'yi şuradan alabilir: kullanabilirsiniz.

<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 sonraki politikalar veya koşullar bu değerleri inceleyebilir. Ayrıntılı bilgi için Akış değişkenleri bu politika tarafından ayarlanan değişkenlerin listesini oluşturun.

JWT Kodunu Çözme için öğe referansı

Politika referansında, JWT Kodunu Çözme politikasının öğeleri ve özellikleri açıklanır.

Şu özellikler üst düzey öğeye uygula

<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 Bulunma
ad Politikanın dahili adı. Adda kullanabileceğiniz karakterler aşağıdakilerle sınırlıdır: A-Z0-9._\-$ % Bununla birlikte, Edge yönetim arayüzü, alfasayısal olmayan karakterlerin otomatik olarak kaldırılması gibi kısıtlamalara tabidir.

İsteğe bağlı olarak, <displayname></displayname> öğesini şunun için kullanın: yönetim arayüzü proxy düzenleyicisindeki politikayı farklı, doğal bir dille etiketleyin dokunun.

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ı
etkin Politikayı uygulamak için true olarak ayarlayın.

"Kapat" için false olarak ayarlandı politika. Politika uygulanmayacak bir akışa bağlı kalsa bile kaydetmenizi sağlar.

true İsteğe bağlı
eş zamansız Bu özelliğin desteği sonlandırıldı. false Kullanımdan kaldırıldı

&lt;DisplayName&gt;

<DisplayName>Policy Display Name</DisplayName>

Yönetim kullanıcı arayüzü proxy düzenleyicisinde politikayı etiketlemek için ad özelliğine ek olarak kullanın doğal bir dille değiştirin.

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

&lt;Source&gt;

<Source>jwt-variable</Source>

Varsa politikanın JWT'yi bulmayı beklediği akış değişkenini çözer.

Varsayılan request.header.authorization (Önemli bilgiler için yukarıdaki nota bakın. varsayılan değer hakkında).
Bulunma İsteğe bağlı
Tür Dize
Geçerli değerler 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ı

This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause Fix
steps.jwt.FailedToDecode 401 Occurs when the policy is unable to decode the JWT. The JWT may be malformed, invalid or otherwise not decodable.
steps.jwt.FailedToResolveVariable 401 Occurs when the flow variable specified in the <Source> element of the policy does not exist.
steps.jwt.InvalidToken 401 Occurs when the flow variable specified in the <Source> element of the policy is out of scope or can't be resolved.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
InvalidEmptyElement Occurs when the flow variable containing the JWT to be decoded is not specified in the <Source> element of the policy.

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ı

JWT Politikası Hata Kodları

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>