Kebijakan VerifyJWS

Halaman ini berlaku untuk Apigee dan Apigee Hybrid.

Lihat dokumentasi Apigee Edge.

ikon kebijakan

Apa

Memverifikasi tanda tangan pada JWS yang diterima dari klien atau sistem lain. Kebijakan ini juga mengekstraksi header ke dalam variabel konteks sehingga kebijakan atau kondisi berikutnya dapat memeriksa nilai tersebut untuk membuat keputusan otorisasi atau perutean. Lihat Ringkasan kebijakan JWS dan JWT untuk pengantar mendetail.

Jika JWS diverifikasi dan valid, permintaan diizinkan untuk dilanjutkan. Jika tanda tangan JWS tidak dapat diverifikasi atau jika JWS tidak valid karena beberapa jenis error, semua pemrosesan akan berhenti dan error akan ditampilkan dalam respons.

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.

Untuk mempelajari bagian-bagian JWS serta cara mengenkripsi dan menandatanganinya, lihat RFC7515.

Video

Tonton video singkat untuk mempelajari cara memverifikasi tanda tangan pada JWS. Meskipun video ini khusus untuk memverifikasi JWT, banyak konsepnya yang sama dengan JWS.

Contoh

Memverifikasi JWS terlampir yang ditandatangani dengan algoritma HS256

Contoh kebijakan ini memverifikasi JWS terlampir yang ditandatangani dengan algoritma enkripsi HS256, HMAC menggunakan checksum SHA-256. JWS diteruskan dalam permintaan proxy menggunakan parameter formulir bernama JWS. Kunci dimuat dalam variabel bernama private.secretkey.

JWS terlampir berisi header, payload, dan tanda tangan yang dienkode:

header.payload.signature

Konfigurasi kebijakan mencakup informasi yang diperlukan Apigee untuk mendekode dan mengevaluasi JWS, seperti tempat menemukan JWS (dalam variabel alur yang ditentukan dalam elemen <Source>), algoritma penandatanganan yang diperlukan, dan tempat menemukan kunci rahasia (disimpan dalam variabel alur Apigee, yang dapat diambil dari KVM Apigee, misalnya).

<VerifyJWS name="JWS-Verify-HS256">
    <DisplayName>JWS Verify HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <Source>request.formparam.JWS</Source>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <SecretKey>
        <Value ref="private.secretkey"/>
    </SecretKey>
</VerifyJWS>

Kebijakan menulis outputnya ke variabel konteks sehingga kebijakan atau kondisi berikutnya di proxy API dapat memeriksa nilai tersebut. Lihat Variabel alur untuk mengetahui daftar variabel yang ditetapkan oleh kebijakan ini.

Memverifikasi JWS terpisah yang ditandatangani dengan algoritma RS256

Contoh kebijakan ini memverifikasi JWS terpisah yang ditandatangani dengan algoritma RS256. Untuk memverifikasi, Anda harus memberikan kunci publik. JWS diteruskan dalam permintaan proxy menggunakan parameter formulir bernama JWS. Kunci publik terdapat dalam variabel bernama public.publickey.

JWS yang terlepas menghilangkan payload dari JWS:

header..signature

Anda dapat meneruskan payload ke kebijakan VerifyJWS dengan menentukan nama variabel yang berisi payload ke elemen <DetachedContent>. Konten yang ditentukan dalam <DetachedContent> harus dalam bentuk asli yang tidak dienkode seperti saat tanda tangan JWS dibuat.

<VerifyJWS name="JWS-Verify-RS256">
    <DisplayName>JWS Verify RS256</DisplayName>
    <Algorithm>RS256</Algorithm>
    <Source>request.formparam.JWS</Source>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <PublicKey>
        <Value ref="public.publickey"/>
    </PublicKey>
    <DetachedContent>private.payload</DetachedContent>
</VerifyJWS>

Kebijakan menulis outputnya ke variabel konteks sehingga kebijakan atau kondisi berikutnya di proxy API dapat memeriksa nilai tersebut. Lihat Variabel alur untuk mengetahui daftar variabel yang ditetapkan oleh kebijakan ini.

Menetapkan elemen utama

Elemen yang Anda gunakan untuk menentukan kunci yang digunakan untuk memverifikasi JWS bergantung pada algoritma yang dipilih, seperti yang ditunjukkan dalam tabel berikut:

Algoritme elemen utama
HS*
<SecretKey>
  <Value ref="private.secretkey"/>
