นโยบาย GenerateJWS

คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X
info

อะไร

สร้าง JWS ที่ลงนามแล้วพร้อมชุดการอ้างสิทธิ์ที่กำหนดค่าได้ จากนั้นจะส่งคืน JWS ไปยัง ไคลเอ็นต์ ส่งไปยังเป้าหมายแบ็กเอนด์ หรือใช้ในวิธีอื่นๆ ได้ ดูข้อมูลเบื้องต้นโดยละเอียดได้ที่ภาพรวมนโยบาย JWS และ JWT

ดูข้อมูลเกี่ยวกับส่วนต่างๆ ของ JWS รวมถึงวิธีเข้ารหัสและลงนามได้ที่ RFC7515

วิดีโอ

ดูวิดีโอสั้นๆ เพื่อดูวิธีสร้าง JWT ที่ลงชื่อแล้ว แม้ว่าวิดีโอนี้จะ เฉพาะเจาะจงในการสร้าง JWT แต่แนวคิดหลายอย่างก็เหมือนกับ JWS

ตัวอย่าง

สร้าง JWS ที่แนบมาซึ่งลงนามด้วยอัลกอริทึม HS256

นโยบายตัวอย่างนี้จะสร้าง JWS ที่แนบมาและลงนามโดยใช้อัลกอริทึม HS256 HS256 อาศัย ข้อมูลลับที่ใช้ร่วมกันทั้งสำหรับการลงนามและยืนยันลายเซ็น

JWS ที่แนบมามีส่วนหัว เพย์โหลด และลายเซ็นที่เข้ารหัส

header.payload.signature

ตั้งค่า <DetachContent> เป็น true เพื่อสร้างเนื้อหาที่แยกออกมา ดูข้อมูลเพิ่มเติมเกี่ยวกับโครงสร้างและรูปแบบของ JWS ได้ที่ส่วนต่างๆ ของ JWS/JWT

ใช้องค์ประกอบ <Payload> เพื่อระบุเพย์โหลด JWS ดิบที่ไม่ได้เข้ารหัส ในตัวอย่างนี้ ตัวแปรมีเพย์โหลด เมื่อมีการทริกเกอร์การดำเนินการตามนโยบายนี้ Edge จะเข้ารหัสส่วนหัวและเพย์โหลดของ JWS จากนั้นเพิ่มลายเซ็นที่เข้ารหัสเพื่อลงนาม JWS แบบดิจิทัล

การกำหนดค่านโยบายด้านล่างจะสร้าง JWS จากเพย์โหลดที่มีอยู่ในตัวแปร private.payload

<GenerateJWS name="JWS-Generate-HS256">
    <DisplayName>JWS Generate HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <SecretKey>
        <Value ref="private.secretkey"/>
        <Id>1918290</Id>
    </SecretKey>
    <Payload ref="private.payload" />
    <OutputVariable>jws-variable</OutputVariable>
</GenerateJWS>

สร้าง JWS ที่แยกออกมาซึ่งลงนามด้วยอัลกอริทึม RS256

นโยบายตัวอย่างนี้จะสร้าง JWS ที่แยกออกมาและลงนามโดยใช้อัลกอริทึม RS256 การสร้างลายเซ็น RS256 ต้องใช้คีย์ส่วนตัว RSA ซึ่งต้องระบุในรูปแบบที่เข้ารหัส PEM

JWS ที่แยกออกจะละเว้นเพย์โหลดจาก JWS

header..signature

ใช้องค์ประกอบ <Payload> เพื่อระบุเพย์โหลด JWS ดิบที่ไม่ได้เข้ารหัส เมื่อนโยบายนี้ทริกเกอร์ Edge จะเข้ารหัสส่วนหัวและเพย์โหลดของ JWS แล้วใช้ส่วนหัวและเพย์โหลดดังกล่าวเพื่อสร้างลายเซ็นที่เข้ารหัส อย่างไรก็ตาม JWS ที่สร้างขึ้นจะไม่มีเพย์โหลด คุณต้องส่งเพย์โหลดไปยังนโยบาย VerifyJWS โดยใช้ <DetachedContent> ของนโยบาย VerifyJWS

