นโยบายVerifyJWT

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

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

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

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

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

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

จริง ไม่บังคับ
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
ประเภท สตริง
ค่าที่ถูกต้อง

สำหรับ encoding ค่าที่ถูกต้องคือ hex, base16, base64 หรือ base64url ค่าการเข้ารหัส hex และ base16 เป็นคำพ้องความหมาย

ใช้แอตทริบิวต์ ref เพื่อส่งคีย์ในตัวแปรโฟลว์

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

<ที่มา>

<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 วินาที (ไม่มีระยะเวลาผ่อนผัน)
การปรากฏ ไม่บังคับ
ประเภท สตริง
ค่าที่ถูกต้อง ค่าหรือการอ้างอิงไปยังตัวแปรโฟลว์ที่มีค่า ระยะเวลาสามารถระบุได้ดังนี้
  • 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 วันที่/เวลาหมดอายุ หน่วยเป็นมิลลิวินาทีตั้งแต่ 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
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> กับอัลกอริทึม Family ของ RSA การทำให้ใช้งานได้จะล้มเหลว

ตัวแปรของข้อผิดพลาด

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

ตัวแปร สถานที่ ตัวอย่าง
fault.name="fault_name" fault_name คือชื่อของข้อผิดพลาดตามที่แสดงในตารางข้อผิดพลาดรันไทม์ด้านบน ชื่อข้อผิดพลาดคือส่วนสุดท้ายของโค้ดข้อผิดพลาด 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>