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 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 |
T/A | Wajib |
continueOnError |
Tetapkan ke false untuk menampilkan error saat kebijakan gagal. Diharapkan
untuk sebagian besar kebijakan.
Setel ke |
salah | Opsional |
diaktifkan |
Setel ke true untuk menerapkan kebijakan.
Setel ke |
benar | Opsional |
asinkron | Atribut ini tidak digunakan lagi. | salah | 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 menghapus elemen ini, nilai atribut nama kebijakan akan digunakan. |
Kehadiran | Opsional |
Jenis | String |
<Source>
<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 . |
|
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>