</SecretKey>
RS*, ES*, PS*
<PublicKey>
  <Value ref="rsa_public_key"/>
</PublicKey>

atau:

<PublicKey>
  <JWKS ref="jwks_val_ref_or_url"/>
</PublicKey>
*Untuk mengetahui informasi selengkapnya tentang persyaratan kunci, lihat Tentang algoritma enkripsi tanda tangan.

Referensi elemen

Referensi kebijakan menjelaskan elemen dan atribut kebijakan Verifikasi JWS.

Catatan: Konfigurasi akan sedikit berbeda, bergantung pada algoritma enkripsi yang Anda gunakan. Lihat Contoh untuk contoh yang menunjukkan konfigurasi untuk kasus penggunaan tertentu.

S

Atribut yang berlaku untuk elemen tingkat teratas

<VerifyJWS 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 Apigee 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 pada kebijakan di editor proxy UI Apigee dengan nama bahasa alami yang berbeda.

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

<Algorithm>

<Algorithm>HS256</Algorithm>

Menentukan algoritma enkripsi untuk menandatangani token. Algoritma RS*/PS*/ES* menggunakan pasangan kunci publik/rahasia, sedangkan algoritma HS* menggunakan rahasia bersama. Lihat juga Tentang algoritma enkripsi tanda tangan.

Anda dapat menentukan beberapa nilai yang dipisahkan dengan koma. Misalnya, "HS256, HS512" atau "RS256, PS256". Namun, Anda tidak dapat menggabungkan algoritma HS* dengan algoritma lainnya atau algoritma ES* dengan algoritma lainnya karena algoritma tersebut memerlukan jenis kunci tertentu. Anda dapat menggabungkan algoritma RS* dan PS*.

Default T/A
Kehadiran Wajib
Jenis String nilai yang dipisahkan koma
Nilai yang valid HS256, HS384, HS512, RS256, RS384, RS512, ES256, ES384, ES512, PS256, PS384, PS512

<AdditionalHeaders/Claim>

<AdditionalHeaders>
    <Claim name='claim1'>explicit-value-of-claim-here</Claim>
    <Claim name='claim2' ref='variable-name-here'/>
    <Claim name='claim3' ref='variable-name-here' type='boolean'/>
    <Claim name='claim4' ref='variable-name' type='string' array='true'/>
 </AdditionalHeaders>

Memvalidasi bahwa header JWS berisi pasangan nama/nilai klaim tambahan yang ditentukan dan nilai klaim yang ditegaskan cocok.

Klaim tambahan menggunakan nama yang bukan salah satu nama klaim JWS standar yang terdaftar. Nilai klaim tambahan dapat berupa string, angka, boolean, peta, atau array. Peta hanyalah sekumpulan pasangan nama/nilai. Nilai untuk klaim dari salah satu jenis ini dapat ditentukan secara eksplisit dalam konfigurasi kebijakan, atau secara tidak langsung melalui referensi ke variabel alur.

Default T/A
Kehadiran Opsional
Jenis

String (default), angka, boolean, atau peta.

Jenis defaultnya adalah String jika tidak ada jenis yang ditentukan.

Array Tetapkan ke true untuk menunjukkan apakah nilai adalah array jenis. Default: false
Nilai yang valid Nilai apa pun yang ingin Anda gunakan untuk klaim tambahan.

Elemen <Claim> menggunakan atribut berikut:

  • name - (Wajib) Nama klaim.
  • ref - (Opsional) Nama variabel alur. Jika ada, kebijakan akan menggunakan nilai variabel ini sebagai klaim. Jika atribut ref dan nilai klaim eksplisit ditentukan, nilai eksplisit adalah nilai default, dan digunakan jika variabel alur yang dirujuk tidak terselesaikan.
  • type - (Opsional) Salah satu dari: string (default), angka, boolean, atau peta
  • array - (Opsional) Tetapkan ke true untuk menunjukkan apakah nilai adalah array jenis. Default: false.

<DetachedContent>

<DetachedContent>variable-name-here</DetachedContent>

JWS yang dibuat dengan payload konten berbentuk:

header.payload.signature

Jika Anda menggunakan kebijakan GenerateJWS untuk membuat payload terpisah, JWS yang dihasilkan akan menghilangkan payload dan berbentuk sebagai berikut:

header..signature

Untuk payload yang terpisah, Anda dapat meneruskan payload ke kebijakan VerifyJWS menggunakan elemen <DetachedContent>. Payload konten yang ditentukan harus dalam bentuk asli yang tidak dienkode seperti saat tanda tangan JWS dibuat.

