คุณกําลังดูเอกสาร 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> <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> <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
หมายเหตุ: การกําหนดค่าจะแตกต่างกันบ้างขึ้นอยู่กับอัลกอริทึมการเข้ารหัสที่คุณใช้ โปรดดูตัวอย่างสําหรับตัวอย่างที่แสดงการกําหนดค่าสําหรับกรณีการใช้งานที่เฉพาะเจาะจง
แอตทริบิวต์ที่ใช้กับองค์ประกอบระดับบนสุด
<VerifyJWT name="JWT" continueOnError="false" enabled="true" async="false">
แอตทริบิวต์ต่อไปนี้พบได้ทั่วไปในองค์ประกอบระดับบนสุดทั้งหมดของนโยบาย
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การแสดงข้อมูล |
---|---|---|---|
ชื่อ |
ชื่อภายในของนโยบาย อักขระที่คุณสามารถใช้ในชื่อถูกจํากัดไว้ที่: A-Z0-9._\-$ % แต่ UI การจัดการ Edge จะบังคับใช้ข้อจํากัดเพิ่มเติม เช่น นําอักขระที่ไม่ใช่ตัวอักษรและตัวเลขคละกันออกโดยอัตโนมัติ
ใช้องค์ประกอบ |
ไม่มีข้อมูล | จำเป็น |
ข้อผิดพลาดแบบต่อเนื่อง |
ตั้งค่าเป็น false เพื่อแสดงข้อผิดพลาดเมื่อนโยบายล้มเหลว ซึ่งเป็นลักษณะการทํางานที่คาดหวังสําหรับนโยบายส่วนใหญ่
ตั้งค่าเป็น |
เท็จ | ไม่บังคับ |
เปิดใช้อยู่ |
ตั้งค่าเป็น true เพื่อบังคับใช้นโยบาย
ตั้งค่าเป็น |
จริง | ไม่บังคับ |
ไม่พร้อมกัน | แอตทริบิวต์นี้เลิกใช้งานแล้ว | เท็จ | เลิกใช้ |
<ชื่อที่แสดง>
<DisplayName>Policy Display Name</DisplayName>
ใช้เพิ่มเติมจากแอตทริบิวต์ name เพื่อติดป้ายกํากับนโยบายในตัวแก้ไขพร็อกซี UI การจัดการด้วยชื่อภาษาอื่นที่เป็นธรรมชาติ
ค่าเริ่มต้น | หากคุณไม่ใช้องค์ประกอบนี้ ระบบจะใช้ค่าของแอตทริบิวต์ชื่อนโยบาย |
การแสดงข้อมูล | ไม่บังคับ |
ประเภท | สตริง |
<อัลกอริทึม>
<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-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 และค่าการอ้างสิทธิ์อย่างชัดแจ้ง ค่าปกติจะเป็นค่าเริ่มต้น และจะใช้เมื่อไม่มีการแก้ไขตัวแปรโฟลวที่อ้างถึง
- 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 และค่าการอ้างสิทธิ์อย่างชัดแจ้ง ค่าปกติจะเป็นค่าเริ่มต้น และจะใช้เมื่อไม่มีการแก้ไขตัวแปรโฟลวที่อ้างถึง
- type - (ไม่บังคับ) สตริงใดสตริงหนึ่ง (ค่าเริ่มต้น) ตัวเลข บูลีน หรือแผนที่
- array - (ไม่บังคับ) ตั้งค่าเป็น true เพื่อระบุว่าค่าดังกล่าวเป็นอาร์เรย์ของประเภทหรือไม่ ค่าเริ่มต้น: เท็จ
<CustomClaims>
หมายเหตุ: ในขณะนี้ ระบบจะแทรกองค์ประกอบการอ้างสิทธิ์ที่กําหนดเองเมื่อคุณเพิ่มนโยบาย GenerateJWT ใหม่ผ่าน UI องค์ประกอบนี้ไม่ทํางานและถูกข้ามไป องค์ประกอบที่ถูกต้องที่จะใช้คือ <AdditionalClaims> ระบบจะอัปเดต UI เพื่อแทรกองค์ประกอบที่ถูกต้องในภายหลัง
<รหัส>
<Id>explicit-jti-value-here</Id> -or- <Id ref='variable-name-here'/> -or- <Id/>
ยืนยันว่า JWT มีการอ้างสิทธิ์ jti ที่เฉพาะเจาะจง เมื่อทั้งค่าของข้อความและแอตทริบิวต์การอ้างอิงว่างเปล่า นโยบายจะสร้าง jti ที่มี UUID แบบสุ่ม การอ้างสิทธิ์รหัส JWT (jti) คือตัวระบุที่ไม่ซ้ําสําหรับ JWT โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับ jti ที่ RFC7519
ค่าเริ่มต้น | ไม่มีข้อมูล |
การแสดงข้อมูล | ไม่บังคับ |
ประเภท | เป็นสตริงหรือการอ้างอิง |
ค่าที่ถูกต้อง | สตริงหรือชื่อของตัวแปรโฟลว์ที่มีรหัส |
<ละเว้นCriticalHeaders>
<IgnoreCriticalHeaders>true|false</IgnoreCriticalHeaders>
ตั้งค่าเป็น false หากต้องการให้นโยบายแสดงข้อผิดพลาดเมื่อส่วนหัวที่อยู่ในส่วนหัว crit ของ JWT ไม่แสดงอยู่ในองค์ประกอบ <KnownHeaders>
ตั้งค่าเป็น "จริง" เพื่อให้นโยบาย "ยืนยัน JJT" ไม่สนใจส่วนหัว crit
เหตุผลหนึ่งที่ทําให้องค์ประกอบนี้เป็นจริงคือหากคุณอยู่ในสภาพแวดล้อมการทดสอบ และยังไม่พร้อมรองรับความล้มเหลวในส่วนหัวที่ขาดหายไป
ค่าเริ่มต้น | เท็จ |
การแสดงข้อมูล | ไม่บังคับ |
ประเภท | บูลีน |
ค่าที่ถูกต้อง | จริงหรือเท็จ |
<ละเว้นIssuedAt>
<IgnoreIssuedAt>true|false</IgnoreIssuedAt>
ตั้งค่าเป็น "เท็จ" (ค่าเริ่มต้น) หากต้องการให้นโยบายแสดงข้อผิดพลาดเมื่อ JWT มีการอ้างสิทธิ์ iat
(ออกเมื่อ) ซึ่งระบุเวลาในอนาคต
ตั้งค่าเป็น "จริง" เพื่อทําให้นโยบายไม่สนใจ iat
ระหว่างการยืนยัน
ค่าเริ่มต้น | เท็จ |
การแสดงข้อมูล | ไม่บังคับ |
ประเภท | บูลีน |
ค่าที่ถูกต้อง | จริงหรือเท็จ |
<ละเว้นตัวแปรที่ไม่ได้แก้ไข>
<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>
ตั้งค่าเป็น "เท็จ" หากต้องการให้นโยบายแสดงข้อผิดพลาดเมื่อแก้ไขตัวแปรอ้างอิงที่ระบุในนโยบายไม่ได้ ตั้งค่าเป็น "จริง" เพื่อใช้ตัวแปรที่แก้ไขไม่ได้เป็นสตริงว่างเปล่า (null)
ค่าเริ่มต้น | เท็จ |
การแสดงข้อมูล | ไม่บังคับ |
ประเภท | บูลีน |
ค่าที่ถูกต้อง | จริงหรือเท็จ |
<ผู้ออก>
<Issuer ref='variable-name-here'/> <Issuer>issuer-string-here</Issuer>
นโยบายนี้จะยืนยันว่าผู้ออกใบรับรองใน JWT ตรงกับสตริงที่ระบุไว้ในองค์ประกอบการกําหนดค่า การอ้างสิทธิ์ที่ระบุผู้ออก JWT นี่เป็นชุดการอ้างสิทธิ์ที่ลงทะเบียน 1 รายการซึ่งระบุไว้ใน RFC7519
ค่าเริ่มต้น | ไม่มีข้อมูล |
การแสดงข้อมูล | ไม่บังคับ |
ประเภท | สตริงหรือข้อมูลอ้างอิง |
ค่าที่ถูกต้อง | ตามแต่ละประเทศ |
<ส่วนหัวที่รู้จัก>
<KnownHeaders>a,b,c</KnownHeaders> or: <KnownHeaders ref=’variable_containing_headers’/>
นโยบาย CreateJWT ใช้องค์ประกอบ <CriticalHeaders>
เพื่อเติมส่วนหัว crit ใน JWT เช่น
{ “typ: “...”, “alg” : “...”, “crit” : [ “a”, “b”, “c” ], }
นโยบาย CheckJWT จะตรวจสอบส่วนหัว crit ใน JWT ถ้ามี และสําหรับส่วนหัวแต่ละรายการที่แสดงอยู่ ให้ตรวจสอบว่าองค์ประกอบ <KnownHeaders>
แสดงส่วนหัวดังกล่าวด้วย องค์ประกอบ <KnownHeaders>
อาจมีชุดซูเปอร์เซ็ตของรายการที่ระบุไว้ใน crit
จําเป็นเท่านั้นว่าส่วนหัวทั้งหมดที่แสดงใน crit จะแสดงอยู่ในองค์ประกอบ <KnownHeaders>
ส่วนหัวที่นโยบายพบใน crit ซึ่งไม่ได้ระบุไว้ใน <KnownHeaders>
ด้วยจะทําให้นโยบาย CheckJWT ล้มเหลว
คุณกําหนดค่านโยบาย "ยืนยัน JJT" เพื่อละเว้นส่วนหัว 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 หรือ 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 คุณต้องใช้ใบรับรอง, 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 หรือ Value |
ประเภท | สตริง |
ค่าที่ถูกต้อง | ตัวแปรหรือสตริงโฟลว์ |
<รหัสลับ/ค่า>
<SecretKey> <Value ref="private.your-variable-name"/> </SecretKey>
ระบุคีย์ลับที่ใช้เพื่อยืนยันหรือลงชื่อโทเค็นด้วยอัลกอริทึม HMAC ใช้เมื่ออัลกอริทึมเป็นส่วนหนึ่งของ HS256, HS384, HS512 เท่านั้น ใช้แอตทริบิวต์ ref เพื่อส่งผ่านคีย์ในตัวแปรโฟลว์
ค่าเริ่มต้น | ไม่มีข้อมูล |
การแสดงข้อมูล | จําเป็นสําหรับอัลกอริทึม HMAC |
ประเภท | สตริง |
ค่าที่ถูกต้อง |
ตัวแปรโฟลวที่อ้างอิงสตริง
หมายเหตุ: หากตัวแปรโฟลว์ ตัวแปรต้องมีคํานําหน้าเป็น "ส่วนตัว" เช่น |
<แหล่งที่มา>
<Source>jwt-variable</Source>
หากมี ให้ระบุตัวแปรโฟลว์ที่นโยบายคาดว่าจะพบ JWT ที่จะยืนยัน
ค่าเริ่มต้น | request.header.authorization (ดูหมายเหตุด้านบนสําหรับข้อมูลสําคัญเกี่ยวกับค่าเริ่มต้น) |
การแสดงข้อมูล | ไม่บังคับ |
ประเภท | สตริง |
ค่าที่ถูกต้อง | ชื่อตัวแปรโฟลว์ Edge |
<หัวเรื่อง>
<Subject>subject-string-here</Subject>
นโยบายจะยืนยันว่าเรื่องใน JWT ตรงกับสตริงที่ระบุในการกําหนดค่านโยบาย การอ้างสิทธิ์นี้กําหนดหรือกล่าวถึงหัวข้อของ JWT นี่คือชุดการอ้างสิทธิ์มาตรฐานหนึ่งที่กล่าวถึงใน RFC7519
ค่าเริ่มต้น | ไม่มีข้อมูล |
การแสดงข้อมูล | ไม่บังคับ |
ประเภท | สตริง |
ค่าที่ถูกต้อง | ค่าใดก็ได้ที่ระบุหัวเรื่องไม่ซ้ํากัน |
<เวลาที่อนุญาต>
<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 |
วันที่/เวลาหมดอายุ แสดงเป็นหน่วยมิลลิวินาทีที่เริ่มนับมาตั้งแต่วันที่ 1 มกราคม ค.ศ. 1970 |
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> กับอัลกอริทึม RSA สําหรับครอบครัว การทําให้ใช้งานได้จะไม่สําเร็จ
|
build |
ตัวแปรที่ผิดพลาด
ระบบจะกําหนดตัวแปรเหล่านี้เมื่อเกิดข้อผิดพลาดรันไทม์ สําหรับข้อมูลเพิ่มเติม โปรดดูสิ่งที่คุณจําเป็นต้องทราบเกี่ยวกับข้อผิดพลาดของนโยบาย
ตัวแปร | สถานที่ | ตัวอย่าง |
---|---|---|
fault.name="fault_name" |
fault_name คือชื่อของข้อผิดพลาดดังที่แสดงในตารางข้อผิดพลาดของรันไทม์ด้านบน ชื่อ Fault คือส่วนสุดท้ายของโค้ด Fault | 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>