Kebijakan DecodeJWS

Halaman ini berlaku untuk Apigee dan Apigee hybrid.

Lihat Dokumentasi Apigee Edge.

ikon kebijakan

Apa

Mendekode header JWS tanpa memverifikasi tanda tangan di JWS, dan menulis setiap header variabel flow. Kebijakan ini paling berguna jika digunakan bersama dengan kebijakan VerifikasiJWS, ketika nilai {i>header<i} dari dalam JWS harus diketahui sebelum memverifikasi tanda tangan JWS.

JWS dapat memiliki payload yang terlampir, seperti dalam bentuk:

header.payload.signature

Atau, JWS dapat menghilangkan payload, yang disebut payload detached, dan berformat:

header..signature

Kebijakan DecodeJWS berfungsi dengan kedua formulir karena hanya mendekode bagian header JWS. Kebijakan DecodeJWS juga berfungsi terlepas dari algoritma yang digunakan untuk menandatangani JWS.

Lihat ringkasan kebijakan JWS dan JWT untuk pengantar mendetail dan gambaran umum tentang format JWS.

Kebijakan ini merupakan Kebijakan yang dapat diperluas dan penggunaan kebijakan ini mungkin menimbulkan biaya atau implikasi penggunaan, bergantung pada lisensi Apigee Anda. Untuk mengetahui informasi tentang jenis kebijakan dan implikasi penggunaan, lihat Jenis kebijakan.

Video

Tonton video singkat untuk mempelajari cara mendekode JWT. Meskipun video ini khusus untuk JWT, banyak konsep yang sama untuk JWS.

Contoh: Mendekode JWS

Kebijakan yang ditampilkan di bawah mendekode JWS yang ditemukan dalam variabel alur var.JWS. Ini variabel harus ada dan berisi JWS yang layak (dapat didekode). Kebijakan ini dapat memperoleh JWS dari variabel {i>flow<i} apa pun.

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

Untuk setiap header di bagian header JWS, kebijakan tersebut akan menetapkan variabel alur bernama:

jws.policy-name.header.header-name

Jika JWS memiliki payload yang terpasang, JWS akan menetapkan jws.policy-name.header.payload variabel {i>flow<i} ke payload. Untuk payload yang dilepas, payload kosong. Lihat Variabel flow untuk mengetahui daftar lengkap variabel yang ditetapkan oleh kebijakan ini.

Referensi elemen untuk Decode JWS

Referensi kebijakan menjelaskan elemen dan atribut kebijakan Dekode JWS.

Atribut yang diterapkan pada elemen tingkat atas

<DecodeJWS name="JWS" continueOnError="false" enabled="true" async="false">

Atribut berikut umum untuk semua elemen induk kebijakan.

Atribut Deskripsi Default Kehadiran
nama Nama internal kebijakan. Karakter yang dapat Anda gunakan dalam nama dibatasi untuk: A-Z0-9._\-$ %. Namun, UI Apigee memberlakukan tertentu, seperti menghapus karakter yang bukan alfanumerik secara otomatis.

Secara opsional, gunakan elemen <displayname></displayname> untuk melabeli kebijakan di editor proxy UI pengelolaan dengan bahasa natural nama.

T/A Wajib
continueOnError Tetapkan ke false untuk menampilkan error saat kebijakan gagal. Diharapkan untuk sebagian besar kebijakan.

Setel ke true agar eksekusi alur dapat dilanjutkan bahkan setelah kebijakan gagal.

salah Opsional
diaktifkan Setel ke true untuk menerapkan kebijakan.

Setel ke false untuk "matikan" kebijakan tersebut. Kebijakan ini tidak akan diterapkan bahkan jika data itu tetap terlampir pada aliran.

benar Opsional
asinkron Atribut ini tidak digunakan lagi. salah Tidak digunakan lagi

&lt;DisplayName&gt;

<DisplayName>Policy Display Name</DisplayName>

Gunakan selain atribut nama untuk memberi label kebijakan di editor proxy UI pengelolaan dengan nama natural language yang berbeda.

Default Jika Anda menghapus elemen ini, nilai atribut nama kebijakan akan digunakan.
Kehadiran Opsional
Jenis String

&lt;Source&gt;

<Source>JWS-variable</Source>

