Kebijakan DecodeJWS

Halaman ini berlaku untuk Apigee dan Apigee Hybrid.

Lihat dokumentasi Apigee Edge.

ikon kebijakan

Apa

Mendekode header JWS tanpa memverifikasi tanda tangan pada 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 terlampir, seperti dalam bentuk:

header.payload.signature

Atau, JWS dapat menghilangkan payload, yang disebut payload terpisah, 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 mengetahui informasi tentang jenis kebijakan dan implikasi penggunaannya, lihat Jenis kebijakan.

Video

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

Contoh: Mendekode JWS

Kebijakan yang ditampilkan di bawah mendekode JWS yang ditemukan dalam variabel alur var.JWS. Variabel ini harus ada dan berisi JWS yang layak (dapat didekode). Kebijakan 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 bernama:

jws.policy-name.header.header-name

Jika JWS memiliki payload terlampir, maka JWS akan menetapkan variabel alur jws.policy-name.header.payload ke payload. Untuk payload yang terlepas, 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 diterapkan ke elemen tingkat teratas

<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 menerapkan batasan tambahan, seperti menghapus karakter yang bukan alfanumerik secara otomatis.

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

T/A Wajib
continueOnError Disetel ke false untuk menampilkan error saat kebijakan gagal. Hal ini adalah perilaku yang diharapkan untuk sebagian besar kebijakan.

Setel ke true agar eksekusi alur berlanjut meskipun kebijakan gagal.

false Opsional
diaktifkan Tetapkan ke true untuk menerapkan kebijakan.

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

true Opsional
asinkron 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
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 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.

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