<GenerateJWS name="JWS-Generate-RS256">
    <DisplayName>JWS Generate RS256</DisplayName>
    <Algorithm>RS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <PrivateKey>
        <Value ref="private.privatekey"/>
        <Password ref="private.privatekey-password"/>
        <Id ref="private.privatekey-id"/>
    </PrivateKey>
    <Payload ref="private.payload" />
    <DetachContent>true</DetachContent>
    <OutputVariable>jws-variable</OutputVariable>
</GenerateJWS>

การตั้งค่าองค์ประกอบหลัก

องค์ประกอบที่คุณใช้เพื่อระบุคีย์ที่ใช้สร้าง JWS จะขึ้นอยู่กับอัลกอริทึมที่เลือก ดังที่แสดงในตารางต่อไปนี้

อัลกอริทึม องค์ประกอบสำคัญ
HS{256/384/512}*
<SecretKey>
  <Value ref="private.secretkey"/>
  <Id>1918290</Id>
</SecretKey>
RS/PS/ES{256/384/512}*
<PrivateKey>
  <Value ref="private.privatekey"/>
  <Password ref="private.privatekey-password"/>
  <Id ref="private.privatekey-id"/>
</PrivateKey>

องค์ประกอบ <Password> และ <Id> เป็นค่าที่ไม่บังคับ

*ดูข้อมูลเพิ่มเติมเกี่ยวกับข้อกำหนดของคีย์ได้ที่ เกี่ยวกับอัลกอริทึมการเข้ารหัสลายเซ็น

การอ้างอิงองค์ประกอบสำหรับสร้าง JWS

การอ้างอิงนโยบายจะอธิบายองค์ประกอบและแอตทริบิวต์ของนโยบาย Generate JWS

หมายเหตุ: การกำหนดค่าจะแตกต่างกันเล็กน้อยขึ้นอยู่กับอัลกอริทึมการเข้ารหัสที่คุณใช้ โปรดดูตัวอย่างเพื่อดูตัวอย่างที่แสดงการกำหนดค่าสำหรับ Use Case ที่เฉพาะเจาะจง

แอตทริบิวต์ที่ ใช้กับองค์ประกอบระดับบนสุด

<GenerateJWS name="JWS" continueOnError="false" enabled="true" async="false">

แอตทริบิวต์ต่อไปนี้เป็นแอตทริบิวต์ทั่วไปขององค์ประกอบระดับบนของนโยบายทั้งหมด

แอตทริบิวต์ คำอธิบาย ค่าเริ่มต้น การตรวจหาบุคคลในบ้าน
ชื่อ ชื่อภายในของนโยบาย อักขระที่คุณใช้ในชื่อได้จะจำกัดไว้เฉพาะอักขระต่อไปนี้ A-Z0-9._\-$ % อย่างไรก็ตาม UI การจัดการ Edge จะบังคับใช้ข้อจำกัดเพิ่มเติม เช่น การนำอักขระที่ไม่ใช่ตัวอักษรและตัวเลขออกโดยอัตโนมัติ

คุณอาจใช้องค์ประกอบ <displayname></displayname> เพื่อ ติดป้ายกำกับนโยบายในเครื่องมือแก้ไขพร็อกซีของ UI การจัดการด้วยชื่อ ภาษาธรรมชาติที่แตกต่างกันก็ได้

ไม่มี ต้องระบุ
continueOnError ตั้งค่าเป็น false เพื่อแสดงข้อผิดพลาดเมื่อนโยบายไม่สำเร็จ ซึ่งเป็นลักษณะการทำงานที่คาดไว้สำหรับนโยบายส่วนใหญ่

ตั้งค่าเป็น true เพื่อให้การดำเนินการโฟลว์ดำเนินต่อไปแม้หลังจากที่นโยบาย ล้มเหลว

เท็จ ไม่บังคับ
เปิดใช้อยู่ ตั้งค่าเป็น true เพื่อบังคับใช้นโยบาย

ตั้งค่าเป็น false เพื่อ "ปิด" นโยบาย ระบบจะไม่บังคับใช้นโยบาย แม้ว่าจะยังคงแนบอยู่กับโฟลว์ก็ตาม

จริง ไม่บังคับ
ไม่พร้อมกัน เลิกใช้งานแอตทริบิวต์นี้แล้ว เท็จ เลิกใช้

<DisplayName>

<DisplayName>Policy Display Name</DisplayName>

