คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ
Apigee X info
อะไร
ยืนยันลายเซ็นใน JWT ที่ได้รับจากไคลเอ็นต์หรือระบบอื่นๆ นโยบายนี้ยัง ดึงข้อมูลการอ้างสิทธิ์ลงในตัวแปรบริบท เพื่อให้นโยบายหรือเงื่อนไขที่ตามมาสามารถตรวจสอบ ค่าเหล่านั้นเพื่อทำการตัดสินใจเกี่ยวกับการให้สิทธิ์หรือการกำหนดเส้นทาง ดูคำแนะนำแบบละเอียดได้ที่ภาพรวมนโยบาย JWS และ JWT
เมื่อนโยบายนี้ทำงาน Edge จะยืนยันลายเซ็นของ JWT และยืนยันว่า JWT นั้น ถูกต้องตามเวลาหมดอายุและเวลาที่ใช้ได้หากมี นอกจากนี้ นโยบายยังสามารถตรวจสอบค่าของการอ้างสิทธิ์ที่เฉพาะเจาะจงใน JWT ได้ด้วย เช่น เรื่อง ผู้ออก กลุ่มเป้าหมาย หรือค่าของการอ้างสิทธิ์เพิ่มเติม
หาก JWT ได้รับการยืนยันและถูกต้อง ระบบจะดึงข้อมูลการอ้างสิทธิ์ทั้งหมดที่อยู่ใน JWT ลงในตัวแปรบริบทเพื่อให้เป็นไปตามนโยบายหรือเงื่อนไขที่ตามมา และระบบจะอนุญาตให้คำขอ ดำเนินการต่อ หากยืนยันลายเซ็น JWT ไม่ได้หรือ JWT ไม่ถูกต้องเนื่องจาก การประทับเวลาใดเวลาหนึ่ง ระบบจะหยุดการประมวลผลทั้งหมดและแสดงข้อผิดพลาดในการตอบกลับ
หากต้องการดูข้อมูลเกี่ยวกับส่วนต่างๆ ของ JWT รวมถึงวิธีเข้ารหัสและลงนาม โปรดดู RFC7519
วิดีโอ
ดูวิดีโอสั้นๆ เพื่อดูวิธียืนยันลายเซ็นใน JWT
ตัวอย่าง
ยืนยัน JWT ที่ลงนามด้วยอัลกอริทึม HS256
นโยบายตัวอย่างนี้จะยืนยัน JWT ที่ลงนามด้วยอัลกอริทึมการเข้ารหัส HS256, HMAC
โดยใช้การตรวจสอบข้อผิดพลาด SHA-256 ระบบจะส่ง JWT ในคำขอพร็อกซีโดยใช้พารามิเตอร์แบบฟอร์มชื่อ
jwt คีย์อยู่ในตัวแปรที่ชื่อ private.secretkey
ดูตัวอย่างฉบับเต็มได้ในวิดีโอด้านบน ซึ่งรวมถึงวิธีส่งคำขอเกี่ยวกับนโยบาย
การกำหนดค่านโยบายประกอบด้วยข้อมูลที่ Edge ต้องใช้ในการถอดรหัสและประเมิน JWT เช่น ตำแหน่งที่จะค้นหา JWT (ในตัวแปรโฟลว์ที่ระบุในองค์ประกอบแหล่งที่มา) อัลกอริทึมการลงนามที่จำเป็น ตำแหน่งที่จะค้นหาคีย์ลับ (จัดเก็บไว้ในตัวแปรโฟลว์ของ Edge ซึ่งอาจ ดึงมาจาก KVM ของ Edge เป็นต้น) และชุดการอ้างสิทธิ์ที่จำเป็นและค่าของ การอ้างสิทธิ์เหล่านั้น
<VerifyJWT name="JWT-Verify-HS256">
<DisplayName>JWT Verify HS256</DisplayName>
<Algorithm>HS256</Algorithm>
<Source>request.formparam.jwt</Source>
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
<SecretKey encoding="base64">
<Value ref="private.secretkey"/>
</SecretKey>
<Subject>monty-pythons-flying-circus</Subject>
<Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
<Audience>fans</Audience>
<AdditionalClaims>
<Claim name="show">And now for something completely different.</Claim>
</AdditionalClaims>
</VerifyJWT>นโยบายจะเขียนเอาต์พุตไปยังตัวแปรบริบทเพื่อให้เงื่อนไขหรือนโยบายที่ตามมา ในพร็อกซี API สามารถตรวจสอบค่าเหล่านั้นได้ ดูรายการตัวแปรที่นโยบายนี้ตั้งค่าได้ที่ตัวแปรโฟลว์
ยืนยัน JWT ที่ลงนามด้วยอัลกอริทึม RS256
นโยบายตัวอย่างนี้จะยืนยัน JWT ที่ลงนามด้วยอัลกอริทึม RS256 หากต้องการยืนยัน
คุณต้องระบุคีย์สาธารณะ ระบบจะส่ง JWT ในคำขอพร็อกซีโดยใช้พารามิเตอร์แบบฟอร์ม
ชื่อ jwt คีย์สาธารณะอยู่ในตัวแปรชื่อ public.publickey
ดูตัวอย่างฉบับเต็มได้ในวิดีโอด้านบน ซึ่งรวมถึงวิธีส่งคำขอเกี่ยวกับนโยบาย
ดูรายละเอียดเกี่ยวกับข้อกำหนดและตัวเลือกสำหรับแต่ละองค์ประกอบในนโยบายตัวอย่างนี้ได้ที่ข้อมูลอ้างอิงขององค์ประกอบ
<VerifyJWT name="JWT-Verify-RS256">
<Algorithm>RS256</Algorithm>
<Source>request.formparam.jwt</Source>
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
<PublicKey>
<Value ref="public.publickey"/>
</PublicKey>
<Subject>apigee-seattle-hatrack-montage</Subject>
<Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
<Audience>urn://c60511c0-12a2-473c-80fd-42528eb65a6a</Audience>
<AdditionalClaims>
<Claim name="show">And now for something completely different.</Claim>
</AdditionalClaims>
</VerifyJWT>สำหรับการกำหนดค่าข้างต้น JWT ที่มีส่วนหัวนี้ …
{
"typ" : "JWT",
"alg" : "RS256"
}และเพย์โหลดนี้ …
{
"sub" : "apigee-seattle-hatrack-montage",
"iss" : "urn://apigee-edge-JWT-policy-test",
"aud" : "urn://c60511c0-12a2-473c-80fd-42528eb65a6a",
"show": "And now for something completely different."
}… จะถือว่าถูกต้อง หากยืนยันลายเซ็นด้วยคีย์สาธารณะที่ระบุได้
JWT ที่มีส่วนหัวเดียวกันแต่มีเพย์โหลดนี้ …
{
"sub" : "monty-pythons-flying-circus",
"iss" : "urn://apigee-edge-JWT-policy-test",
"aud" : "urn://c60511c0-12a2-473c-80fd-42528eb65a6a",
"show": "And now for something completely different."
}… จะถือว่าไม่ถูกต้อง แม้ว่าจะตรวจสอบลายเซ็นได้ก็ตาม เนื่องจากอ้างสิทธิ์ "sub" ที่รวมอยู่ใน JWT ไม่ตรงกับค่าที่จำเป็นขององค์ประกอบ "Subject" ตามที่ระบุไว้ในการกำหนดค่านโยบาย
นโยบายจะเขียนเอาต์พุตไปยังตัวแปรบริบทเพื่อให้เงื่อนไขหรือนโยบายที่ตามมา ในพร็อกซี API สามารถตรวจสอบค่าเหล่านั้นได้ ดูรายการตัวแปรที่นโยบายนี้ตั้งค่าได้ที่ตัวแปรโฟลว์
การตั้งค่าองค์ประกอบหลัก
องค์ประกอบที่คุณใช้เพื่อระบุคีย์ที่ใช้ในการยืนยัน JWT จะขึ้นอยู่กับอัลกอริทึมที่เลือก ดังที่แสดงในตารางต่อไปนี้
| อัลกอริทึม | องค์ประกอบสำคัญ | |
|---|---|---|
| HS* |
<SecretKey encoding="base16|hex|base64|base64url"> <Value ref="private.secretkey"/> </SecretKey> |
|
| RS*, ES*, PS* | <PublicKey> <Value ref="rsa_public_key_or_value"/> </PublicKey> หรือ <PublicKey> <Certificate ref="signed_cert_val_ref"/> </PublicKey> หรือ <PublicKey> <JWKS ref="jwks_val_or_ref"/> </PublicKey> |
|
| *ดูข้อมูลเพิ่มเติมเกี่ยวกับข้อกำหนดของคีย์ได้ที่ เกี่ยวกับอัลกอริทึมการเข้ารหัสลายเซ็น | ||
การอ้างอิงองค์ประกอบ
การอ้างอิงนโยบายจะอธิบายองค์ประกอบและแอตทริบิวต์ของนโยบายการยืนยัน JWT
หมายเหตุ: การกำหนดค่าจะแตกต่างกันเล็กน้อยขึ้นอยู่กับอัลกอริทึมการเข้ารหัส ที่คุณใช้ ดูตัวอย่างที่แสดงการกำหนดค่าสำหรับ Use Case ที่เฉพาะเจาะจงได้ในตัวอย่าง
แอตทริบิวต์ที่ใช้กับองค์ประกอบระดับบนสุด
<VerifyJWT name="JWT" continueOnError="false" enabled="true" async="false">
แอตทริบิวต์ต่อไปนี้เป็นแอตทริบิวต์ทั่วไปขององค์ประกอบระดับบนของนโยบายทั้งหมด
| แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การตรวจหาบุคคลในบ้าน |
|---|---|---|---|
| name |
ชื่อภายในของนโยบาย อักขระที่คุณใช้ในชื่อได้จะจำกัดไว้เฉพาะอักขระต่อไปนี้
A-Z0-9._\-$ % อย่างไรก็ตาม UI การจัดการ Edge จะบังคับใช้ข้อจำกัดเพิ่มเติม เช่น การนำอักขระที่ไม่ใช่ตัวอักษรและตัวเลขออกโดยอัตโนมัติ
คุณอาจใช้องค์ประกอบ |
ไม่มี | ต้องระบุ |
| continueOnError |
ตั้งค่าเป็น false เพื่อแสดงข้อผิดพลาดเมื่อนโยบายไม่สำเร็จ ซึ่งเป็นลักษณะการทำงานที่คาดไว้
สำหรับนโยบายส่วนใหญ่
ตั้งค่าเป็น |
เท็จ | ไม่บังคับ |
| เปิดใช้อยู่ |
ตั้งค่าเป็น true เพื่อบังคับใช้นโยบาย
ตั้งค่าเป็น |
จริง | ไม่บังคับ |
| ไม่พร้อมกัน | เลิกใช้งานแอตทริบิวต์นี้แล้ว | เท็จ | เลิกใช้ |
<DisplayName>
<DisplayName>Policy Display Name</DisplayName>
ใช้เพิ่มเติมจากแอตทริบิวต์ชื่อเพื่อติดป้ายกำกับนโยบายในโปรแกรมแก้ไขพร็อกซีของ UI การจัดการ ด้วยชื่อภาษาธรรมชาติที่แตกต่างกัน
| ค่าเริ่มต้น | หากคุณละเว้นองค์ประกอบนี้ ระบบจะใช้ค่าของแอตทริบิวต์ชื่อของนโยบาย |
| การตรวจหาบุคคลในบ้าน | ไม่บังคับ |
| ประเภท | สตริง |
<Algorithm>
<Algorithm>HS256</Algorithm>
ระบุอัลกอริทึมการเข้ารหัสเพื่อลงนามในโทเค็น อัลกอริทึม RS*/PS*/ES* ใช้คู่คีย์สาธารณะ/คีย์ลับ ในขณะที่อัลกอริทึม HS* ใช้ข้อมูลลับที่ใช้ร่วมกัน ดู เกี่ยวกับอัลกอริทึมการเข้ารหัสลายเซ็นด้วย
คุณระบุค่าหลายค่าได้โดยคั่นด้วยเครื่องหมายจุลภาค เช่น "HS256, HS512" หรือ "RS256, PS256" อย่างไรก็ตาม คุณไม่สามารถรวมอัลกอริทึม HS* กับอัลกอริทึมอื่นๆ หรืออัลกอริทึม ES* กับอัลกอริทึมอื่นๆ ได้เนื่องจากต้องใช้คีย์ประเภทที่เฉพาะเจาะจง คุณสามารถรวมอัลกอริทึม RS* และ PS* ได้
| ค่าเริ่มต้น | ไม่มี |
| การตรวจหาบุคคลในบ้าน | ต้องระบุ |
| ประเภท | สตริงของค่าที่คั่นด้วยคอมมา |
| ค่าที่ใช้ได้ | HS256, HS384, HS512, RS256, RS384, RS512, ES256, ES384, ES512, PS256, PS384, PS512 |
<Audience>
<Audience>audience-here</Audience> or: <Audience ref='variable-name-here'/>
นโยบายจะยืนยันว่าการอ้างสิทธิ์กลุ่มเป้าหมายใน JWT ตรงกับค่าที่ระบุในการกำหนดค่า หากไม่มีรายการที่ตรงกัน นโยบายจะแสดงข้อผิดพลาด การอ้างสิทธิ์นี้ระบุผู้รับที่ JWT มีไว้สำหรับ นี่คือการอ้างสิทธิ์ที่ลงทะเบียนรายการหนึ่งที่ระบุไว้ใน RFC7519
| ค่าเริ่มต้น | ไม่มี |
| การตรวจหาบุคคลในบ้าน | ไม่บังคับ |
| ประเภท | สตริง |
| ค่าที่ใช้ได้ | ตัวแปรโฟลว์หรือสตริงที่ระบุกลุ่มเป้าหมาย |
<AdditionalClaims/Claim>
<AdditionalClaims> <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'/> </AdditionalClaims> or: <AdditionalClaims ref='claim_payload'/>
ตรวจสอบว่าเพย์โหลดของ JWT มีการอ้างสิทธิ์เพิ่มเติมที่ระบุ และค่าการอ้างสิทธิ์ที่ยืนยันตรงกัน
การอ้างสิทธิ์เพิ่มเติมใช้ชื่อที่ไม่ใช่ชื่อการอ้างสิทธิ์ JWT มาตรฐานที่ลงทะเบียนไว้ ค่าของการอ้างสิทธิ์เพิ่มเติมอาจเป็นสตริง ตัวเลข บูลีน แมป หรืออาร์เรย์ แผนที่ เป็นเพียงชุดของคู่ชื่อ/ค่า คุณระบุค่าสำหรับการอ้างสิทธิ์ประเภทใดประเภทหนึ่งเหล่านี้ได้ อย่างชัดเจนในการกำหนดค่านโยบาย หรือโดยอ้อมผ่านการอ้างอิงถึงตัวแปรโฟลว์
| ค่าเริ่มต้น | ไม่มี |
| การตรวจหาบุคคลในบ้าน | ไม่บังคับ |
| ประเภท | สตริง ตัวเลข บูลีน หรือแผนที่ |
| อาร์เรย์ | ตั้งค่าเป็น true เพื่อระบุว่าค่าเป็นอาร์เรย์ของประเภทหรือไม่ ค่าเริ่มต้น: false |
| ค่าที่ใช้ได้ | ค่าใดก็ตามที่คุณต้องการใช้สำหรับการอ้างสิทธิ์เพิ่มเติม |
องค์ประกอบ <Claim> มีแอตทริบิวต์ต่อไปนี้
- name - (ต้องระบุ) ชื่อของการอ้างสิทธิ์
- ref - (ไม่บังคับ) ชื่อของตัวแปรโฟลว์ หากมี นโยบายจะใช้ค่าของตัวแปรนี้เป็นคำกล่าวอ้าง หากระบุทั้งแอตทริบิวต์ ref และค่าการอ้างสิทธิ์ที่ชัดเจน ค่าที่ชัดเจนจะเป็นค่าเริ่มต้น และจะใช้หากตัวแปรโฟลว์ที่อ้างอิงไม่ได้รับการแก้ไข
- type - (ไม่บังคับ) ค่าใดค่าหนึ่งต่อไปนี้ สตริง (ค่าเริ่มต้น) ตัวเลข บูลีน หรือแผนที่
- array - (ไม่บังคับ) ตั้งค่าเป็น true เพื่อระบุว่าค่าเป็นอาร์เรย์ของประเภทหรือไม่ ค่าเริ่มต้น: false
เมื่อคุณรวมองค์ประกอบ <Claim> ระบบจะตั้งชื่อการอ้างสิทธิ์แบบคงที่เมื่อคุณ
กำหนดค่านโยบาย หรือจะส่งออบเจ็กต์ JSON เพื่อระบุชื่อการอ้างสิทธิ์ก็ได้
เนื่องจากมีการส่งออบเจ็กต์ JSON เป็นตัวแปร ระบบจึงกำหนดชื่อการอ้างสิทธิ์ขณะรันไทม์
เช่น
<AdditionalClaims ref='json_claims'/>
โดยที่ตัวแปร json_claims มีออบเจ็กต์ JSON ในรูปแบบต่อไปนี้
{ "sub" : "person@example.com", "iss" : "urn://secure-issuer@example.com", "non-registered-claim" : { "This-is-a-thing" : 817, "https://example.com/foobar" : { "p": 42, "q": false } } }
<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>
ตรวจสอบว่าส่วนหัวของ JWT มีคู่ชื่อ/ค่าการอ้างสิทธิ์เพิ่มเติมที่ระบุ และค่าการอ้างสิทธิ์ที่ยืนยันตรงกัน
การอ้างสิทธิ์เพิ่มเติมใช้ชื่อที่ไม่ใช่ชื่อการอ้างสิทธิ์ JWT ที่ลงทะเบียนมาตรฐาน ค่าของการอ้างสิทธิ์เพิ่มเติมอาจเป็นสตริง ตัวเลข บูลีน แมป หรืออาร์เรย์ แผนที่ เป็นเพียงชุดของคู่ชื่อ/ค่า คุณระบุค่าสำหรับการอ้างสิทธิ์ประเภทใดประเภทหนึ่งเหล่านี้ได้ อย่างชัดเจนในการกำหนดค่านโยบาย หรือโดยอ้อมผ่านการอ้างอิงถึงตัวแปรโฟลว์
| ค่าเริ่มต้น | ไม่มี |
| การตรวจหาบุคคลในบ้าน | ไม่บังคับ |
| ประเภท |
สตริง (ค่าเริ่มต้น), ตัวเลข, บูลีน หรือแผนที่ ค่าเริ่มต้นของประเภทจะเป็นสตริง หากไม่ได้ระบุประเภท |
| อาร์เรย์ | ตั้งค่าเป็น true เพื่อระบุว่าค่าเป็นอาร์เรย์ของประเภทหรือไม่ ค่าเริ่มต้น: false |
| ค่าที่ใช้ได้ | ค่าใดก็ตามที่คุณต้องการใช้สำหรับการอ้างสิทธิ์เพิ่มเติม |
องค์ประกอบ <Claim> มีแอตทริบิวต์ต่อไปนี้
- name - (ต้องระบุ) ชื่อของการอ้างสิทธิ์
- ref - (ไม่บังคับ) ชื่อของตัวแปรโฟลว์ หากมี นโยบายจะใช้ค่าของตัวแปรนี้เป็นคำกล่าวอ้าง หากระบุทั้งแอตทริบิวต์ ref และค่าการอ้างสิทธิ์ที่ชัดเจน ค่าที่ชัดเจนจะเป็นค่าเริ่มต้น และจะใช้หากตัวแปรโฟลว์ที่อ้างอิงไม่ได้รับการแก้ไข
- type - (ไม่บังคับ) ค่าใดค่าหนึ่งต่อไปนี้ สตริง (ค่าเริ่มต้น) ตัวเลข บูลีน หรือแผนที่
- array - (ไม่บังคับ) ตั้งค่าเป็น true เพื่อระบุว่าค่าเป็นอาร์เรย์ของประเภทหรือไม่ ค่าเริ่มต้น: false
<CustomClaims>
หมายเหตุ: ปัจจุบันระบบจะแทรกองค์ประกอบ CustomClaims เมื่อคุณเพิ่มนโยบาย GenerateJWT ใหม่ผ่าน UI องค์ประกอบนี้ใช้งานไม่ได้และระบบจะละเว้น องค์ประกอบที่ถูกต้อง ซึ่งควรใช้แทนคือ <AdditionalClaims> เราจะอัปเดต UI เพื่อแทรกองค์ประกอบที่ถูกต้องในภายหลัง
<Id>
<Id>explicit-jti-value-here</Id> -or- <Id ref='variable-name-here'/> -or- <Id/>
ยืนยันว่า JWT มีการอ้างสิทธิ์ jti ที่เฉพาะเจาะจง เมื่อค่าข้อความและแอตทริบิวต์ ref ว่างเปล่าทั้งคู่ นโยบายจะสร้าง jti ที่มี UUID แบบสุ่ม การอ้างสิทธิ์รหัส JWT (jti) คือตัวระบุที่ไม่ซ้ำกันสำหรับ JWT ดูข้อมูลเพิ่มเติมเกี่ยวกับ jti ได้ที่ RFC7519
| ค่าเริ่มต้น | ไม่มี |
| การตรวจหาบุคคลในบ้าน | ไม่บังคับ |
| ประเภท | สตริงหรือการอ้างอิง |
| ค่าที่ใช้ได้ | สตริงหรือชื่อของตัวแปรโฟลว์ที่มีรหัส |
<IgnoreCriticalHeaders>
<IgnoreCriticalHeaders>true|false</IgnoreCriticalHeaders>
ตั้งค่าเป็น "เท็จ" หากต้องการให้นโยบายแสดงข้อผิดพลาดเมื่อส่วนหัวใดก็ตามที่แสดงในส่วนหัว
crit ของ JWT ไม่ได้แสดงในองค์ประกอบ <KnownHeaders>
ตั้งค่าเป็น "จริง" เพื่อให้นโยบาย VerifyJWT ไม่สนใจส่วนหัว crit
เหตุผลหนึ่งที่ควรตั้งค่าองค์ประกอบนี้เป็น "จริง" คือหากคุณอยู่ในสภาพแวดล้อมการทดสอบและยังไม่พร้อม ที่จะทำให้เกิดข้อผิดพลาดในส่วนหัวที่ขาดหายไป
| ค่าเริ่มต้น | เท็จ |
| การตรวจหาบุคคลในบ้าน | ไม่บังคับ |
| ประเภท | บูลีน |
| ค่าที่ใช้ได้ | จริงหรือเท็จ |
<IgnoreIssuedAt>
<IgnoreIssuedAt>true|false</IgnoreIssuedAt>
ตั้งค่าเป็น "เท็จ" (ค่าเริ่มต้น) หากต้องการให้นโยบายแสดงข้อผิดพลาดเมื่อ JWT มีการอ้างสิทธิ์
iat (ออกที่) ที่ระบุเวลาในอนาคต
ตั้งค่าเป็น "จริง" เพื่อให้นโยบายไม่สนใจ iat ระหว่างการยืนยัน
| ค่าเริ่มต้น | เท็จ |
| การตรวจหาบุคคลในบ้าน | ไม่บังคับ |
| ประเภท | บูลีน |
| ค่าที่ใช้ได้ | จริงหรือเท็จ |
<IgnoreUnresolvedVariables>
<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>
ตั้งค่าเป็น "เท็จ" หากต้องการให้นโยบายแสดงข้อผิดพลาดเมื่อตัวแปรที่อ้างอิงซึ่งระบุ ในนโยบายไม่สามารถแก้ไขได้ ตั้งค่าเป็น true เพื่อถือว่าตัวแปรที่แก้ไม่ได้เป็นสตริงว่าง (null)
| ค่าเริ่มต้น | เท็จ |
| การตรวจหาบุคคลในบ้าน | ไม่บังคับ |
| ประเภท | บูลีน |
| ค่าที่ใช้ได้ | จริงหรือเท็จ |
<ผู้ออกใบรับรอง>
<Issuer ref='variable-name-here'/> <Issuer>issuer-string-here</Issuer>
นโยบายจะยืนยันว่าผู้ออกใน JWT ตรงกับสตริงที่ระบุในองค์ประกอบการกำหนดค่า การอ้างสิทธิ์ที่ระบุผู้ออก JWT ซึ่งเป็นหนึ่งในชุดการอ้างสิทธิ์ที่ลงทะเบียนไว้ตามที่ระบุไว้ใน RFC7519
| ค่าเริ่มต้น | ไม่มี |
| การตรวจหาบุคคลในบ้าน | ไม่บังคับ |
| ประเภท | สตริงหรือการอ้างอิง |
| ค่าที่ใช้ได้ | ตามแต่ละประเทศ |
<KnownHeaders>
<KnownHeaders>a,b,c</KnownHeaders> or: <KnownHeaders ref=’variable_containing_headers’/>
นโยบาย GenerateJWT ใช้องค์ประกอบ <CriticalHeaders> เพื่อป้อนข้อมูลส่วนหัว crit ใน JWT เช่น
{
“typ: “...”,
“alg” : “...”,
“crit” : [ “a”, “b”, “c” ],
}นโยบาย VerifyJWT จะตรวจสอบส่วนหัว crit ใน JWT หากมี และสำหรับส่วนหัวแต่ละรายการที่ระบุไว้ นโยบายจะ
ตรวจสอบว่าองค์ประกอบ <KnownHeaders> ระบุส่วนหัวนั้นด้วย องค์ประกอบ
<KnownHeaders> อาจมีซูเปอร์เซ็ตของรายการที่ระบุไว้ใน crit
คุณเพียงแค่ต้องตรวจสอบว่าส่วนหัวทั้งหมดที่ระบุไว้ใน crit แสดงอยู่ในองค์ประกอบ
<KnownHeaders> ส่วนหัวใดๆ ที่นโยบายพบใน crit
ซึ่งไม่ได้อยู่ใน <KnownHeaders> จะทําให้นโยบาย VerifyJWT ไม่สําเร็จ
คุณเลือกกำหนดค่านโยบาย VerifyJWT ให้ไม่สนใจส่วนหัว crit ได้โดย
ตั้งค่าองค์ประกอบ <IgnoreCriticalHeaders> เป็น true
| ค่าเริ่มต้น | ไม่มี |
| การตรวจหาบุคคลในบ้าน | ไม่บังคับ |
| ประเภท | อาร์เรย์สตริงที่คั่นด้วยคอมมา |
| ค่าที่ใช้ได้ | อาร์เรย์หรือชื่อของตัวแปรที่มีอาร์เรย์ |
<PublicKey/Certificate>
<PublicKey> <Certificate ref="signed_public.cert"/> </PublicKey> -or- <PublicKey> <Certificate> -----BEGIN CERTIFICATE----- cert data -----END CERTIFICATE----- </Certificate> </PublicKey>
ระบุใบรับรองที่ลงชื่อซึ่งใช้เพื่อยืนยันลายเซ็นใน JWT ใช้แอตทริบิวต์ ref เพื่อ ส่งใบรับรองที่ลงชื่อแล้วในตัวแปรโฟลว์ หรือระบุใบรับรองที่เข้ารหัสด้วย PEM โดยตรง ใช้เฉพาะเมื่ออัลกอริทึมเป็น RS256/RS384/RS512, PS256/PS384/PS512 หรือ ES256/ES384/ES512 เท่านั้น
| ค่าเริ่มต้น | ไม่มี |
| การตรวจหาบุคคลในบ้าน | หากต้องการยืนยัน JWT ที่ลงนามด้วยอัลกอริทึม RSA คุณต้องใช้องค์ประกอบใบรับรอง, JWKS หรือค่า |
| ประเภท | สตริง |
| ค่าที่ใช้ได้ | ตัวแปรโฟลว์หรือสตริง |
<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>
ระบุค่าในรูปแบบ JWKS (RFC 7517) ซึ่งมีชุดคีย์สาธารณะ ใช้เฉพาะเมื่ออัลกอริทึมเป็น RS256/RS384/RS512, PS256/PS384/PS512 หรือ ES256/ES384/ES512
หาก JWT ขาเข้ามีรหัสคีย์ที่อยู่ในชุด JWKS นโยบายจะใช้คีย์สาธารณะที่ถูกต้องเพื่อยืนยันลายเซ็น JWT ดูรายละเอียด เกี่ยวกับฟีเจอร์นี้ได้ที่ การใช้ชุดคีย์เว็บ JSON (JWKS) เพื่อยืนยัน JWT
หากคุณดึงค่าจาก URL สาธารณะ Edge จะแคช JWKS เป็นระยะเวลา 300 วินาที เมื่อแคชหมดอายุ Edge จะดึงข้อมูล JWKS อีกครั้ง
| ค่าเริ่มต้น | ไม่มี |
| การตรวจหาบุคคลในบ้าน | หากต้องการยืนยัน JWT โดยใช้อัลกอริทึม RSA คุณต้องใช้ใบรับรอง, JWKS หรือองค์ประกอบค่า |
| ประเภท | สตริง |
| ค่าที่ใช้ได้ | ตัวแปรโฟลว์ ค่าสตริง หรือ URL |
<PublicKey/Value>
<PublicKey> <Value ref="public.publickeyorcert"/> </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>
ระบุคีย์สาธารณะหรือใบรับรองสาธารณะที่ใช้เพื่อยืนยันลายเซ็นใน JWT ใช้แอตทริบิวต์ ref เพื่อ ส่งคีย์/ใบรับรองในตัวแปรโฟลว์ หรือระบุคีย์ที่เข้ารหัส PEM โดยตรง ใช้เฉพาะเมื่ออัลกอริทึมเป็น RS256/RS384/RS512, PS256/PS384/PS512 หรือ ES256/ES384/ES512 เท่านั้น
| ค่าเริ่มต้น | ไม่มี |
| การตรวจหาบุคคลในบ้าน | หากต้องการยืนยัน JWT ที่ลงนามด้วยอัลกอริทึม RSA คุณต้องใช้องค์ประกอบใบรับรอง, JWKS หรือค่า |
| ประเภท | สตริง |
| ค่าที่ใช้ได้ | ตัวแปรโฟลว์หรือสตริง |
<SecretKey/Value>
<SecretKey encoding="base16|hex|base64|base64url"> <Value ref="private.your-variable-name"/> </SecretKey>
ระบุคีย์ลับที่ใช้เพื่อยืนยันหรือลงนามโทเค็นด้วยอัลกอริทึม HMAC ใช้เฉพาะ เมื่ออัลกอริทึมเป็น HS256, HS384 หรือ HS512
| ค่าเริ่มต้น | ไม่มี |
| การตรวจหาบุคคลในบ้าน | ต้องระบุสำหรับอัลกอริทึม HMAC |
| ประเภท | สตริง |
| ค่าที่ใช้ได้ |
สำหรับ ใช้แอตทริบิวต์ ref เพื่อส่งคีย์ในตัวแปรโฟลว์ หมายเหตุ: หากเป็นตัวแปรโฟลว์ จะต้องมีคำนำหน้า "private" เช่น
|
<Source>
<Source>jwt-variable</Source>
หากมี จะระบุตัวแปรโฟลว์ที่นโยบายคาดว่าจะพบ JWT เพื่อ ยืนยัน
| ค่าเริ่มต้น | request.header.authorization (ดูข้อมูลสำคัญเกี่ยวกับค่าเริ่มต้นได้ที่หมายเหตุข้างต้น
) |
| การตรวจหาบุคคลในบ้าน | ไม่บังคับ |
| ประเภท | สตริง |
| ค่าที่ใช้ได้ | ชื่อตัวแปรโฟลว์ Edge |
<Subject>
<Subject>subject-string-here</Subject>
นโยบายจะยืนยันว่าเรื่องใน JWT ตรงกับสตริงที่ระบุในการกำหนดค่านโยบาย การอ้างสิทธิ์นี้จะระบุหรือแถลงเกี่ยวกับเรื่องของ JWT ซึ่งเป็น หนึ่งในชุดการอ้างสิทธิ์มาตรฐานที่กล่าวถึงใน RFC7519
| ค่าเริ่มต้น | ไม่มี |
| การตรวจหาบุคคลในบ้าน | ไม่บังคับ |
| ประเภท | สตริง |
| ค่าที่ใช้ได้ | ค่าที่ระบุเรื่องหนึ่งๆ โดยไม่ซ้ำกัน |
<TimeAllowance>
<TimeAllowance>120s</TimeAllowance>
"ระยะเวลาผ่อนผัน" สำหรับเวลา เช่น หากกำหนดค่าระยะเวลาที่อนุญาตเป็น 60 วินาที ระบบจะถือว่า JWT ที่หมดอายุแล้วยังคงใช้งานได้เป็นเวลา 60 วินาทีหลังจากที่อ้างว่าหมดอายุ ระบบจะประเมิน not-before-time ในลักษณะเดียวกัน ค่าเริ่มต้นคือ 0 วินาที (ไม่มีระยะเวลาผ่อนผัน)
| ค่าเริ่มต้น | 0 วินาที (ไม่มีระยะเวลาผ่อนผัน) |
| การตรวจหาบุคคลในบ้าน | ไม่บังคับ |
| ประเภท | สตริง |
| ค่าที่ใช้ได้ |
ค่าหรือการอ้างอิงไปยังตัวแปรโฟลว์ที่มีค่า ช่วงเวลาสามารถ
ระบุได้ดังนี้
|
ตัวแปรโฟลว์
เมื่อสำเร็จ นโยบาย Verify JWT และ Decode JWT ที่ตั้งไว้ ตัวแปรบริบทตามรูปแบบนี้:
jwt.{policy_name}.{variable_name}
ตัวอย่างเช่น หากชื่อนโยบายคือ jwt-parse-token ระบบจะจัดเก็บนโยบายนี้ไว้
เรื่องที่ระบุใน JWT ไปยังตัวแปรบริบทชื่อ jwt.jwt-parse-token.decoded.claim.sub
(สำหรับความเข้ากันได้แบบย้อนหลัง จะพร้อมใช้งานใน jwt.jwt-parse-token.claim.subject ด้วย)
| ชื่อตัวแปร | คำอธิบาย |
|---|---|
claim.audience |
การอ้างสิทธิ์กลุ่มเป้าหมายของ JWT ค่านี้อาจเป็นสตริง หรืออาร์เรย์ของสตริง |
claim.expiry |
วันที่/เวลาหมดอายุ แสดงเป็นมิลลิวินาทีตั้งแต่ Epoch |
claim.issuedat |
วันที่ที่ออกโทเค็น ซึ่งแสดงเป็นมิลลิวินาทีตั้งแต่ Epoch |
claim.issuer |
คำกล่าวอ้างของผู้ออกบัตร JWT |
claim.notbefore |
หาก JWT มีการอ้างสิทธิ์ nbf ตัวแปรนี้จะมีค่า แสดงเป็นมิลลิวินาทีตั้งแต่ Epoch |
claim.subject |
คำกล่าวอ้างของ JWT |
claim.name |
ค่าของการอ้างสิทธิ์ที่มีชื่อ (มาตรฐานหรือเพิ่มเติม) ในเพย์โหลด หนึ่งในรายการเหล่านี้จะถูกตั้งค่าไว้สำหรับ การอ้างสิทธิ์ทั้งหมดในเพย์โหลด |
decoded.claim.name |
ค่าที่แยกวิเคราะห์ได้ JSON ของการอ้างสิทธิ์ที่มีชื่อ (มาตรฐานหรือเพิ่มเติม) ในเพย์โหลด มีการตั้งค่า 1 ตัวแปรสำหรับ
การอ้างสิทธิ์ทั้งหมดในเพย์โหลด เช่น คุณสามารถใช้ decoded.claim.iat เพื่อ
ดึงเวลาที่ออกของ JWT ซึ่งแสดงเป็นวินาทีนับตั้งแต่ Epoch ขณะที่คุณ
ก็สามารถใช้ตัวแปรโฟลว์ claim.name ได้เช่นกัน ซึ่งก็คือ
ตัวแปรที่แนะนำให้ใช้ในการเข้าถึงการอ้างสิทธิ์ |
decoded.header.name |
ค่าที่แยกวิเคราะห์ได้ JSON ของส่วนหัวในเพย์โหลด มีการตั้งค่า 1 ตัวแปรสำหรับ
ทุกส่วนหัวในเพย์โหลด แม้ว่าคุณจะใช้ตัวแปรโฟลว์ header.name ได้เช่นกัน
นี่คือตัวแปรที่แนะนำเพื่อใช้ในการเข้าถึงส่วนหัว |
expiry_formatted |
วันที่/เวลาหมดอายุ ซึ่งจะอยู่ในรูปแบบสตริงที่มนุษย์อ่านได้ ตัวอย่าง 2017-09-28T21:30:45.000+0000 |
header.algorithm |
อัลกอริทึมการเซ็นชื่อที่ใช้บน JWT เช่น RS256, HS384 และอื่นๆ ดูข้อมูลเพิ่มเติมในพารามิเตอร์ส่วนหัว(อัลกอริทึม) |
header.kid |
รหัสคีย์หากมีการเพิ่มไว้เมื่อสร้าง JWT โปรดดูเพิ่มเติม "การใช้ชุดคีย์เว็บ JSON (JWKS)" ที่ JWT ภาพรวมนโยบายเพื่อยืนยัน JWT ดูข้อมูลเพิ่มเติมที่พารามิเตอร์ส่วนหัวของ(รหัสคีย์) |
header.type |
จะตั้งค่าเป็น JWT |
header.name |
ค่าของส่วนหัวที่มีชื่อ (มาตรฐานหรือเพิ่มเติม) หนึ่งในรายการเหล่านี้จะถูกตั้งค่าไว้สำหรับ ส่วนหัวเพิ่มเติมทั้งหมดในส่วนหัวของ JWT |
header-json |
ส่วนหัวในรูปแบบ JSON |
is_expired |
จริงหรือเท็จ |
payload-claim-names |
อาร์เรย์ของการอ้างสิทธิ์ที่ JWT สนับสนุน |
payload-json |
เพย์โหลดในรูปแบบ JSON
|
seconds_remaining |
จำนวนวินาทีก่อนที่โทเค็นจะหมดอายุ หากโทเค็นหมดอายุ จำนวนจะเป็นลบ |
time_remaining_formatted |
เวลาที่เหลือก่อนที่โทเค็นจะหมดอายุ โดยมีรูปแบบเป็นสตริงที่มนุษย์อ่านได้ ตัวอย่าง: 00:59:59.926 |
valid |
ในกรณีของ VerifyJWT ตัวแปรนี้จะเป็นจริงเมื่อยืนยันลายเซ็นแล้ว และ
เวลาปัจจุบันคือก่อนที่โทเค็นจะหมดอายุ และหลังจากค่า notbefore ของโทเค็น หาก
อยู่ หากไม่เลือก จะเป็นเท็จ
ในกรณีของ DecodeJWT จะไม่มีการตั้งค่าตัวแปรนี้ |
ข้อมูลอ้างอิงข้อผิดพลาด
ส่วนนี้จะอธิบายโค้ดข้อผิดพลาดและข้อความแสดงข้อผิดพลาดที่แสดงผลและตัวแปรข้อผิดพลาดที่ Edge กําหนดเมื่อนโยบายนี้ทําให้เกิดข้อผิดพลาด ข้อมูลนี้เป็นสิ่งสำคัญที่ต้องทราบหากคุณกำลังกำหนดกฎข้อผิดพลาดเพื่อจัดการกับข้อผิดพลาด ดูข้อมูลเพิ่มเติมได้ที่สิ่งที่คุณต้องทราบเกี่ยวกับข้อผิดพลาดของนโยบายและการจัดการข้อผิดพลาด
ข้อผิดพลาดเกี่ยวกับรันไทม์
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อนโยบายทำงาน
| รหัสข้อผิดพลาด | สถานะ HTTP | เกิดขึ้นเมื่อ |
|---|---|---|
steps.jwt.AlgorithmInTokenNotPresentInConfiguration |
401 | เกิดขึ้นเมื่อนโยบายการยืนยันมีอัลกอริทึมหลายรายการ |
steps.jwt.AlgorithmMismatch |
401 | อัลกอริทึมที่ระบุในนโยบายการสร้างไม่ตรงกับอัลกอริทึมในนโยบาย "ยืนยัน" อัลกอริทึมที่ระบุต้องตรงกัน |
steps.jwt.FailedToDecode |
401 | นโยบายนี้ถอดรหัส JWT ไม่ได้ JWT อาจเสียหาย |
steps.jwt.GenerationFailed |
401 | นโยบายสร้าง JWT ไม่ได้ |
steps.jwt.InsufficientKeyLength |
401 | สำหรับคีย์ที่มีขนาดเล็กกว่า 32 ไบต์สำหรับอัลกอริทึม HS256 ขนาดน้อยกว่า 48 ไบต์สำหรับอัลกอริทึม HS386 และน้อยกว่า 64 ไบต์สำหรับอัลกอริทึม HS512 |
steps.jwt.InvalidClaim |
401 | สำหรับการอ้างสิทธิ์ที่ขาดหายไปหรือการอ้างสิทธิ์ไม่ตรงกัน หรือส่วนหัวที่ขาดหายไปหรือส่วนหัวไม่ตรงกัน |
steps.jwt.InvalidCurve |
401 | เส้นโค้งที่คีย์ระบุไม่ถูกต้องสำหรับอัลกอริทึม Elliptic Curve |
steps.jwt.InvalidJsonFormat |
401 | พบ JSON ที่ไม่ถูกต้องในส่วนหัวหรือเพย์โหลด |
steps.jwt.InvalidToken |
401 | ข้อผิดพลาดนี้เกิดขึ้นเมื่อการยืนยันลายเซ็น JWT ล้มเหลว |
steps.jwt.JwtAudienceMismatch |
401 | การอ้างสิทธิ์กลุ่มเป้าหมายล้มเหลวในการยืนยันโทเค็น |
steps.jwt.JwtIssuerMismatch |
401 | การอ้างสิทธิ์ของผู้ออกบัตรล้มเหลวในการยืนยันโทเค็น |
steps.jwt.JwtSubjectMismatch |
401 | เรื่องการอ้างสิทธิ์ล้มเหลวในการยืนยันโทเค็น |
steps.jwt.KeyIdMissing |
401 | นโยบาย "ยืนยัน" ใช้ JWKS เป็นแหล่งที่มาสำหรับคีย์สาธารณะ แต่ JWT ที่ลงนามไม่มีพร็อพเพอร์ตี้ kid ในส่วนหัว |
steps.jwt.KeyParsingFailed |
401 | ไม่สามารถแยกวิเคราะห์คีย์สาธารณะจากข้อมูลคีย์ที่ระบุ |
steps.jwt.NoAlgorithmFoundInHeader |
401 | เกิดขึ้นเมื่อ JWT ไม่มีส่วนหัวอัลกอริทึม |
steps.jwt.NoMatchingPublicKey |
401 | นโยบายยืนยันใช้ JWKS เป็นแหล่งที่มาสำหรับคีย์สาธารณะ แต่ kid ใน JWT ที่ลงนามแล้วไม่ได้แสดงอยู่ใน JWKS |
steps.jwt.SigningFailed |
401 | ใน GenerateJWT สำหรับคีย์ที่มีขนาดเล็กกว่าขนาดต่ำสุดสำหรับอัลกอริทึม HS384 หรือ HS512 |
steps.jwt.TokenExpired |
401 | นโยบายจะพยายามยืนยันโทเค็นที่หมดอายุ |
steps.jwt.TokenNotYetValid |
401 | โทเค็นยังไม่ถูกต้อง |
steps.jwt.UnhandledCriticalHeader |
401 | ส่วนหัวที่พบในนโยบาย "ยืนยัน JWT" ในส่วนหัว crit จะไม่ปรากฏใน KnownHeaders |
steps.jwt.UnknownException |
401 | เกิดข้อผิดพลาดที่ไม่ทราบสาเหตุ |
steps.jwt.WrongKeyType |
401 | ประเภทคีย์ที่ระบุไม่ถูกต้อง เช่น หากคุณระบุคีย์ RSA สำหรับอัลกอริทึม Elliptic Curve หรือคีย์เส้นโค้งสำหรับอัลกอริทึม RSA |
ข้อผิดพลาดในการทำให้ใช้งานได้
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อคุณใช้พร็อกซีที่มีนโยบายนี้
| ชื่อข้อผิดพลาด | สาเหตุ | แก้ไข |
|---|---|---|
InvalidNameForAdditionalClaim |
การทำให้ใช้งานได้จะล้มเหลวหากการอ้างสิทธิ์ที่ใช้ในองค์ประกอบย่อย <Claim> ขององค์ประกอบ <AdditionalClaims> มีชื่อที่จดทะเบียนอย่างใดอย่างหนึ่งต่อไปนี้ kid, iss, sub, aud, iat, exp, nbf หรือ jti
|
build |
InvalidTypeForAdditionalClaim |
หากการอ้างสิทธิ์ที่ใช้ในองค์ประกอบย่อย <Claim> ขององค์ประกอบ <AdditionalClaims> ไม่ใช่ประเภท string, number, boolean หรือ map การทำให้ใช้งานได้จะล้มเหลว
|
build |
MissingNameForAdditionalClaim |
หากไม่ได้ระบุชื่อการอ้างสิทธิ์ในองค์ประกอบย่อย <Claim> ขององค์ประกอบ <AdditionalClaims> การทำให้ใช้งานได้จะล้มเหลว
|
build |
InvalidNameForAdditionalHeader |
ข้อผิดพลาดนี้จะเกิดขึ้นเมื่อชื่อของการอ้างสิทธิ์ที่ใช้ในองค์ประกอบย่อย <Claim> ขององค์ประกอบ <AdditionalClaims> เป็น alg หรือ typ
|
build |
InvalidTypeForAdditionalHeader |
หากประเภทของการอ้างสิทธิ์ที่ใช้ในองค์ประกอบย่อย <Claim> ขององค์ประกอบ <AdditionalClaims> ไม่ใช่ประเภท string, number, boolean หรือ map การทำให้ใช้งานได้จะล้มเหลว
|
build |
InvalidValueOfArrayAttribute |
ข้อผิดพลาดนี้เกิดขึ้นเมื่อค่าของแอตทริบิวต์อาร์เรย์ในองค์ประกอบย่อย <Claim> ขององค์ประกอบ <AdditionalClaims> ไม่ได้ตั้งค่าเป็น true หรือ false
|
build |
InvalidValueForElement |
หากค่าที่ระบุในองค์ประกอบ <Algorithm> ไม่ใช่ค่าที่รองรับ การทำให้ใช้งานได้จะล้มเหลว
|
build |
MissingConfigurationElement |
ข้อผิดพลาดนี้จะเกิดขึ้นหากไม่ได้ใช้องค์ประกอบ <PrivateKey> กับอัลกอริทึมตระกูล RSA หรือไม่ได้ใช้องค์ประกอบ <SecretKey> กับอัลกอริทึมครอบครัว HS
|
build |
InvalidKeyConfiguration |
หากไม่ได้กำหนดองค์ประกอบย่อย <Value> ในองค์ประกอบ <PrivateKey> หรือ <SecretKey> การทำให้ใช้งานได้จะล้มเหลว
|
build |
EmptyElementForKeyConfiguration |
หากแอตทริบิวต์ ref ขององค์ประกอบย่อย <Value> ขององค์ประกอบ <PrivateKey> หรือ <SecretKey> ว่างเปล่าหรือไม่ได้ระบุ การทำให้ใช้งานได้จะล้มเหลว
|
build |
InvalidConfigurationForVerify |
ข้อผิดพลาดนี้เกิดขึ้นหากกำหนดองค์ประกอบ <Id> ไว้ภายในองค์ประกอบ <SecretKey>
|
build |
InvalidEmptyElement |
ข้อผิดพลาดนี้เกิดขึ้นหากองค์ประกอบ <Source> ของนโยบาย "ยืนยัน JWT" ว่างเปล่า หากมี จะต้องกำหนดด้วยชื่อตัวแปรโฟลว์ Edge
|
build |
InvalidPublicKeyValue |
หากค่าที่ใช้ในองค์ประกอบย่อย <JWKS> ขององค์ประกอบ <PublicKey> ไม่ได้ใช้รูปแบบที่ถูกต้องตามที่ระบุไว้ใน RFC 7517 การทำให้ใช้งานได้จะล้มเหลว
|
build |
InvalidConfigurationForActionAndAlgorithm |
หากใช้องค์ประกอบ <PrivateKey> กับอัลกอริทึม HS Family หรือมีการใช้องค์ประกอบ <SecretKey> กับอัลกอริทึม Family ของ RSA การทำให้ใช้งานได้จะล้มเหลว
|
build |
ตัวแปรความผิดพลาด
ระบบจะตั้งค่าตัวแปรเหล่านี้เมื่อเกิดข้อผิดพลาดรันไทม์ โปรดดูข้อมูลเพิ่มเติมที่หัวข้อสิ่งที่คุณจำเป็นต้องทราบ เกี่ยวกับข้อผิดพลาดของนโยบาย
| ตัวแปร | สถานที่ | ตัวอย่าง |
|---|---|---|
fault.name="fault_name" |
fault_name คือชื่อของข้อผิดพลาดตามที่ระบุไว้ในตารางข้อผิดพลาดรันไทม์ด้านบน ชื่อข้อผิดพลาดคือส่วนสุดท้ายของรหัสข้อผิดพลาด | fault.name Matches "TokenExpired" |
JWT.failed |
นโยบาย JWT ทั้งหมดตั้งค่าตัวแปรเดียวกันในกรณีที่ดำเนินการไม่สำเร็จ | JWT.failed = true |
ตัวอย่างการตอบสนองข้อผิดพลาด
สำหรับการจัดการข้อผิดพลาด แนวทางปฏิบัติแนะนำคือให้ดักจับส่วน errorcode ของข้อผิดพลาด
คำตอบ อย่าพึ่งพาข้อความใน faultstring เนื่องจากอาจมีการเปลี่ยนแปลง
ตัวอย่างกฎข้อผิดพลาด
<FaultRules>
<FaultRule name="JWT Policy Errors">
<Step>
<Name>JavaScript-1</Name>
<Condition>(fault.name Matches "TokenExpired")</Condition>
</Step>
<Condition>JWT.failed=true</Condition>
</FaultRule>
</FaultRules>