Kebijakan menampilkan error saat:

  • <DetachedContent> ditentukan saat JWS tidak berisi payload konten terpisah (kode error adalah steps.jws.ContentIsNotDetached).
  • <DetachedContent> dihilangkan dan JWS memiliki payload konten terpisah (kode error adalah steps.jws.InvalidSignature).
Default N/A
Kehadiran Opsional
Jenis Referensi variabel

<IgnoreCriticalHeaders>

<IgnoreCriticalHeaders>true|false</IgnoreCriticalHeaders>

Setel ke salah (false) jika Anda ingin kebijakan menampilkan error saat header apa pun yang tercantum dalam header crit JWS tidak tercantum dalam elemen <KnownHeaders>. Setel ke benar (true) agar kebijakan VerifyJWS mengabaikan header crit.

Salah satu alasan untuk menyetel elemen ini ke benar (true) adalah jika Anda berada di lingkungan pengujian dan Anda tidak ingin kebijakan gagal karena header tidak ada.

Default false
Kehadiran Opsional
Jenis Boolean
Nilai yang valid benar atau salah

<IgnoreUnresolvedVariables>

<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>

Setel ke salah (false) jika Anda ingin kebijakan menampilkan error saat variabel yang dirujuk yang ditentukan dalam kebijakan tidak dapat diselesaikan. Setel ke benar (true) untuk memperlakukan variabel yang tidak dapat diselesaikan sebagai string kosong (null).

Default false
Kehadiran Opsional
Jenis Boolean
Nilai yang valid benar atau salah

<KnownHeaders>

<KnownHeaders>a,b,c</KnownHeaders>

or:

<KnownHeaders ref=variable_containing_headers/>

Kebijakan GenerateJWS menggunakan elemen <CriticalHeaders> untuk mengisi header crit dalam token. Contoh:

{
  “typ: “...”,
  “alg” : “...”,
  “crit” : [ “a”, “b”, “c” ],
}

Kebijakan VerifyJWS memeriksa header crit di JWS, jika ada, dan untuk setiap item yang tercantum, kebijakan ini memeriksa apakah elemen <KnownHeaders> juga mencantumkan header tersebut. Elemen <KnownHeaders> dapat berisi superset item yang tercantum dalam crit. Semua header yang tercantum dalam crit harus tercantum dalam elemen <KnownHeaders>. Header apa pun yang ditemukan kebijakan di crit yang tidak tercantum juga di <KnownHeaders> menyebabkan kebijakan VerifyJWS gagal.

Anda dapat mengonfigurasi kebijakan VerifyJWS secara opsional untuk mengabaikan header crit dengan menyetel elemen <IgnoreCriticalHeaders> ke true.

Default T/A
Kehadiran Opsional
Jenis Array string yang dipisahkan koma
Nilai yang valid Array atau nama variabel yang berisi array.

<PublicKey/JWKS>

<!-- Specify the JWKS. -->
<PublicKey>
   <JWKS>jwks-value-here</JWKS>
</PublicKey>

or:

<!-- Specify a variable containing the JWKS. -->
<PublicKey>
   <JWKS ref="public.jwks"/>
</PublicKey>

or:

<!-- Specify a public URL that returns the JWKS.
The URL is static, meaning you cannot set it using a variable. -->
<PublicKey>
   <JWKS uri="jwks-url"/>
</PublicKey>

Menentukan nilai dalam format JWKS (RFC 7517) yang berisi serangkaian kunci publik. Gunakan hanya jika algoritma adalah salah satu dari RS256/RS384/RS512, PS256/PS384/PS512, atau ES256/ES384/ES512.

Jika JWS masuk memiliki ID kunci yang ada dalam set JWKS, maka kebijakan akan menggunakan kunci publik yang benar untuk memverifikasi tanda tangan JWS. Untuk mengetahui detail tentang fitur ini, lihat Menggunakan Kumpulan Kunci Web JSON (JWKS) untuk memverifikasi JWS.

Jika Anda mengambil nilai dari URL publik, Apigee akan menyimpan JWKS dalam cache selama 300 detik. Saat masa berlaku cache berakhir, Apigee akan mengambil JWKS lagi.

Default T/A
Kehadiran Untuk memverifikasi JWS menggunakan algoritma RSA, Anda harus menggunakan elemen JWKS atau Nilai.
Jenis String
Nilai yang valid Variabel alur, nilai string, atau URL.

