คุณกำลังดูเอกสารประกอบของ 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> องค์ประกอบ |
|
| *ดูข้อมูลเพิ่มเติมเกี่ยวกับข้อกำหนดของคีย์ได้ที่ เกี่ยวกับอัลกอริทึมการเข้ารหัสลายเซ็น | ||
การอ้างอิงองค์ประกอบสำหรับสร้าง JWS
การอ้างอิงนโยบายจะอธิบายองค์ประกอบและแอตทริบิวต์ของนโยบาย Generate JWS
หมายเหตุ: การกำหนดค่าจะแตกต่างกันเล็กน้อยขึ้นอยู่กับอัลกอริทึมการเข้ารหัสที่คุณใช้ โปรดดูตัวอย่างเพื่อดูตัวอย่างที่แสดงการกำหนดค่าสำหรับ Use Case ที่เฉพาะเจาะจง
แอตทริบิวต์ที่ ใช้กับองค์ประกอบระดับบนสุด
<GenerateJWS name="JWS" continueOnError="false" enabled="true" async="false">
แอตทริบิวต์ต่อไปนี้เป็นแอตทริบิวต์ทั่วไปขององค์ประกอบระดับบนของนโยบายทั้งหมด
| แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การตรวจหาบุคคลในบ้าน |
|---|---|---|---|
| ชื่อ |
ชื่อภายในของนโยบาย อักขระที่คุณใช้ในชื่อได้จะจำกัดไว้เฉพาะอักขระต่อไปนี้
A-Z0-9._\-$ % อย่างไรก็ตาม UI การจัดการ Edge จะบังคับใช้ข้อจำกัดเพิ่มเติม เช่น การนำอักขระที่ไม่ใช่ตัวอักษรและตัวเลขออกโดยอัตโนมัติ
คุณอาจใช้องค์ประกอบ |
ไม่มี | ต้องระบุ |
| continueOnError |
ตั้งค่าเป็น false เพื่อแสดงข้อผิดพลาดเมื่อนโยบายไม่สำเร็จ ซึ่งเป็นลักษณะการทำงานที่คาดไว้สำหรับนโยบายส่วนใหญ่
ตั้งค่าเป็น |
เท็จ | ไม่บังคับ |
| เปิดใช้อยู่ |
ตั้งค่าเป็น true เพื่อบังคับใช้นโยบาย
ตั้งค่าเป็น |
จริง | ไม่บังคับ |
| ไม่พร้อมกัน | เลิกใช้งานแอตทริบิวต์นี้แล้ว | เท็จ | เลิกใช้ |
<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" เช่น |
<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" เช่น
|
<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" เช่น |
ตัวแปรโฟลว์
นโยบาย 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 |
|
|
ข้อผิดพลาดอื่นๆ เกี่ยวกับการทำให้ใช้งานได้ที่เป็นไปได้ |
ตัวแปรความผิดพลาด
ระบบจะตั้งค่าตัวแปรเหล่านี้เมื่อเกิดข้อผิดพลาดรันไทม์ โปรดดูข้อมูลเพิ่มเติมที่หัวข้อสิ่งที่คุณจำเป็นต้องทราบ เกี่ยวกับข้อผิดพลาดของนโยบาย
| ตัวแปร | สถานที่ | ตัวอย่าง |
|---|---|---|
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>