นโยบายVerifyJWT

คุณกําลังดูเอกสาร 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 จะบังคับใช้ข้อจํากัดเพิ่มเติม เช่น นําอักขระที่ไม่ใช่ตัวอักษรและตัวเลขคละกันออกโดยอัตโนมัติ

ใช้องค์ประกอบ <displayname></displayname> เพื่อติดป้ายกํากับนโยบายในตัวแก้ไขพร็อกซี UI การจัดการด้วยชื่อภาษาอื่นที่เป็นธรรมชาติ

ไม่มีข้อมูล จำเป็น
ข้อผิดพลาดแบบต่อเนื่อง ตั้งค่าเป็น false เพื่อแสดงข้อผิดพลาดเมื่อนโยบายล้มเหลว ซึ่งเป็นลักษณะการทํางานที่คาดหวังสําหรับนโยบายส่วนใหญ่

ตั้งค่าเป็น true เพื่อให้การดําเนินการโฟลว์ดําเนินต่อไปได้แม้ว่านโยบายจะล้มเหลวก็ตาม

เท็จ ไม่บังคับ
เปิดใช้อยู่ ตั้งค่าเป็น true เพื่อบังคับใช้นโยบาย

ตั้งค่าเป็น false เพื่อ "ปิด" นโยบาย ระบบจะไม่บังคับใช้นโยบายแม้ว่าจะยังคงแนบไปกับโฟลว์

จริง ไม่บังคับ
ไม่พร้อมกัน แอตทริบิวต์นี้เลิกใช้งานแล้ว เท็จ เลิกใช้

<ชื่อที่แสดง>

<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
ประเภท สตริง
ค่าที่ถูกต้อง ตัวแปรโฟลวที่อ้างอิงสตริง

หมายเหตุ: หากตัวแปรโฟลว์ ตัวแปรต้องมีคํานําหน้าเป็น "ส่วนตัว" เช่น private.mysecret

<แหล่งที่มา>

<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 วินาที (ไม่มีระยะเวลาผ่อนผัน)
การแสดงข้อมูล ไม่บังคับ
ประเภท สตริง
ค่าที่ถูกต้อง ค่าหรือการอ้างอิงไปยังตัวแปรโฟลว์ที่มีค่า ช่วงเวลาต่างๆ มีดังนี้
  • s = วินาที
  • m = นาที
  • h = ชั่วโมง
  • d = วัน

ตัวแปรโฟลว์

เมื่อทำสำเร็จ นโยบายยืนยัน 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
InvalidTypeForAdditionalClaim หากการอ้างสิทธิ์ที่ใช้ในองค์ประกอบย่อย <Claim> ขององค์ประกอบ <AdditionalClaims> ไม่ใช่ประเภท string, number, boolean หรือ map การทําให้ใช้งานได้จะล้มเหลว
MissingNameForAdditionalClaim หากไม่มีการระบุชื่อการอ้างสิทธิ์ในองค์ประกอบย่อย <Claim> ขององค์ประกอบ <AdditionalClaims> การทําให้ใช้งานได้จะล้มเหลว
InvalidNameForAdditionalHeader ข้อผิดพลาดนี้จะเกิดขึ้นเมื่อชื่อการอ้างสิทธิ์ที่ใช้ในองค์ประกอบย่อย <Claim> ขององค์ประกอบ <AdditionalClaims> คือ alg หรือ typ
InvalidTypeForAdditionalHeader หากประเภทการอ้างสิทธิ์ที่ใช้ในองค์ประกอบย่อย <Claim> ขององค์ประกอบ <AdditionalClaims> ไม่ใช่ประเภท string, number, boolean หรือ map การทําให้ใช้งานได้จะล้มเหลว
InvalidValueOfArrayAttribute ข้อผิดพลาดนี้เกิดขึ้นเมื่อค่าของแอตทริบิวต์อาร์เรย์ในองค์ประกอบย่อย <Claim> ขององค์ประกอบ <AdditionalClaims> ไม่ได้ตั้งค่าเป็น true หรือ false
InvalidValueForElement ถ้าค่าที่ระบุในองค์ประกอบ <Algorithm> ไม่ใช่ค่าที่รองรับ การทําให้ใช้งานได้จะล้มเหลว
MissingConfigurationElement ข้อผิดพลาดนี้จะเกิดขึ้นหากไม่ได้ใช้องค์ประกอบ <PrivateKey> กับอัลกอริทึมครอบครัว RSA หรือองค์ประกอบ <SecretKey> ใช้กับอัลกอริทึม HS สําหรับครอบครัว
InvalidKeyConfiguration หากไม่ได้กําหนดองค์ประกอบย่อย <Value> ในองค์ประกอบ <PrivateKey> หรือ <SecretKey> การทําให้ใช้งานได้จะล้มเหลว
EmptyElementForKeyConfiguration หากแอตทริบิวต์ ref ขององค์ประกอบย่อย <Value> ขององค์ประกอบ <PrivateKey> หรือ <SecretKey> ว่างเปล่าหรือไม่ได้ระบุ การทําให้ใช้งานได้จะล้มเหลว
InvalidConfigurationForVerify ข้อผิดพลาดนี้เกิดขึ้นหากมีการกําหนดองค์ประกอบ <Id> ภายในองค์ประกอบ <SecretKey>
InvalidEmptyElement ข้อผิดพลาดนี้จะเกิดขึ้นหากองค์ประกอบ <Source> ของนโยบายยืนยัน JWT ว่างเปล่า หากกําหนดไว้ ต้องกําหนดด้วยชื่อตัวแปรโฟลว์ Edge
InvalidPublicKeyValue หากค่าที่ใช้ในองค์ประกอบย่อย <JWKS> ขององค์ประกอบ <PublicKey> ไม่ได้ใช้รูปแบบที่ถูกต้องตามที่ระบุไว้ใน RFC 7517 การทําให้ใช้งานได้จะล้มเหลว
InvalidConfigurationForActionAndAlgorithm หากใช้องค์ประกอบ <PrivateKey> กับอัลกอริทึม HS Family หรือใช้องค์ประกอบ <SecretKey> กับอัลกอริทึม RSA สําหรับครอบครัว การทําให้ใช้งานได้จะไม่สําเร็จ

ตัวแปรที่ผิดพลาด

ระบบจะกําหนดตัวแปรเหล่านี้เมื่อเกิดข้อผิดพลาดรันไทม์ สําหรับข้อมูลเพิ่มเติม โปรดดูสิ่งที่คุณจําเป็นต้องทราบเกี่ยวกับข้อผิดพลาดของนโยบาย

ตัวแปร สถานที่ ตัวอย่าง
fault.name="fault_name" fault_name คือชื่อของข้อผิดพลาดดังที่แสดงในตารางข้อผิดพลาดของรันไทม์ด้านบน ชื่อ Fault คือส่วนสุดท้ายของโค้ด Fault fault.name Matches "TokenExpired"
JWT.failed นโยบาย JWT ทั้งหมดจะกําหนดตัวแปรเดียวกันในกรณีที่เกิดความล้มเหลว JWT.failed = true

ตัวอย่างการตอบสนองต่อข้อผิดพลาด

รหัสข้อผิดพลาดของนโยบาย JWT

สําหรับการจัดการข้อผิดพลาด แนวทางปฏิบัติที่ดีที่สุดคือการเก็บส่วนของ 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>