ใช้เพิ่มเติมจากแอตทริบิวต์ชื่อเพื่อติดป้ายกำกับนโยบายในโปรแกรมแก้ไขพร็อกซีของ UI การจัดการ ด้วยชื่อภาษาธรรมชาติที่แตกต่างกัน

ค่าเริ่มต้น หากคุณละเว้นองค์ประกอบนี้ ระบบจะใช้ค่าของแอตทริบิวต์ชื่อของนโยบาย
การตรวจหาบุคคลในบ้าน ไม่บังคับ
ประเภท สตริง

<Algorithm>

<Algorithm>algorithm-here</Algorithm>

ระบุอัลกอริทึมการเข้ารหัสเพื่อลงนามโทเค็น

ค่าเริ่มต้น ไม่มี
การตรวจหาบุคคลในบ้าน ต้องระบุ
ประเภท สตริง
ค่าที่ใช้ได้ 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>

วางคู่ชื่อ/ค่าการอ้างสิทธิ์เพิ่มเติมในส่วนหัวสำหรับ JWS

ค่าเริ่มต้น ไม่มี
การตรวจหาบุคคลในบ้าน ไม่บังคับ
ค่าที่ใช้ได้ ค่าใดก็ตามที่คุณต้องการใช้สำหรับการอ้างสิทธิ์เพิ่มเติม คุณระบุ การอ้างสิทธิ์อย่างชัดเจนเป็นสตริง ตัวเลข บูลีน แมป หรืออาร์เรย์ได้

องค์ประกอบ <Claim> มีแอตทริบิวต์ต่อไปนี้

  • name - (ต้องระบุ) ชื่อของการอ้างสิทธิ์
  • ref - (ไม่บังคับ) ชื่อของตัวแปรโฟลว์ หากมี นโยบายจะใช้ค่าของตัวแปรนี้เป็นการอ้างสิทธิ์ หากระบุทั้งแอตทริบิวต์ ref และค่าการอ้างสิทธิ์ที่ชัดเจน ค่าที่ชัดเจนจะเป็นค่าเริ่มต้น และจะใช้หากตัวแปรโฟลว์ที่อ้างอิงไม่ได้รับการแก้ไข
  • type - (ไม่บังคับ) ค่าใดค่าหนึ่งต่อไปนี้ สตริง (ค่าเริ่มต้น) ตัวเลข บูลีน หรือแผนที่
  • array - (ไม่บังคับ) ตั้งค่าเป็น true เพื่อระบุว่าค่าเป็นอาร์เรย์ของประเภทหรือไม่ ค่าเริ่มต้น false

<CriticalHeaders>

<CriticalHeaders>a,b,c</CriticalHeaders>

or:

<CriticalHeaders ref=variable_containing_headers/>

เพิ่มส่วนหัวที่สำคัญ crit ลงใน JWS ส่วนหัว crit คืออาร์เรย์ของชื่อส่วนหัวที่ผู้รับ JWS ต้องทราบและจดจำได้ เช่น

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

ในเวลาเรียกใช้ VerifyJWS policy จะตรวจสอบส่วนหัว crit สำหรับส่วนหัวแต่ละรายการที่แสดงในส่วนหัว crit ระบบจะตรวจสอบว่าองค์ประกอบ <KnownHeaders> ของนโยบาย VerifyJWS แสดงส่วนหัวนั้นด้วย ส่วนหัวใดก็ตามที่นโยบาย VerifyJWS พบใน crit ซึ่งไม่ได้อยู่ใน <KnownHeaders> จะทำให้นโยบาย VerifyJWS ไม่สำเร็จ

ค่าเริ่มต้น ไม่มี
การตรวจหาบุคคลในบ้าน ไม่บังคับ
ประเภท อาร์เรย์สตริงที่คั่นด้วยคอมมา
ค่าที่ใช้ได้ อาร์เรย์หรือชื่อของตัวแปรที่มีอาร์เรย์

<DetachContent>

<DetachContent>true|false</DetachContent>

ระบุว่าจะสร้าง JWS ที่มีเพย์โหลดที่แยกออกมา <DetachContent>true</DetachContent> หรือไม่ <DetachContent>false</DetachContent>

หากระบุค่าเป็น "เท็จ" ซึ่งเป็นค่าเริ่มต้น JWS ที่สร้างขึ้นจะมีรูปแบบดังนี้

header.payload.signature

