Anda sedang melihat dokumentasi Apigee Edge.
Buka
dokumentasi Apigee X. info
Apa
Mendekode header JWS tanpa memverifikasi tanda tangan di JWS, dan menulis setiap header ke variabel flow. Kebijakan ini paling berguna jika digunakan bersamaan dengan kebijakan VerifyJWS, yaitu 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 terperinci dan ringkasan format JWS.
Video
Tonton video singkat untuk mempelajari cara mendekode JWT. Meskipun video ini khusus untuk JWT, banyak konsepnya yang sama untuk JWS.
Contoh: Mendekode JWS
Kebijakan yang ditampilkan di bawah mendekode JWS yang ditemukan dalam variabel flow var.JWS. Variabel ini harus ada dan berisi JWS yang valid (dapat didekorasi). Kebijakan ini dapat memperoleh JWS dari variabel flow 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 bernama:
jws.policy-name.header.header-name
Jika memiliki payload yang terpasang, JWS akan menetapkan variabel alur jws.policy-name.header.payload
ke payload. Untuk payload yang terlepas, 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 Decode JWS.
Atribut yang diterapkan pada elemen tingkat 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 digunakan dalam nama dibatasi untuk:
A-Z0-9._\-$ % . Namun, UI pengelolaan Edge menerapkan pembatasan
tambahan, seperti otomatis menghapus karakter yang bukan alfanumerik.
Atau, gunakan elemen |
T/A | Wajib |
continueOnError |
Setel ke false untuk menampilkan error jika kebijakan gagal. Ini adalah perilaku
yang wajar untuk sebagian besar kebijakan.
Setel ke |
false | Opsional |
diaktifkan |
Setel ke true untuk menerapkan kebijakan.
Setel ke |
true | Opsional |
async | Atribut ini sudah 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 natural-language yang berbeda.
Default | Jika Anda menghilangkan elemen ini, nilai atribut nama kebijakan akan digunakan. |
Kehadiran | Opsional |
Jenis | String |
<Sumber>
<Source>JWS-variable</Source>
Jika ada, tentukan variabel flow tempat kebijakan diperkirakan akan menemukan JWS yang akan didekode.
Default | request.header.authorization (Lihat catatan di atas untuk informasi penting
tentang default). |
Kehadiran | Opsional |
Jenis | String |
Nilai yang valid | Nama variabel alur Edge |
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 payload terlepas, 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 Edge 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. |
|
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>