DecodeJWS politikası

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

Ne?

JWS'de imzayı doğrulamadan JWS üstbilgisinin kodunu çözer ve her başlığı bir akış değişkenidir. Bu politika en çok VerifyJWS politikasıyla uyumlu olarak kullanıldığında işe yarar. JWS'deki bir üstbilginin değerinin bilinmesi gerektiğinden JWS'nin imzası doğrulanmalıdır.

Bir JWS'nin yükü aşağıdaki gibi eklenmiş bir yüke sahip olabilir:

header.payload.signature

Alternatif olarak, JWS, ayrılmış yük adı verilen yükü atlayarak ş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ı ayrıca JWS'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ış sayfasına göz atın. ve JWS biçimine genel bakış.

Video

JWT'nin kodunu nasıl çözeceğinizi öğrenmek için kısa bir video izleyin. Bu video, JWT'ye özgü birçok kavram JWS'de aynıdır.

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

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

JWS'nin başlık bölümündeki her başlık için politika, ş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 yüke eklenir. Çıkarılan yük için payload boş olur. Bu politika tarafından ayarlanan değişkenlerin tam listesi için Akış değişkenleri bölümüne bakın.

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

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

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

<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 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 uygulanabilir.

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

Varsa politikanın JWS'yi bulmayı beklediği akış değişkenini belirtir. çö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ı

Flow variables

Upon success, the Verify JWS and Decode JWS policies set context variables according to this pattern:

jws.{policy_name}.{variable_name}

For example, if the policy name is verify-jws, then the policy will store the algorithm specified in the JWS to this context variable: jws.verify-jws.header.algorithm

Variable name Description
decoded.header.name The JSON-parsable value of a header in the payload. One variable is set for every header in the payload. While you can also use the header.name flow variables, this is the recommended variable to use to access a header.
header.algorithm The signing algorithm used on the JWS. For example, RS256, HS384, and so on. See (Algorithm) Header Parameter for more.
header.kid The Key ID, if added when the JWS was generated. See also "Using a JSON Web Key Set (JWKS)" at JWT and JWS policies overview to verify a JWS. See (Key ID) Header Parameter for more.
header.type The header type value. See (Type) Header Parameter for more.
header.name The value of the named header (standard or additional). One of these will be set for every additional header in the header portion of the JWS.
header-json The header in JSON format.
payload The JWS payload if the JWS has an attached payload. For a detached payload, this variable is empty.
valid In the case of VerifyJWS, this variable will be true when the signature is verified, and the current time is before the token expiry, and after the token notBefore value, if they are present. Otherwise false.

In the case of DecodeJWS, this variable is not set.

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>