หากคุณระบุเป็น "จริง" เพื่อสร้างเพย์โหลดที่แยกออกมา JWS ที่สร้างขึ้นจะละเว้นเพย์โหลดและอยู่ในรูปแบบต่อไปนี้

header..signature

เมื่อใช้เพย์โหลดที่แยกออกมา คุณจะต้องส่งเพย์โหลดเดิมที่ไม่ได้เข้ารหัสไปยังนโยบาย VerifyJWS โดยใช้<DetachedContent>ของนโยบาย VerifyJWS

ค่าเริ่มต้น เท็จ
การตรวจหาบุคคลในบ้าน ไม่บังคับ
ประเภท บูลีน
ค่าที่ใช้ได้ จริงหรือเท็จ

<IgnoreUnresolvedVariables>

<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>

ตั้งค่าเป็น "เท็จ" หากต้องการให้นโยบายแสดงข้อผิดพลาดเมื่อตัวแปรที่อ้างอิงซึ่งระบุ ในนโยบายไม่สามารถแก้ไขได้ ตั้งค่าเป็น true เพื่อถือว่าตัวแปรที่แก้ไม่ได้เป็นสตริงว่าง (null)

ค่าเริ่มต้น เท็จ
การตรวจหาบุคคลในบ้าน ไม่บังคับ
ประเภท บูลีน
ค่าที่ใช้ได้ จริงหรือเท็จ

<OutputVariable>

<OutputVariable>JWS-variable</OutputVariable>

ระบุตำแหน่งที่จะวาง JWS ที่สร้างขึ้นโดยนโยบายนี้ โดยค่าเริ่มต้น ระบบจะวางไว้ใน ตัวแปรโฟลว์ jws.POLICYNAME.generated_jws

ค่าเริ่มต้น jws.POLICYNAME.generated_jws
การตรวจหาบุคคลในบ้าน ไม่บังคับ
ประเภท สตริง (ชื่อตัวแปรโฟลว์)

<Payload>

<Payload ref="flow-variable-name-he>re&quo<t; /

o>r

Payloadpay<load-val>ue/Payload

ระบุเพย์โหลด JWS แบบดิบที่ไม่ได้เข้ารหัส ระบุตัวแปรที่มีเพย์โหลดหรือสตริง

ค่าเริ่มต้น ไม่มี
การตรวจหาบุคคลในบ้าน ต้องระบุ
ประเภท สตริง อาร์เรย์ไบต์ สตรีม หรือการแสดงเพย์โหลด JWS ที่ไม่ได้เข้ารหัสอื่นๆ

<PrivateKey/Id>

<PrivateKey>
  <Id ref="flow-variable-name-h>e<re"/
/>Privat<eKey

or

>Pri<va>teKey
  Idyour-id-<val>u<e-here/Id
/>PrivateKey

ระบุรหัสคีย์ (kid) ที่จะรวมไว้ในส่วนหัวของ JWS ใช้เฉพาะ เมื่ออัลกอริทึมเป็น RS256/RS384/RS512, PS256/PS384/PS512 หรือ ES256/ES384/ES512

ค่าเริ่มต้น ไม่มี
การตรวจหาบุคคลในบ้าน ไม่บังคับ
ประเภท สตริง
ค่าที่ใช้ได้ ตัวแปรโฟลว์หรือสตริง

<PrivateKey/Password>

<PrivateKey>
  <Password ref="private.privatekey-passw>o<rd"/
/>PrivateKey

ระบุรหัสผ่านที่นโยบายควรใช้เพื่อถอดรหัสคีย์ส่วนตัว หากจำเป็น ใช้แอตทริบิวต์ ref เพื่อส่งคีย์ในตัวแปรโฟลว์ ใช้เฉพาะ เมื่ออัลกอริทึมเป็น RS256/RS384/RS512, PS256/PS384/PS512 หรือ ES256/ES384/ES512

ค่าเริ่มต้น ไม่มี
การตรวจหาบุคคลในบ้าน ไม่บังคับ
ประเภท สตริง
ค่าที่ใช้ได้ การอ้างอิงตัวแปรโฟลว์

หมายเหตุ: คุณต้องระบุตัวแปรโฟลว์ Edge จะปฏิเสธการกำหนดค่านโยบายที่ระบุรหัสผ่านเป็นข้อความธรรมดาเนื่องจากไม่ถูกต้อง ตัวแปรโฟลว์ ต้องมีคำนำหน้า "private" เช่น private.mypassword

