Kebijakan DecodeJWS

Halaman ini berlaku untuk Apigee dan Apigee Hybrid.

Baca dokumentasi Apigee Edge.

ikon kebijakan

Apa

Mendekode header JWS tanpa memverifikasi tanda tangan di JWS, dan menulis setiap header ke variabel flow. Kebijakan ini paling berguna saat digunakan bersama dengan kebijakan VerifyJWS, ketika nilai header dari dalam JWS harus diketahui sebelum memverifikasi tanda tangan JWS.

JWS dapat memiliki payload terlampir, seperti dalam bentuk:

header.payload.signature

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

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 ringkasan format JWS.

Kebijakan ini merupakan Kebijakan yang dapat diperluas, dan penggunaan kebijakan ini mungkin memiliki implikasi biaya atau pemanfaatan, 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 ini mendekode JWS yang ditemukan dalam variabel alur var.JWS. Variabel ini harus ada dan berisi JWS yang dapat di-degradasi. Kebijakan ini dapat memperoleh JWS dari variabel alur 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 menyetel variabel flow dengan nama:

jws.policy-name.header.header-name

Jika JWS memiliki payload yang terpasang, JWS akan menetapkan variabel alur jws.policy-name.header.payload ke payload tersebut. Untuk payload terpisah, payload kosong. Lihat Variabel alur untuk mengetahui daftar lengkap variabel yang ditetapkan oleh kebijakan ini.

Referensi elemen untuk Decode JWS

Referensi kebijakan menjelaskan elemen dan atribut kebijakan Decode JWS.

Atribut yang berlaku untuk elemen level atas

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

Atribut berikut bersifat umum untuk semua elemen induk kebijakan.

Atribut Deskripsi Default Kehadiran
name Nama internal kebijakan. Karakter yang dapat Anda gunakan dalam nama dibatasi untuk: A-Z0-9._\-$ %. Namun, UI Apigee menerapkan pembatasan tambahan, misalnya penghapusan otomatis karakter yang bukan alfanumerik.

Atau, gunakan elemen <displayname></displayname> untuk memberi label kebijakan di editor proxy UI pengelolaan dengan nama bahasa alami yang berbeda.

T/A Diperlukan
continueOnError Setel ke false untuk menampilkan error jika kebijakan gagal. Ini adalah perilaku yang wajar untuk sebagian besar kebijakan.

Setel ke true agar eksekusi alur berlanjut bahkan setelah kebijakan gagal.

false Opsional
diaktifkan Setel ke true untuk menerapkan kebijakan.

Setel ke false untuk "menonaktifkan" kebijakan. Kebijakan tidak akan diterapkan meskipun tetap melekat pada alur.

true Opsional
async Atribut ini tidak digunakan lagi. false Tidak digunakan lagi

<DisplayName>

<DisplayName>Policy Display Name</DisplayName>

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

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

<Sumber>

<Source>JWS-variable</Source>

Jika ada, tentukan variabel flow yang diharapkan kebijakan untuk menemukan JWS yang akan didekode.

Default request.header.authorization (Lihat catatan di atas untuk informasi penting tentang default).
Kehadiran Opsional
Type 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

Bagian ini menjelaskan kode kesalahan dan pesan error yang ditampilkan dan variabel kesalahan yang disetel oleh Apigee saat kebijakan ini memicu error. Informasi ini penting untuk diketahui apakah Anda mengembangkan aturan kesalahan untuk menangani kesalahan. Untuk mempelajari lebih lanjut, lihat Yang perlu Anda ketahui tentang error kebijakan dan Menangani kesalahan.

Error runtime

Error ini dapat terjadi saat kebijakan dieksekusi.

Kode kesalahan Status HTTP Terjadi saat
steps.jws.FailedToDecode 401 Kebijakan tidak dapat mendekode JWS. JWS mungkin rusak.
steps.jws.FailedToResolveVariable 401 Terjadi saat variabel flow yang ditentukan dalam elemen <Source> kebijakan tidak ada.
steps.jws.InvalidClaim 401 Karena klaim atau klaim tidak cocok, atau ketidakcocokan header atau header tidak ada.
steps.jws.InvalidJsonFormat 401 JSON yang tidak valid ditemukan di header JWS.
steps.jws.InvalidJws 401 Error ini terjadi saat verifikasi tanda tangan JWS gagal.
steps.jws.InvalidPayload 401 Payload JWS tidak valid.
steps.jws.InvalidSignature 401 <DetachedContent> dihilangkan dan JWS memiliki payload konten terpisah.
steps.jws.MissingPayload 401 Payload JWS tidak ada.
steps.jws.NoAlgorithmFoundInHeader 401 Terjadi saat JWS menghilangkan header algoritma.
steps.jws.UnknownException 401 Terjadi pengecualian yang tidak diketahui.

Error saat deployment

Error ini dapat terjadi saat Anda men-deploy proxy yang berisi kebijakan ini.

Nama error Terjadi saat
InvalidAlgorithm Satu-satunya nilai yang valid adalah: 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

Kemungkinan error deployment lainnya.

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>