Halaman ini berlaku untuk Apigee dan Apigee hybrid.
Lihat dokumentasi Apigee Edge.
Apa
Mendekode header JWS tanpa memverifikasi tanda tangan di JWS, dan menulis setiap header ke variabel alur. Kebijakan ini paling berguna jika digunakan bersama dengan kebijakan VerifyJWS, saat nilai header dari dalam JWS harus diketahui sebelum memverifikasi tanda tangan JWS.
JWS dapat memiliki payload yang disertakan, seperti dalam bentuk:
header.payload.signature
Atau, JWS dapat menghilangkan payload, yang disebut payload terlepas, dan berbentuk:
header..signature
Kebijakan DecodeJWS berfungsi dengan kedua bentuk tersebut 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 adalah Kebijakan yang dapat diperluas dan penggunaan kebijakan ini mungkin memiliki implikasi biaya atau penggunaan, bergantung pada lisensi Apigee Anda. Untuk 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 konsepnya yang sama untuk JWS.
Contoh: Mendekode JWS
Kebijakan yang ditampilkan di bawah mendekode JWS yang ditemukan di variabel alur var.JWS. Variabel ini harus ada dan berisi JWS yang valid (dapat didekode). 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 menetapkan variabel alur yang bernama:
jws.policy-name.header.header-name
Jika JWS memiliki payload yang terpasang, JWS akan menetapkan variabel aliran jws.policy-name.header.payload
ke payload. Untuk payload yang 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 tingkat atas
<DecodeJWS name="JWS" continueOnError="false" enabled="true" async="false">
Atribut berikut bersifat 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 menerapkan batasan tambahan, seperti menghapus karakter yang bukan alfanumerik secara otomatis.
Secara opsional, gunakan elemen |
T/A | Wajib |
continueOnError |
Tetapkan ke false untuk menampilkan error saat kebijakan gagal. Perilaku ini wajar terjadi untuk sebagian besar kebijakan.
Tetapkan ke |
false | Opsional |
diaktifkan |
Tetapkan ke true untuk menerapkan kebijakan.
Tetapkan ke |
benar | Opsional |
asinkron | Atribut ini tidak digunakan lagi. | false | Tidak digunakan lagi |
<DisplayName>
<DisplayName>Policy Display Name</DisplayName>
Gunakan selain atribut nama untuk memberi label pada 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 |
Jenis | String |
<Source>
<Source>JWS-variable</Source>
Jika ada, menentukan variabel alur tempat kebijakan mengharapkan untuk menemukan JWS yang akan didekode.
Default | request.header.authorization (Lihat catatan di atas untuk mengetahui informasi penting
tentang setelan default). |
Kehadiran | Opsional |
Jenis | String |
Nilai yang valid | Nama variabel alur Apigee |
Variabel alur
Setelah berhasil, kebijakan Verify JWS dan Decode JWS akan menetapkan variabel konteks sesuai dengan pola ini:
jws.{policy_name}.{variable_name}
Misalnya, jika nama kebijakan adalah verify-jws
, kebijakan 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 , variabel ini direkomendasikan untuk digunakan guna mengakses header. |
header.algorithm |
Algoritme penandatanganan yang digunakan di JWS. Misalnya, RS256, HS384, dan sebagainya. Lihat Parameter Header(Algoritma) untuk mengetahui informasi selengkapnya. |
header.kid |
ID Kunci, jika ditambahkan saat JWS dibuat. Lihat juga "Menggunakan Set Kunci Web JSON (JWKS)" di ringkasan kebijakan JWT dan JWS untuk memverifikasi JWS. Lihat Parameter Header(ID Kunci) untuk mengetahui informasi selengkapnya. |
header.type |
Nilai jenis header. Lihat (Type) Header Parameter untuk mengetahui informasi selengkapnya. |
header.name |
Nilai header bernama (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 terlampir. Untuk payload yang terpisah, variabel ini kosong. |
valid |
Dalam kasus VerifyJWS, variabel ini akan bernilai benar saat tanda tangan diverifikasi, dan
waktu saat ini sebelum masa berlaku token, dan setelah nilai notBefore token, jika
ada. Jika tidak, flag akan bernilai salah.
Dalam kasus DecodeJWS, variabel ini tidak ditetapkan. |
Referensi error
Bagian ini menjelaskan kode error dan pesan error yang ditampilkan serta variabel error yang ditetapkan oleh Apigee saat kebijakan ini memicu error. Informasi ini penting untuk diketahui jika Anda mengembangkan aturan error untuk menangani error. Untuk mempelajari lebih lanjut, lihat Yang perlu Anda ketahui tentang error kebijakan dan Menangani error.
Error runtime
Error ini dapat terjadi saat kebijakan dieksekusi.
Kode kerusakan | Status HTTP | Terjadi saat |
---|---|---|
steps.jws.FailedToDecode |
401 |
Kebijakan tidak dapat mendekode JWS. JWS mungkin rusak. |
steps.jws.FailedToResolveVariable |
401 |
Terjadi saat variabel alur yang ditentukan dalam elemen <Source>
kebijakan tidak ada. |
steps.jws.InvalidClaim |
401 |
Untuk klaim yang tidak ada atau ketidakcocokan klaim, atau header yang tidak ada atau ketidakcocokan header. |
steps.jws.InvalidJsonFormat |
401 |
JSON 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 yang 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 error
Variabel ini ditetapkan saat error runtime terjadi. Untuk mengetahui informasi selengkapnya, lihat Yang perlu Anda ketahui tentang error kebijakan.
Variabel | Dari mana | Contoh |
---|---|---|
fault.name="fault_name" |
fault_name adalah nama error, seperti yang tercantum dalam tabel Runtime errors di atas. Nama error adalah bagian terakhir dari kode error. | 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 menangkap bagian errorcode
dari respons error. Jangan mengandalkan teks di faultstring
, karena teks tersebut dapat berubah.
Contoh aturan error
<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>