<PublicKey/Value>

<PublicKey>
   <Value ref="public.publickey"/>
</PublicKey>
-or-
<PublicKey>
    <Value>
    -----BEGIN PUBLIC KEY-----
    MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAw2kPrRzcufvUNHvTH/WW
    Q0UrCw5c0+Y707KX3PpXkZGbtTT4nvU1jC0d1lHV8MfUyRXmpmnNxJHAC2F73IyN
    C5TBtXMORc+us7A2cTtC4gZV256bT4h3sIEMsDl0Joz9K9MPzVPFxa1i0RgNt06n
    Xn/Bs2UbbLlKP5Q1HPxewUDEh0gVMqz9wdIGwH1pPxKvd3NltYGfPsUQovlof3l2
    ALvO7i5Yrm96kknfFEWf1EjmCCKvz2vjVbBb6mp1ZpYfc9MOTZVpQcXSbzb/BWUo
    ZmkDb/DRW5onclGzxQITBFP3S6JXd4LNESJcTp705ec1cQ9Wp2Kl+nKrKyv1E5Xx
    DQIDAQAB
    -----END PUBLIC KEY-----
    </Value>
</PublicKey>

Menentukan kunci publik yang digunakan untuk memverifikasi tanda tangan pada JWS. Gunakan atribut ref untuk meneruskan kunci dalam variabel alur, atau tentukan kunci berenkode PEM secara langsung. Gunakan hanya jika algoritma adalah salah satu dari RS256/RS384/RS512, PS256/PS384/PS512, atau ES256/ES384/ES512.

Default T/A
Kehadiran Untuk memverifikasi JWS yang ditandatangani dengan algoritma RSA, Anda harus menggunakan elemen JWKS atau Nilai.
Jenis String
Nilai yang valid Variabel atau string alur.

<SecretKey>

<SecretKey encoding="base16|hex|base64|base64url" >
  <Value ref="private.your-variable-name"/>
</SecretKey>
  

Menentukan kunci rahasia yang akan digunakan saat memverifikasi JWS yang menggunakan algoritma simetris (HS*), salah satunya HS256, HS384, atau HS512.

Elemen ini bersifat opsional. Namun, Anda harus menyertakan tepat satu elemen <PublicKey> atau <SecretKey>. Gunakan elemen <PublicKey> saat memverifikasi JWS yang algoritmanya adalah RS*, PS*, atau ES*, dan gunakan elemen <SecretKey> saat memverifikasi JWS yang algoritmanya adalah HS*.

Anak-anak <SecretKey>

Tabel berikut memberikan deskripsi elemen turunan dan atribut <SecretKey>:

Anak Kehadiran Deskripsi
encoding (atribut) Opsional

Menentukan cara kunci dienkode dalam variabel yang dirujuk. Secara default, jika tidak ada atribut encoding, encoding kunci akan diperlakukan sebagai UTF-8. Nilai yang valid untuk atribut ini adalah: hex, base16, base64, atau base64url. Nilai encoding hex dan base16 adalah sinonim.

<SecretKey encoding="base64" >
  <Value ref="private.secretkey"/>
</SecretKey>

Pada contoh di atas, karena encoding-nya adalah base64, jika konten variabel private.secretkey adalah SUxvdmVBUElz, kunci akan didekode sebagai set 9 byte, yang dalam hex akan menjadi 49 4c 6f 76 65 41 50 49 73.

Nilai (elemen) Wajib

Kunci rahasia yang dienkode. Menentukan kunci rahasia yang akan digunakan untuk memverifikasi payload. Gunakan atribut ref untuk memberikan kunci secara tidak langsung melalui variabel, seperti private.secret-key .

<SecretKey>
  <Value ref="private.my-secret-variable"/>
</SecretKey>

Apigee menerapkan kekuatan kunci minimum untuk algoritma HS256/HS384/HS512. Panjang kunci minimum untuk HS256 adalah 32 byte, untuk HS384 adalah 48 byte, dan untuk HS512 adalah 64 byte. Menggunakan kunci dengan kekuatan yang lebih rendah akan menyebabkan error runtime.

<Source>

<Source>JWS-variable</Source>

Jika ada, menentukan variabel alur tempat kebijakan mengharapkan untuk menemukan JWS yang akan diverifikasi.

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.

<Type>

<Type>type-string-here</Type>