<PrivateKey/Value>

<PrivateKey>
  <Value ref="private.variable-name-h>e<re"/
/>PrivateKey

ระบุคีย์ส่วนตัวที่เข้ารหัส PEM ซึ่งใช้ในการลงนาม JWS ใช้แอตทริบิวต์ ref เพื่อส่งคีย์ ในตัวแปรโฟลว์ ใช้เฉพาะเมื่ออัลกอริทึมเป็น RS256/RS384/RS512 PS256/PS384/PS512 หรือ ES256/ES384/ES512 เท่านั้น

ค่าเริ่มต้น ไม่มี
การตรวจหาบุคคลในบ้าน ต้องใช้เพื่อสร้าง JWS โดยใช้อัลกอริทึม RS256
ประเภท สตริง
ค่าที่ใช้ได้ ตัวแปรโฟลว์ที่มีสตริงที่แสดงค่าคีย์ส่วนตัว RSA ที่เข้ารหัส PEM

หมายเหตุ: ตัวแปรโฟลว์ต้องมีคำนำหน้า "private" เช่น private.mykey

<SecretKey/Id>

<SecretKey>
  <Id ref="flow-variable-name-h>e<re"/
>/Secre<tKey

or
>
Se<cr>etKey
  Idyour-id-<val>u<e-here/Id
>/SecretKey

ระบุรหัสคีย์ (kid) ที่จะรวมไว้ในส่วนหัว JWS ของ JWS ที่ลงชื่อด้วยอัลกอริทึม HMAC ใช้เฉพาะเมื่ออัลกอริทึมเป็น HS256/HS384/HS512 เท่านั้น

ค่าเริ่มต้น ไม่มี
การตรวจหาบุคคลในบ้าน ไม่บังคับ
ประเภท สตริง
ค่าที่ใช้ได้ ตัวแปรโฟลว์หรือสตริง

<SecretKey/Value>

<SecretKey>
  <Value ref="private.your-variable-n>a<me"/
>/SecretKey

ระบุคีย์ลับที่ใช้เพื่อยืนยันหรือลงนามโทเค็นด้วยอัลกอริทึม HMAC ใช้เฉพาะ เมื่ออัลกอริทึมเป็น HS256/HS384/HS512 ใช้แอตทริบิวต์ ref เพื่อส่งคีย์ในตัวแปรโฟลว์

Edge บังคับใช้ความแรงของคีย์ขั้นต่ำสำหรับอัลกอริทึม HS256/HS384/HS512 ความยาวคีย์ขั้นต่ำ สำหรับ HS256 คือ 32 ไบต์, สำหรับ HS384 คือ 48 ไบต์ และสำหรับ HS512 คือ 64 ไบต์ การใช้คีย์ที่มีความแข็งแรงต่ำกว่าจะทำให้เกิดข้อผิดพลาดขณะรันไทม์

ค่าเริ่มต้น ไม่มี
การตรวจหาบุคคลในบ้าน ต้องระบุสำหรับอัลกอริทึม HMAC
ประเภท สตริง
ค่าที่ใช้ได้ ตัวแปรโฟลว์ที่อ้างอิงถึงสตริง

หมายเหตุ: หากเป็นตัวแปรโฟลว์ จะต้องมีคำนำหน้า "private" เช่น private.mysecret

ตัวแปรโฟลว์

นโยบาย Generate JWS ไม่ได้ตั้งค่าตัวแปรโฟลว์

ข้อมูลอ้างอิงข้อผิดพลาด

ส่วนนี้จะอธิบายโค้ดข้อผิดพลาดและข้อความแสดงข้อผิดพลาดที่แสดงผลและตัวแปรข้อผิดพลาดที่ Edge กําหนดเมื่อนโยบายนี้ทําให้เกิดข้อผิดพลาด ข้อมูลนี้เป็นสิ่งสำคัญที่คุณควรทราบหากคุณกำลังกำหนดกฎข้อผิดพลาดเพื่อจัดการกับข้อผิดพลาด ดูข้อมูลเพิ่มเติมได้ที่สิ่งที่ต้องทราบเกี่ยวกับข้อผิดพลาดของนโยบายและการจัดการข้อผิดพลาด

ข้อผิดพลาดเกี่ยวกับรันไทม์

ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อนโยบายทำงาน