Jika ada, tentukan variabel alur yang diharapkan oleh kebijakan untuk menemukan JWS melakukan dekode.

Default request.header.authorization (Lihat catatan di atas untuk mengetahui informasi penting tentang {i>default<i}).
Kehadiran Opsional
Jenis String
Nilai yang valid Nama variabel flow Apigee

Variabel alur

Setelah berhasil, kebijakan Verify JWS dan Decode JWS menetapkan variabel konteks sesuai dengan pola ini:

jws.{policy_name}.{variable_name}

Misalnya, jika nama kebijakan adalah verify-jws, kebijakan tersebut akan menyimpan algoritma yang ditentukan dalam JWS ke variabel konteks ini: jws.verify-jws.header.algorithm

Nama variabel Deskripsi
decoded.header.name Nilai header yang dapat diuraikan JSON dalam payload. Satu variabel ditetapkan untuk setiap header dalam payload. Meskipun Anda juga dapat menggunakan variabel alur header.name, ini adalah variabel yang direkomendasikan untuk mengakses header.
header.algorithm Algoritma penandatanganan yang digunakan pada JWS. Misalnya, RS256, HS384, dan sebagainya. Lihat Parameter Header(Algoritme) untuk mengetahui informasi selengkapnya.
header.kid ID Kunci, jika ditambahkan saat JWS dibuat. Lihat juga "Menggunakan Kumpulan Kunci Web JSON (JWKS)" di ringkasan kebijakan JWT dan JWS untuk memverifikasi JWS. Lihat Parameter Header(Key ID) untuk informasi selengkapnya.
header.type Nilai jenis header. Lihat Parameter Header(Jenis) untuk mengetahui informasi selengkapnya.
header.name Nilai header yang diberi nama (standar atau tambahan). Salah satunya akan ditetapkan untuk setiap header tambahan di bagian header JWS.
header-json Header dalam format JSON.
payload Payload JWS jika JWS memiliki payload yang terpasang. Untuk paylod yang terpisah, variabel ini kosong.
valid Dalam kasus VerifyJWS, variabel ini akan bernilai benar (true) saat tanda tangan diverifikasi, dan waktu saat ini adalah sebelum masa berlaku token berakhir, dan setelah nilai notBefore token, jika ada. Sebaliknya, salah.

Dalam kasus DecodeJWS, variabel ini belum ditetapkan.

Referensi error

This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee 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 Occurs when
steps.jws.FailedToDecode 401 The policy was unable to decode the JWS. The JWS is possibly corrupted.
steps.jws.FailedToResolveVariable 401 Occurs when the flow variable specified in the <Source> element of the policy does not exist.
steps.jws.InvalidClaim 401 For a missing claim or claim mismatch, or a missing header or header mismatch.
steps.jws.InvalidJsonFormat 401 Invalid JSON found in the JWS header.
steps.jws.InvalidJws 401 This error occurs when the JWS signature verification fails.
steps.jws.InvalidPayload 401 The JWS payload is invalid.
steps.jws.InvalidSignature 401 <DetachedContent> is omitted and the JWS has a detached content payload.
steps.jws.MissingPayload 401 The JWS payload is missing.
steps.jws.NoAlgorithmFoundInHeader 401 Occurs when the JWS omits the algorithm header.
steps.jws.UnknownException 401 An unknown exception occurred.

Deployment errors

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

Error name Occurs when
InvalidAlgorithm The only valid values are: 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

Other possible deployment errors.

Variabel kesalahan

Variabel ini ditetapkan saat terjadi error runtime. Untuk informasi selengkapnya, lihat Yang perlu Anda ketahui tentang error kebijakan.

Variabel Dari mana Contoh
fault.name="fault_name" fault_name adalah nama kesalahan, seperti yang tercantum dalam tabel Error runtime di atas. Nama kesalahan adalah bagian terakhir dari kode kesalahan. fault.name Matches "TokenExpired"
JWS.failed Semua kebijakan JWS menetapkan variabel yang sama jika terjadi kegagalan. jws.JWS-Policy.failed = true

Contoh respons error

Untuk penanganan error, praktik terbaiknya adalah menjebak bagian errorcode dari respons error. Jangan mengandalkan teks di faultstring, karena dapat berubah.

Contoh aturan kesalahan

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