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 |
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 |
false | İsteğe bağlı |
etkin |
Politikayı uygulamak için true değerine ayarlayın.
Politikayı "devre dışı bırakmak" için |
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. |
|
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>