รหัสข้อผิดพลาด สถานะ HTTP เกิดขึ้นเมื่อ
steps.jws.GenerationFailed 401 นโยบายสร้าง JWS ไม่ได้
steps.jws.InsufficientKeyLength 401 สำหรับคีย์ที่มีขนาดเล็กกว่า 32 ไบต์สำหรับอัลกอริทึม HS256
steps.jws.InvalidClaim 401 สำหรับการอ้างสิทธิ์ที่ขาดหายไปหรือการอ้างสิทธิ์ไม่ตรงกัน หรือส่วนหัวที่ขาดหายไปหรือส่วนหัวไม่ตรงกัน
steps.jws.InvalidCurve 401 เส้นโค้งที่คีย์ระบุไม่ถูกต้องสำหรับอัลกอริทึม Elliptic Curve
steps.jws.InvalidJsonFormat 401 พบ JSON ที่ไม่ถูกต้องในส่วนหัว JWS
steps.jws.InvalidPayload 401 เพย์โหลด JWS ไม่ถูกต้อง
steps.jws.InvalidSignature 401 ละเว้น <DetachedContent> และ JWS มีเพย์โหลดเนื้อหาที่ถูกแยกออก
steps.jws.KeyIdMissing 401 นโยบาย "ยืนยัน" ใช้ JWKS เป็นแหล่งที่มาสำหรับคีย์สาธารณะ แต่ JWS ที่ลงนามไม่มีพร็อพเพอร์ตี้ kid ในส่วนหัว
steps.jws.KeyParsingFailed 401 ไม่สามารถแยกวิเคราะห์คีย์สาธารณะจากข้อมูลคีย์ที่ระบุ
steps.jws.MissingPayload 401 ไม่มีเพย์โหลด JWS
steps.jws.NoAlgorithmFoundInHeader 401 เกิดขึ้นเมื่อ JWS ข้ามส่วนหัวของอัลกอริทึม
steps.jws.SigningFailed 401 ใน GenerateJWS สำหรับคีย์ที่มีขนาดเล็กกว่าขนาดต่ำสุดสำหรับอัลกอริทึม HS384 หรือ HS512
steps.jws.UnknownException 401 เกิดข้อผิดพลาดที่ไม่ทราบสาเหตุ
steps.jws.WrongKeyType 401 ประเภทคีย์ที่ระบุไม่ถูกต้อง เช่น หากคุณระบุคีย์ RSA สำหรับอัลกอริทึม Elliptic Curve หรือคีย์เส้นโค้งสำหรับอัลกอริทึม RSA

ข้อผิดพลาดในการทำให้ใช้งานได้

ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อคุณใช้พร็อกซีที่มีนโยบายนี้

ชื่อข้อผิดพลาด เกิดขึ้นเมื่อ
InvalidAlgorithm ค่าที่ใช้ได้มีเพียง 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

ข้อผิดพลาดอื่นๆ เกี่ยวกับการทำให้ใช้งานได้ที่เป็นไปได้

ตัวแปรความผิดพลาด

ระบบจะตั้งค่าตัวแปรเหล่านี้เมื่อเกิดข้อผิดพลาดรันไทม์ โปรดดูข้อมูลเพิ่มเติมที่หัวข้อสิ่งที่คุณจำเป็นต้องทราบ เกี่ยวกับข้อผิดพลาดของนโยบาย

ตัวแปร สถานที่ ตัวอย่าง
fault.name="fault_name" fault_name คือชื่อของข้อผิดพลาดตามที่ระบุไว้ในตารางข้อผิดพลาดรันไทม์ด้านบน ชื่อข้อผิดพลาดคือส่วนสุดท้ายของรหัสข้อผิดพลาด fault.name Matches "TokenExpired"
JWS.failed นโยบาย JWS ทั้งหมดตั้งค่าตัวแปรเดียวกันในกรณีที่ดำเนินการไม่สำเร็จ jws.JWS-Policy.failed = true

ตัวอย่างการตอบสนองข้อผิดพลาด

สำหรับการจัดการข้อผิดพลาด แนวทางปฏิบัติแนะนำคือให้ดักจับส่วน errorcode ของข้อผิดพลาด คำตอบ อย่าพึ่งพาข้อความใน faultstring เนื่องจากอาจมีการเปลี่ยนแปลง

ตัวอย่างกฎข้อผิดพลาด

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