Elemen opsional yang hanya memiliki nilai Signed yang diizinkan, yang menentukan bahwa kebijakan memverifikasi JWS bertanda tangan. <Type> disediakan hanya untuk mencocokkan elemen yang sesuai untuk kebijakan GenerateJWT dan VerifyJWT (yang dapat mengambil salah satu nilai Signed atau Encrypted).

Default T/A
Kehadiran Opsional
Jenis String
Nilai yang valid Signed

Flow variables

Upon success, the Verify JWS and Decode JWS policies set context variables according to this pattern:

jws.{policy_name}.{variable_name}

For example, if the policy name is verify-jws, then the policy will store the algorithm specified in the JWS to this context variable: jws.verify-jws.header.algorithm

Variable name Description
decoded.header.name The JSON-parsable value of a header in the payload. One variable is set for every header in the payload. While you can also use the header.name flow variables, this is the recommended variable to use to access a header.
header.algorithm The signing algorithm used on the JWS. For example, RS256, HS384, and so on. See (Algorithm) Header Parameter for more.
header.kid The Key ID, if added when the JWS was generated. See also "Using a JSON Web Key Set (JWKS)" at JWT and JWS policies overview to verify a JWS. See (Key ID) Header Parameter for more.
header.type The header type value. See (Type) Header Parameter for more.
header.name The value of the named header (standard or additional). One of these will be set for every additional header in the header portion of the JWS.
header-json The header in JSON format.
payload The JWS payload if the JWS has an attached payload. For a detached paylod, this variable is empty.
valid In the case of VerifyJWS, this variable will be true when the signature is verified, and the current time is before the token expiry, and after the token notBefore value, if they are present. Otherwise false.

In the case of DecodeJWS, this variable is not set.

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 dijalankan.

Kode kerusakan Status HTTP Terjadi saat
steps.jws.AlgorithmInTokenNotPresentInConfiguration 401 Terjadi saat kebijakan verifikasi memiliki beberapa algoritma
steps.jws.AlgorithmMismatch 401 Algoritma yang ditentukan di header oleh kebijakan Generate tidak cocok dengan algoritma yang diharapkan dalam kebijakan Verify. Algoritma yang ditentukan harus cocok.
steps.jws.ContentIsNotDetached 401 <DetachedContent> ditentukan jika JWS tidak berisi payload konten yang terpisah.
steps.jws.FailedToDecode 401 Kebijakan tidak dapat mendekode JWS. JWS mungkin rusak.
steps.jws.InsufficientKeyLength 401 Untuk kunci kurang dari 32 byte untuk algoritma HS256
steps.jws.InvalidClaim 401 Untuk klaim yang tidak ada atau ketidakcocokan klaim, atau header yang tidak ada atau ketidakcocokan header.
steps.jws.InvalidCurve 401 Kurva yang ditentukan oleh kunci tidak valid untuk algoritma Elliptic Curve.
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.KeyIdMissing 401 Kebijakan Verify menggunakan JWKS sebagai sumber untuk kunci publik, tetapi JWS yang ditandatangani tidak menyertakan properti kid di header.
steps.jws.KeyParsingFailed 401 Kunci publik tidak dapat diuraikan dari informasi kunci yang diberikan.
steps.jws.MissingPayload 401 Payload JWS tidak ada.
steps.jws.NoAlgorithmFoundInHeader 401 Terjadi saat JWS menghilangkan header algoritma.
steps.jws.NoMatchingPublicKey 401 Kebijakan Verify menggunakan JWKS sebagai sumber untuk kunci publik, tetapi kid dalam JWS yang ditandatangani tidak tercantum dalam JWKS.
steps.jws.UnhandledCriticalHeader 401 Header yang ditemukan oleh kebijakan Verifikasi JWS di header crit tidak tercantum dalam KnownHeaders.
steps.jws.UnknownException 401 Terjadi pengecualian yang tidak diketahui.
steps.jws.WrongKeyType 401 Jenis kunci yang ditentukan salah. Misalnya, jika Anda menentukan kunci RSA untuk algoritma Elliptic Curve, atau kunci kurva untuk algoritma RSA.

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.

Fault variables

These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors.

Variables Where Example
fault.name="fault_name" fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "TokenExpired"
JWS.failed All JWS policies set the same variable in the case of a failure. jws.JWS-Policy.failed = true

Example error response

For error handling, the best practice is to trap the errorcode part of the error response. Do not rely on the text in the faultstring, because it could change.

Example fault rule

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