คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่
เอกสารประกอบเกี่ยวกับ Apigee X. ข้อมูล
อะไร
ยืนยันลายเซ็นบน 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 ซึ่งอาจ ได้มาจาก Edge KVM เป็นต้น) และชุดของการอ้างสิทธิ์ที่จำเป็น และ
<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."
}... จะถูกพิจารณาว่าไม่ถูกต้อง แม้ว่าจะสามารถยืนยันลายเซ็นได้ เนื่องจาก "ย่อย" การอ้างสิทธิ์ที่รวมอยู่ใน 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> |
|
| *สำหรับข้อมูลเพิ่มเติมเกี่ยวกับข้อกำหนดของคีย์ โปรดดู เกี่ยวกับอัลกอริทึมการเข้ารหัสลายเซ็น | ||
การอ้างอิงองค์ประกอบ
การอ้างอิงนโยบายอธิบายองค์ประกอบและแอตทริบิวต์ของนโยบาย Verify JWT
หมายเหตุ: การกำหนดค่าจะแตกต่างกันไปขึ้นอยู่กับการเข้ารหัส อัลกอริทึมที่คุณใช้ ดูตัวอย่างสำหรับตัวอย่างที่แสดง สำหรับ Use Case เฉพาะ
แอตทริบิวต์ที่ใช้กับ องค์ประกอบระดับบนสุด
<VerifyJWT name="JWT" continueOnError="false" enabled="true" async="false">
แอตทริบิวต์ต่อไปนี้มีอยู่ในองค์ประกอบระดับบนสุดของนโยบายทั้งหมด
| แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การตรวจหาบุคคล |
|---|---|---|---|
| ชื่อ |
ชื่อภายในของนโยบาย อักขระที่คุณสามารถใช้ในชื่อจะถูกจำกัดไว้เฉพาะ:
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 เพื่อระบุว่าค่านั้นเป็นอาร์เรย์ประเภท ค่าเริ่มต้น: เท็จ |
| ค่าที่ถูกต้อง | ค่าใดก็ได้ที่คุณต้องการใช้สำหรับการอ้างสิทธิ์เพิ่มเติม |
องค์ประกอบ <Claim> ใช้แอตทริบิวต์ต่อไปนี้
- name - (ต้องระบุ) ชื่อของการอ้างสิทธิ์
- ref - (ไม่บังคับ) ชื่อของตัวแปรโฟลว์ หากมี นโยบายจะใช้ค่าของค่านี้ เป็นการอ้างสิทธิ์ ถ้ามีการระบุทั้งแอตทริบิวต์ ref และค่าการอ้างสิทธิ์ที่ชัดเจนค่า Explicit เป็นค่าเริ่มต้น และจะใช้เมื่อตัวแปรโฟลว์ที่อ้างอิงยังไม่ได้รับการระบุ
- type - (ไม่บังคับ) ข้อใดข้อหนึ่ง: สตริง (ค่าเริ่มต้น) ตัวเลข บูลีน หรือแผนที่
- array - (ไม่บังคับ) ตั้งค่าเป็น true เพื่อระบุว่าค่านั้นเป็นอาร์เรย์ประเภท ค่าเริ่มต้น: เท็จ
เมื่อคุณรวมองค์ประกอบ <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 เพื่อระบุว่าค่านั้นเป็นอาร์เรย์ประเภท ค่าเริ่มต้น: เท็จ |
| ค่าที่ถูกต้อง | ค่าใดก็ได้ที่คุณต้องการใช้สำหรับการอ้างสิทธิ์เพิ่มเติม |
องค์ประกอบ <Claim> ใช้แอตทริบิวต์ต่อไปนี้
- name - (ต้องระบุ) ชื่อของการอ้างสิทธิ์
- ref - (ไม่บังคับ) ชื่อของตัวแปรโฟลว์ หากมี นโยบายจะใช้ค่าของค่านี้ เป็นการอ้างสิทธิ์ ถ้ามีการระบุทั้งแอตทริบิวต์ ref และค่าการอ้างสิทธิ์ที่ชัดเจนค่า Explicit เป็นค่าเริ่มต้น และจะใช้เมื่อตัวแปรโฟลว์ที่อ้างอิงยังไม่ได้รับการระบุ
- type - (ไม่บังคับ) ข้อใดข้อหนึ่ง: สตริง (ค่าเริ่มต้น) ตัวเลข บูลีน หรือแผนที่
- array - (ไม่บังคับ) ตั้งค่าเป็น true เพื่อระบุว่าค่านั้นเป็นอาร์เรย์ประเภท ค่าเริ่มต้น: เท็จ
<CustomClaims>
หมายเหตุ: ขณะนี้ระบบจะแทรกองค์ประกอบ CustomClaims เมื่อคุณเพิ่ม นโยบาย GenerateJWT ผ่าน UI องค์ประกอบนี้ไม่ทำงานและจะถูกละเว้น ที่ถูกต้อง องค์ประกอบที่จะใช้แทนคือ <AdditionalClaims> UI จะอัปเดตเพื่อแทรกองค์ประกอบที่ถูกต้องในภายหลัง
<Id>
<Id>explicit-jti-value-here</Id> -or- <Id ref='variable-name-here'/> -or- <Id/>
ยืนยันว่า JWT มีการอ้างสิทธิ์ jti ที่เฉพาะเจาะจง เมื่อค่าข้อความและการอ้างอิง ทั้ง 2 แอตทริบิวต์ว่างเปล่า นโยบายจะสร้าง jti ที่มี UUID แบบสุ่ม รหัส JWT (jti) คือตัวระบุที่ไม่ซ้ำสำหรับ JWT ดูข้อมูลเพิ่มเติมเกี่ยวกับ jti ได้ที่ RFC7519
| ค่าเริ่มต้น | ไม่มี |
| การตรวจหาบุคคล | ไม่บังคับ |
| ประเภท | สตริงหรือการอ้างอิง |
| ค่าที่ถูกต้อง | สตริงหรือชื่อของตัวแปรโฟลว์ที่มีรหัส |
<IgnoreCriticalHeaders>
<IgnoreCriticalHeaders>true|false</IgnoreCriticalHeaders>
ตั้งค่าเป็น "เท็จ" หากต้องการให้นโยบายแสดงข้อผิดพลาดเมื่อมีส่วนหัวแสดงอยู่ใน
ส่วนหัว crit ของ JWT ไม่แสดงในองค์ประกอบ <KnownHeaders>
ตั้งค่าเป็น true เพื่อให้นโยบาย VerifyJWT ไม่สนใจส่วนหัว crit
เหตุผลหนึ่งที่ควรตั้งค่าองค์ประกอบนี้ให้เป็น "จริง" คือหากคุณอยู่ในสภาพแวดล้อมการทดสอบและยังไม่ได้ พร้อมที่จะรองรับความล้มเหลวในส่วนหัวที่ขาดหายไป
| ค่าเริ่มต้น | เท็จ |
| การตรวจหาบุคคล | ไม่บังคับ |
| ประเภท | บูลีน |
| ค่าที่ถูกต้อง | จริงหรือเท็จ |
<IgnoreIssuedAt>
<IgnoreIssuedAt>true|false</IgnoreIssuedAt>
ตั้งค่าเป็น "เท็จ" (ค่าเริ่มต้น) หากต้องการให้นโยบายแสดงข้อผิดพลาดเมื่อ JWT มี
การอ้างสิทธิ์ iat (ออกเมื่อ) ที่ระบุเวลาในอนาคต
ตั้งค่าเป็น "จริง" เพื่อให้นโยบายไม่สนใจ iat ในระหว่างการยืนยัน
| ค่าเริ่มต้น | เท็จ |
| การตรวจหาบุคคล | ไม่บังคับ |
| ประเภท | บูลีน |
| ค่าที่ถูกต้อง | จริงหรือเท็จ |
<IgnoreUnresolvedVariables>
<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>
ตั้งค่าเป็น "เท็จ" หากต้องการให้นโยบายแสดงข้อผิดพลาดเมื่อระบุตัวแปรที่อ้างอิงไว้ ในนโยบายนั้นไม่สามารถแก้ปัญหาได้ ตั้งค่าเป็น "จริง" เพื่อจัดการตัวแปรที่แปลงไม่ได้ใดๆ เป็นสตริงว่าง (Null)
| ค่าเริ่มต้น | เท็จ |
| การตรวจหาบุคคล | ไม่บังคับ |
| ประเภท | บูลีน |
| ค่าที่ถูกต้อง | จริงหรือเท็จ |
<Issuer>
<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> สามารถมี Superset ของรายการที่ระบุใน 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 ใช้แอตทริบิวต์อ้างอิงเพื่อ ส่งใบรับรองที่ลงชื่อในตัวแปรโฟลว์ หรือระบุใบรับรองที่เข้ารหัส PEM โดยตรง ใช้เมื่ออัลกอริทึมเป็น RS256/RS384/RS512, PS256/PS384/PS512 หรือ ES256/ES384/ES512 เท่านั้น
| ค่าเริ่มต้น | ไม่มี |
| การตรวจหาบุคคล | ในการยืนยัน JWT ที่ลงนามด้วยอัลกอริทึม RSA คุณต้องใช้ Certificate, 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 คุณต้องใช้ Certificate, 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 ใช้แอตทริบิวต์อ้างอิงเพื่อ ส่งคีย์/ใบรับรองในตัวแปรโฟลว์ หรือระบุคีย์ที่เข้ารหัส PEM โดยตรง ใช้เมื่อ ซึ่งเป็นหนึ่งใน RS256/RS384/RS512, PS256/PS384/PS512 หรือ ES256/ES384/ES512
| ค่าเริ่มต้น | ไม่มี |
| การตรวจหาบุคคล | ในการยืนยัน JWT ที่ลงนามด้วยอัลกอริทึม RSA คุณต้องใช้ Certificate, 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 วินาทีหลังวันหมดอายุที่ยืนยัน ระบบจะประเมินผลลัพธ์ที่เกิดขึ้นก่อนหน้าในลักษณะที่คล้ายกันนี้ ค่าเริ่มต้นคือ 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>