DecodeJWS politikası

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

Ne?

JWS üstbilgisini, JWS'deki imzayı doğrulamadan çözer ve her üstbilgiyi bir akış değişkenine yazar. Bu politika, JWS'nin imzası doğrulanmadan önce JWS içindeki bir başlığın değeri bilinmesi gerektiğinde VerifyJWS politikası ile birlikte kullanıldığında en faydalı olur.

JWS, aşağıdaki biçimde eklenmiş bir yük içerebilir:

header.payload.signature

Alternatif olarak, JWS, ayrılmış yük adı verilen yükü atlayabilir ve şu biçimde olabilir:

header..signature

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

Ayrıntılı bir giriş ve JWS biçimine genel bakış 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. Bu video JWT'ye özel olsa da birçok kavram JWS için de aynıdır.

Örnek: JWS'nin kodunu çözme

Aşağıda gösterilen politika, akış değişkeninde var.JWS bulunan bir JWS'nin kodunu çözüyor. Bu değişken mevcut olmalı ve geçerli (kod çözülebilir) 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 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şkeni yük olarak ayarlanır. Ayrılmış bir yük için payload boş. Bu politika tarafından ayarlanan değişkenlerin tam listesi için Akış değişkenleri başlıklı makaleyi inceleyin.

Decode JWS için öğe referansı

Politika referansında, JWS'yi Çözme politikasının öğeleri ve özellikleri açıklanmaktadır.

En üst düzey öğeye uygulanan özellikler

<DecodeJWS name="JWS" 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, <displayname></displayname> öğesini kullanarak politikayı yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı bir doğal dil adıyla etiketleyin.

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 true olarak ayarlayın.

yanlış İsteğe bağlı
etkin Politikayı zorunlu kılmak için true olarak ayarlayın.

Politikayı "kapatmak" için false olarak ayarlayın. Politika, akışa ekli kalsa bile zorunlu kılınmaz.

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

Varsa politika tarafından kod çözme için JWS'nin bulunması beklenen 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ı üzerine kurulan JWS'yi Doğrulama ve JWS'nin Kodunu Çöz politikaları, bağlam değişkenlerini görürsünüz:

jws.{policy_name}.{variable_name}

Örneğin, politika adı verify-jws ise politika, JWS'de belirtilen algoritmayı kullanın: 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. 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.
header.algorithm JWS'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 JWS oluşturulurken eklenirse Anahtar Kimliği. Ayrıca bkz. "JSON Web Anahtarı Seti Kullanma (JWKS)" JWT ve JWS'de politikalara genel bakış makalesini inceleyebilirsiniz. Daha fazla bilgi için (Anahtar Kimliği) Başlık Parametresi bölümüne bakın.
header.type Başlık türü değeri. Daha fazla bilgi için (Tür) Başlık Parametresi bölümünü inceleyin.
header.name Adlandırılmış başlığın değeri (standart veya ek). Bunlardan biri JWS'nin başlık bölümündeki her ek üstbilgiyi kullanmayın.
header-json JSON biçiminde üstbilgi.
payload JWS'ye eklenmiş bir yük varsa JWS yükü. Ayrı bir yük için bu değişken boştur.
valid VerifyJWS'te, imza doğrulandığında bu değişken "true" (doğru) olacaktır ve 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.

DecodeJWS'de bu değişken ayarlanmaz.

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