DecodeJWS politikası

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

Ne

JWS'deki imzayı doğrulamadan JWS üst bilgisinin kodunu çözer ve her başlığı bir akış değişkenine yazar. Bu politika en çok, JWS'nin imzası doğrulanmadan önce JWS içindeki bir başlığın değerinin bilinmesi gerektiğinde VerifyJWS politikasıyla uyumlu olarak kullanıldığında yararlıdır.

Bir JWS'nin şu biçimde ekli bir yükü olabilir:

header.payload.signature

Alternatif olarak JWS, detached yük olarak adlandırılan yükü çıkarıp şu biçimde olabilir:

header..signature

DecodeJWS politikası yalnızca JWS'nin başlık kısmının kodunu çözdüğünden her iki biçimde de çalışır. DecodeJWS politikası, JWS'yi imzalamak için kullanılan algoritmadan bağımsız olarak da çalışır.

JWS formatı ve biçimiyle ilgili ayrıntılı bilgi ve genel bakış için JWS ve JWT politikalarına genel bakış sayfasını inceleyin.

Video

JWT'nin kodunu nasıl çözeceğinizi öğrenmek için kısa bir video izleyin. Bu video bir JWT'ye özel olsa da çoğu JWS kavramı aynıdır.

Örnek: JWS'nin kodunu çözme

Aşağıda gösterilen politika, var.JWS akış değişkeninde bulunan bir JWS'nin kodunu çözer. Bu değişken mevcut olmalı ve uygun (çözünür) bir JWS içermelidir. Politika, JWS'yi herhangi bir akış değişkeninden alabilir.

<DecodeJWS name="JWS-Decode-HS256">
    <DisplayName>JWS Verify HS256</DisplayName>
    <Source>var.JWS</Source>
</DecodeJWS>

Politika, JWS'nin başlık bölümündeki her bir başlık için şu ada sahip bir akış değişkeni ayarlar:

jws.policy-name.header.header-name

JWS'ye eklenmiş bir yük varsa jws.policy-name.header.payload akış değişkenini yüke ayarlar. Ayrılmış yük için payload boştur. Bu politika tarafından ayarlanan değişkenlerin tam listesi için Akış değişkenleri bölümüne bakın.

JWS Kodu Çözme için öğe referansı

Politika referansı, Kod Çözme JWS politikasının öğelerini ve özelliklerini açıklar.

Üst düzey öğe için geçerli olan özellikler

<DecodeJWS name="JWS" 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 <displayname></displayname> öğesini kullanın.

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 true değerine ayarlayın.

false İsteğe bağlı
etkin Politikayı uygulamak için true değerine ayarlayın.

Politikayı "devre dışı bırakmak" için false olarak ayarlayın. Politika bir akışa bağlı kalsa bile uygulanmaz.

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>JWS-variable</Source>

Varsa politikanın kodu çözmek için JWS'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ı olunca, JWS'yi Doğrula ve JWS'nin Kodunu Çöz politikaları bağlam değişkenlerini şu kalıba göre ayarlar:

jws.{policy_name}.{variable_name}

Örneğin, politika adı verify-jws ise politika, JWS'de belirtilen algoritmayı şu bağlam değişkeninde depolar: jws.verify-jws.header.algorithm

Değişken adı Açıklama
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.
header.algorithm JWS'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 Anahtar Kimliği (JWS oluşturulduğunda eklenmişse). Ayrıca bir JWS'yi doğrulamak için JWT ve JWS politikalarına genel bakış sayfasındaki "Using a JSON Web Key Set (JWKS)" (JSON Web Anahtarı Kümesi Kullanma) konusuna da göz atın. Daha fazla bilgi için (Anahtar Kimliği) Başlık Parametresi konusuna bakın.
header.type Başlık türünün değeri. Daha fazla bilgi için (Tür) Başlık Parametresi bölümüne bakın.
header.name Adlandırılmış başlığın değeri (standart veya ek). JWS'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.
payload JWS'ye eklenmiş bir yük varsa JWS yükü Ayrılmış yük için bu değişken boştur.
valid DoğrulamaJWS'de imza doğrulandığında bu değişken "true" olacaktır. Geçerli zaman, jetonun süresinin sona ermesinden önce ve varsa jetonun notBefore değerinden sonradır. Aksi takdirde yanlış değerini alır.

DecodeJWS'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 Gerçekleşme zamanı:
steps.jws.FailedToDecode 401 Politika, JWS'nin kodu çözülemedi. JWS büyük olasılıkla bozuktur.
steps.jws.FailedToResolveVariable 401 Politikanın <Source> öğesinde belirtilen akış değişkeni mevcut olmadığında ortaya çıkar.
steps.jws.InvalidClaim 401 Eksik hak talebi veya hak talebi uyuşmazlığı ya da eksik başlık veya başlık uyuşmazlığı için.
steps.jws.InvalidJsonFormat 401 JWS üstbilgisinde geçersiz JSON bulundu.
steps.jws.InvalidJws 401 Bu hata, JWS imzası doğrulaması başarısız olduğunda oluşur.
steps.jws.InvalidPayload 401 JWS yükü geçersiz.
steps.jws.InvalidSignature 401 <DetachedContent> atlanır ve JWS'de ayrı bir içerik yükü bulunur.
steps.jws.MissingPayload 401 JWS yükü eksik.
steps.jws.NoAlgorithmFoundInHeader 401 JWS, algoritma başlığını çıkardığında ortaya çıkar.
steps.jws.UnknownException 401 Bilinmeyen bir istisna oluştu.

Dağıtım hataları

Bu hatalar, bu politikayı içeren bir proxy dağıttığınızda ortaya çıkabilir.

Hata adı Gerçekleşme zamanı:
InvalidAlgorithm Geçerli değerler şunlardır: RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384, ES512, HS256, HS384, HS512.

EmptyElementForKeyConfiguration

FailedToResolveVariable

InvalidConfigurationForActionAndAlgorithmFamily

InvalidConfigurationForVerify

InvalidEmptyElement

InvalidFamiliesForAlgorithm

InvalidKeyConfiguration

InvalidNameForAdditionalClaim

InvalidNameForAdditionalHeader

InvalidPublicKeyId

InvalidPublicKeyValue

InvalidSecretInConfig

InvalidTypeForAdditionalClaim

InvalidTypeForAdditionalHeader

InvalidValueForElement

InvalidValueOfArrayAttribute

InvalidVariableNameForSecret

MissingConfigurationElement

MissingElementForKeyConfiguration

MissingNameForAdditionalClaim

MissingNameForAdditionalHeader

Diğer olası dağıtım hataları.

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"
JWS.failed Tüm JWS politikaları, bir hata durumunda aynı değişkeni ayarlar. jws.JWS-Policy.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="JWS Policy Errors">
        <Step>
            <Name>JavaScript-1</Name>
            <Condition>(fault.name Matches "TokenExpired")</Condition>
        </Step>
        <Condition>JWS.failed=true</Condition>
    </FaultRule>
</FaultRules>