คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X ข้อมูล
อะไร
ตรวจสอบลายเซ็นบน JWT ที่ได้รับจากไคลเอ็นต์หรือระบบอื่นๆ นโยบายนี้ยังแยกการอ้างสิทธิ์ออกเป็นตัวแปรบริบทเพื่อให้นโยบายหรือเงื่อนไขต่อๆ ไปตรวจสอบค่าเหล่านั้นเพื่อทำการตัดสินใจเรื่องการให้สิทธิ์หรือการกำหนดเส้นทาง ดูข้อมูลเบื้องต้นอย่างละเอียดได้ในภาพรวมของนโยบาย JWS และ JWT
เมื่อมีการใช้นโยบายนี้ Edge จะยืนยันลายเซ็นของ JWT และยืนยันว่า 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 ไม่ตรงกับค่าที่กำหนดขององค์ประกอบ "เรื่อง" ตามที่ระบุไว้ในการกำหนดค่านโยบาย
นโยบายจะเขียนเอาต์พุตไปยังตัวแปรบริบทเพื่อให้นโยบายหรือเงื่อนไขต่อๆ ไปในพร็อกซี API ตรวจสอบค่าเหล่านั้นได้ ดูรายการตัวแปรที่กำหนดโดยนโยบายนี้ได้ที่ตัวแปรโฟลว์
การตั้งค่าองค์ประกอบหลัก
องค์ประกอบที่คุณใช้เพื่อระบุคีย์ที่ใช้ยืนยัน JWT จะขึ้นอยู่กับอัลกอริทึมที่เลือก ดังที่แสดงในตารางต่อไปนี้
อัลกอริทึม | องค์ประกอบหลัก | |
---|---|---|
HS* |
<SecretKey encoding="base16|hex|base64|base64url"> <Value ref="private.secretkey"/> </SecretKey> |
|
RS*, สเปน*, 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"
หมายเหตุ: การกำหนดค่าจะแตกต่างไปบ้างขึ้นอยู่กับอัลกอริทึมการเข้ารหัสที่ใช้ ดูตัวอย่างสำหรับตัวอย่างที่สาธิตการกำหนดค่าสำหรับกรณีการใช้งานเฉพาะ
แอตทริบิวต์ที่ใช้กับองค์ประกอบระดับบนสุด
<VerifyJWT name="JWT" continueOnError="false" enabled="true" async="false">
แอตทริบิวต์ต่อไปนี้มีอยู่ในองค์ประกอบระดับบนสุดของนโยบายทั้งหมด
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การปรากฏ |
---|---|---|---|
ชื่อ |
ชื่อภายในของนโยบาย จำกัดอักขระที่ใช้ในชื่อได้ดังต่อไปนี้
A-Z0-9._\-$ % แต่ UI การจัดการ Edge จะบังคับใช้ข้อจํากัดเพิ่มเติม เช่น นําอักขระที่ไม่ใช่ตัวอักษรและตัวเลขคละกันออกโดยอัตโนมัติ
(ไม่บังคับ) ใช้องค์ประกอบ |
ไม่มีข้อมูล | ต้องระบุ |
continueOnError |
ตั้งค่าเป็น false เพื่อแสดงผลข้อผิดพลาดเมื่อนโยบายล้มเหลว ซึ่งถือเป็นเรื่องปกติสำหรับนโยบายส่วนใหญ่
ตั้งค่าเป็น |
false | ไม่บังคับ |
เปิดใช้อยู่ |
ตั้งค่าเป็น true เพื่อบังคับใช้นโยบาย
ตั้งค่าเป็น |
จริง | ไม่บังคับ |
async | แอตทริบิวต์นี้เลิกใช้งานแล้ว | false | เลิกใช้ |
<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 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 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 ที่จดทะเบียนตามมาตรฐานชื่อใดชื่อหนึ่ง ค่าของการอ้างสิทธิ์เพิ่มเติมอาจเป็นสตริง ตัวเลข บูลีน แผนที่ หรืออาร์เรย์ แมป เป็นเพียงชุดของคู่ชื่อ/ค่า ค่าสำหรับการอ้างสิทธิ์ประเภทใดๆ เหล่านี้ได้อย่างชัดเจนในการกำหนดค่านโยบาย หรือโดยอ้อมผ่านการอ้างอิงไปยังตัวแปรโฟลว์ก็ได้
ค่าเริ่มต้น | ไม่มีข้อมูล |
การปรากฏ | ไม่บังคับ |
ประเภท |
สตริง (ค่าเริ่มต้น) ตัวเลข บูลีน หรือแผนที่ ประเภทจะมีค่าเริ่มต้นเป็น String ถ้าไม่ได้ระบุประเภทไว้ |
อาร์เรย์ | ตั้งค่าเป็น true เพื่อระบุว่าค่าดังกล่าวเป็นอาร์เรย์ประเภทหรือไม่ ค่าเริ่มต้น: เท็จ |
ค่าที่ถูกต้อง | ค่าที่ต้องการใช้สำหรับการอ้างสิทธิ์เพิ่มเติม |
องค์ประกอบ <Claim>
มีแอตทริบิวต์ต่อไปนี้
- name - (ต้องระบุ) ชื่อของการอ้างสิทธิ์
- ref - (ไม่บังคับ) ชื่อของตัวแปรโฟลว์ หากมี นโยบายจะใช้ค่าของตัวแปรนี้เป็นการอ้างสิทธิ์ หากมีการระบุทั้งแอตทริบิวต์ ref และค่าการอ้างสิทธิ์อย่างชัดแจ้ง ระบบจะใช้ค่า Explicit เป็นค่าเริ่มต้น และจะใช้ในกรณีที่ตัวแปรขั้นตอนอ้างอิงไม่ได้รับการแก้ไข
- type - (ไม่บังคับ) ค่าใดค่าหนึ่งจาก: สตริง (ค่าเริ่มต้น), ตัวเลข, บูลีน หรือแผนที่
- array - (ไม่บังคับ) ตั้งค่าเป็น true เพื่อระบุว่าค่านี้เป็นอาร์เรย์ประเภทหรือไม่ ค่าเริ่มต้น: เท็จ
<CustomClaims>
หมายเหตุ: ปัจจุบันระบบจะแทรกองค์ประกอบ CustomClaims เมื่อคุณเพิ่มนโยบาย GenerateJWT ใหม่ผ่าน UI องค์ประกอบนี้ไม่ทำงานและจะถูกละเว้น องค์ประกอบที่ถูกต้องที่จะใช้แทนคือ <AdditionalClaims> ระบบจะอัปเดต UI เพื่อแทรกองค์ประกอบที่ถูกต้องในภายหลัง
<รหัส>
<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>
ตั้งค่าเป็น "จริง" เพื่อทำให้นโยบาย ConfirmJWT ละเว้นส่วนหัว crit
เหตุผลหนึ่งในการตั้งค่าองค์ประกอบนี้เป็น "จริง" คือหากคุณอยู่ในสภาพแวดล้อมการทดสอบและยังไม่พร้อมที่จะทําให้เกิดความล้มเหลวในส่วนหัวที่ขาดหายไป
ค่าเริ่มต้น | false |
การปรากฏ | ไม่บังคับ |
ประเภท | บูลีน |
ค่าที่ถูกต้อง | จริงหรือเท็จ |
<IgnoreIssuedAt>
<IgnoreIssuedAt>true|false</IgnoreIssuedAt>
ตั้งค่าเป็น "เท็จ" (ค่าเริ่มต้น) หากต้องการให้นโยบายแสดงข้อผิดพลาดเมื่อ JWT มีการอ้างสิทธิ์ iat
(ออกเมื่อ) ที่ระบุเวลาในอนาคต
ตั้งค่าเป็น "จริง" เพื่อทำให้นโยบายไม่สนใจ iat
ระหว่างการยืนยัน
ค่าเริ่มต้น | false |
การปรากฏ | ไม่บังคับ |
ประเภท | บูลีน |
ค่าที่ถูกต้อง | จริงหรือเท็จ |
<IgnoreUnresolvedVariables>
<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>
ตั้งค่าเป็น "เท็จ" หากต้องการให้นโยบายแสดงข้อผิดพลาดเมื่อตัวแปรที่อ้างอิงที่ระบุไว้ในนโยบายแก้ไขไม่ได้ ตั้งค่าเป็น true เพื่อทำให้ตัวแปรที่แก้ไขไม่ได้เป็นสตริงว่าง (Null)
ค่าเริ่มต้น | false |
การปรากฏ | ไม่บังคับ |
ประเภท | บูลีน |
ค่าที่ถูกต้อง | จริงหรือเท็จ |
<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” ], }
นโยบาย ConfirmJWT จะตรวจสอบส่วนหัว crit ใน JWT หากมี และสำหรับส่วนหัวแต่ละรายการที่ระบุไว้ ระบบจะตรวจสอบว่าองค์ประกอบ <KnownHeaders>
แสดงส่วนหัวนั้นด้วย องค์ประกอบ <KnownHeaders>
อาจมีชุดพิเศษของรายการที่แสดงใน crit
เพียงแต่จำเป็นต้องให้ส่วนหัวทั้งหมดที่ระบุไว้ใน crit แสดงอยู่ในองค์ประกอบ <KnownHeaders>
ส่วนหัวที่นโยบายพบใน crit ที่ไม่ได้ระบุไว้ใน <KnownHeaders>
จะทำให้นโยบาย ConfirmJWT ล้มเหลว
คุณจะกำหนดค่านโยบาย ConfirmJWT ให้ละเว้นส่วนหัว crit ได้โดยการตั้งค่าองค์ประกอบ <IgnoreCriticalHeaders>
เป็น true
ค่าเริ่มต้น | ไม่มีข้อมูล |
การปรากฏ | ไม่บังคับ |
ประเภท | อาร์เรย์ของสตริงที่คั่นด้วยเครื่องหมายจุลภาค |
ค่าที่ถูกต้อง | อาร์เรย์หรือชื่อของตัวแปรที่มีอาร์เรย์ |
<PublicKey/ใบรับรอง>
<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 คุณต้องใช้องค์ประกอบ Certificate, JWKS หรือ Value |
ประเภท | สตริง |
ค่าที่ถูกต้อง | ตัวแปรหรือสตริงโฟลว์ |
<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 หรือ Value |
ประเภท | สตริง |
ค่าที่ถูกต้อง | ตัวแปรโฟลว์ ค่าสตริง หรือ 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 คุณต้องใช้องค์ประกอบ Certificate, JWKS หรือ Value |
ประเภท | สตริง |
ค่าที่ถูกต้อง | ตัวแปรหรือสตริงโฟลว์ |
<SecretKey/Value>
<SecretKey encoding="base16|hex|base64|base64url"> <Value ref="private.your-variable-name"/> </SecretKey>
ระบุคีย์ลับที่ใช้ยืนยันหรือลงนามโทเค็นด้วยอัลกอริทึม HMAC ใช้เฉพาะเมื่ออัลกอริทึมเป็นหนึ่งใน HS256, HS384, HS512
ค่าเริ่มต้น | ไม่มีข้อมูล |
การปรากฏ | จำเป็นสำหรับอัลกอริทึม HMAC |
ประเภท | สตริง |
ค่าที่ถูกต้อง |
สำหรับ ใช้แอตทริบิวต์ ref เพื่อส่งคีย์ในตัวแปรโฟลว์ หมายเหตุ: หากตัวแปรโฟลว์ต้องมีคำนำหน้าว่า "private" เช่น |
<ที่มา>
<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 วินาที (ไม่มีระยะเวลาผ่อนผัน) |
การปรากฏ | ไม่บังคับ |
ประเภท | สตริง |
ค่าที่ถูกต้อง |
ค่าหรือการอ้างอิงไปยังตัวแปรโฟลว์ที่มีค่า ระยะเวลาสามารถระบุได้ดังนี้
|
ตัวแปรโฟลว์
เมื่อสำเร็จ นโยบาย ยืนยัน JWT และ ถอดรหัส 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 |
ค่าของการอ้างสิทธิ์ที่มีชื่อ (มาตรฐานหรือเพิ่มเติม) ในเพย์โหลด โดยจะตั้งค่า 1 รายการสำหรับการอ้างสิทธิ์ทุกรายการในเพย์โหลด |
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 |
ในกรณีของ ConfirmJWT ตัวแปรนี้จะเป็นจริงเมื่อลายเซ็นได้รับการยืนยัน และเวลาปัจจุบันคือก่อนที่โทเค็นจะหมดอายุ และหลังจากค่า 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>