นโยบาย GenerateJWS

คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X
ข้อมูล

อะไร

สร้าง JWS ที่ลงชื่อ พร้อมชุดการอ้างสิทธิ์ที่กำหนดค่าได้ จากนั้น JWS สามารถส่งคืนไปยังไคลเอ็นต์ ส่งไปยังเป้าหมายแบ็กเอนด์ หรือใช้วิธีอื่นได้ ดูข้อมูลเบื้องต้นอย่างละเอียดได้ในภาพรวมของนโยบาย JWS และ JWT

ดูข้อมูลเกี่ยวกับส่วนต่างๆ ของ JWS และวิธีเข้ารหัสและรับรองส่วนต่างๆ ของ JWS ได้ที่ RFC7515

วิดีโอ

ดูวิดีโอสั้นๆ เพื่อดูวิธีสร้าง JWT พร้อมลายเซ็น แม้ว่าวิดีโอนี้จะมีเนื้อหาเกี่ยวกับการสร้าง JWT โดยเฉพาะ แต่แนวคิดส่วนใหญ่ของ JWS ก็เหมือนกัน

ลองฟัง

สร้าง JWS ที่แนบมาที่ลงนามด้วยอัลกอริทึม HS256

นโยบายตัวอย่างนี้สร้าง JWS ที่แนบมาและลงนามโดยใช้อัลกอริทึม HS256 HS256 ใช้ข้อมูลลับที่ใช้ร่วมกันทั้งในการลงนามและยืนยันลายเซ็น

JWS ที่ต่อเชื่อมมีส่วนหัว เพย์โหลด และลายเซ็นที่เข้ารหัส ดังนี้

header.payload.signature

ตั้งค่า <DetachContent> เป็น true เพื่อสร้างเนื้อหาที่แยกส่วน ดูส่วนต่างๆ ของ JWS/JWT เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับโครงสร้างและรูปแบบของ JWS

ใช้องค์ประกอบ <Payload> เพื่อระบุเพย์โหลด JWS แบบข้อมูลดิบ ในตัวอย่างนี้ ตัวแปรจะเก็บเพย์โหลด เมื่อมีการเรียกใช้การดำเนินการนโยบายนี้ Edge จะเข้ารหัสส่วนหัว JWS และเพย์โหลด จากนั้นเพิ่มลายเซ็นที่เข้ารหัสเพื่อลงนาม JWS แบบดิจิทัล

การกำหนดค่านโยบายด้านล่างจะสร้าง JWS จากเพย์โหลดที่อยู่ในตัวแปร private.payload

<GenerateJWS name="JWS-Generate-HS256">
    <DisplayName>JWS Generate HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <SecretKey>
        <Value ref="private.secretkey"/>
        <Id>1918290</Id>
    </SecretKey>
    <Payload ref="private.payload" />
    <OutputVariable>jws-variable</OutputVariable>
</GenerateJWS>

สร้าง JWS ที่ปลดออกซึ่งลงนามด้วยอัลกอริทึม RS256

นโยบายตัวอย่างนี้สร้าง JWS ที่แยกออกมาและลงนามโดยใช้อัลกอริทึม RS256 การสร้างลายเซ็น RS256 ต้องใช้คีย์ส่วนตัว RSA ซึ่งต้องระบุในรูปแบบที่เข้ารหัส PEM

JWS ที่แยกออกมาจะละเว้นเพย์โหลดจาก JWS ดังนี้

header..signature

ใช้องค์ประกอบ <Payload> เพื่อระบุเพย์โหลด JWS แบบข้อมูลดิบ เมื่อเรียกใช้นโยบายนี้ Edge จะเข้ารหัสส่วนหัว JWS และเพย์โหลด จากนั้นใช้ทั้งสองรายการเพื่อสร้างลายเซ็นที่เข้ารหัส อย่างไรก็ตาม JWS ที่สร้างขึ้นจะละเว้นเพย์โหลด คุณจะส่งผ่านเพย์โหลดไปยังนโยบาย ConfirmJWS โดยใช้องค์ประกอบ <DetachedContent> ของนโยบาย VerificationJWS ได้

<GenerateJWS name="JWS-Generate-RS256">
    <DisplayName>JWS Generate RS256</DisplayName>
    <Algorithm>RS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <PrivateKey>
        <Value ref="private.privatekey"/>
        <Password ref="private.privatekey-password"/>
        <Id ref="private.privatekey-id"/>
    </PrivateKey>
    <Payload ref="private.payload" />
    <DetachContent>true</DetachContent>
    <OutputVariable>jws-variable</OutputVariable>
</GenerateJWS>

การตั้งค่าองค์ประกอบหลัก

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

อัลกอริทึม องค์ประกอบหลัก
HS{256/384/512}*
<SecretKey>
  <Value ref="private.secretkey"/>
  <Id>1918290</Id>
</SecretKey>
RS/PS/ES{256/384/512}*
<PrivateKey>
  <Value ref="private.privatekey"/>
  <Password ref="private.privatekey-password"/>
  <Id ref="private.privatekey-id"/>
</PrivateKey>

องค์ประกอบ <Password> และ <Id> เป็นค่าที่ไม่บังคับ

*ดูข้อมูลเพิ่มเติมเกี่ยวกับข้อกำหนดของคีย์ได้ที่เกี่ยวกับอัลกอริทึมการเข้ารหัสลายเซ็น

การอ้างอิงองค์ประกอบสำหรับการสร้าง JWS

ข้อมูลอ้างอิงนโยบายจะอธิบายองค์ประกอบและแอตทริบิวต์ของนโยบายสร้าง JWS

หมายเหตุ: การกำหนดค่าจะแตกต่างไปบ้างขึ้นอยู่กับอัลกอริทึมการเข้ารหัสที่ใช้ ดูตัวอย่างสำหรับตัวอย่างที่สาธิตการกำหนดค่าสำหรับกรณีการใช้งานเฉพาะ

แอตทริบิวต์ที่ใช้กับองค์ประกอบระดับบนสุด

<GenerateJWS name="JWS" 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>algorithm-here</Algorithm>

ระบุอัลกอริทึมการเข้ารหัสเพื่อลงนามโทเค็น

ค่าเริ่มต้น ไม่มีข้อมูล
การปรากฏ ต้องระบุ
ประเภท สตริง
ค่าที่ถูกต้อง HS256, HS384, HS512, RS256, RS384, RS512, ES256, ES384, ES512, PS256, PS384, PS512

<ส่วนหัว/การอ้างสิทธิ์เพิ่มเติม>

<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>

ใส่คู่ของชื่อ/ค่าการอ้างสิทธิ์เพิ่มเติมในส่วนหัวสำหรับ JWS

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

องค์ประกอบ <Claim> มีแอตทริบิวต์ต่อไปนี้

  • name - (ต้องระบุ) ชื่อของการอ้างสิทธิ์
  • ref - (ไม่บังคับ) ชื่อของตัวแปรโฟลว์ หากมี นโยบายจะใช้ค่าของตัวแปรนี้เป็นการอ้างสิทธิ์ หากมีการระบุทั้งแอตทริบิวต์ ref และค่าการอ้างสิทธิ์อย่างชัดแจ้ง ระบบจะใช้ค่า Explicit เป็นค่าเริ่มต้น และจะใช้ในกรณีที่ตัวแปรขั้นตอนอ้างอิงไม่ได้รับการแก้ไข
  • type - (ไม่บังคับ) ค่าใดค่าหนึ่งจาก: สตริง (ค่าเริ่มต้น), ตัวเลข, บูลีน หรือแผนที่
  • array - (ไม่บังคับ) ตั้งค่าเป็น true เพื่อระบุว่าค่านี้เป็นอาร์เรย์ประเภทหรือไม่ ค่าเริ่มต้น: เท็จ

<CriticalHeaders>

<CriticalHeaders>a,b,c</CriticalHeaders>

or:

<CriticalHeaders ref=’variable_containing_headers’/>

เพิ่มส่วนหัววิกฤต (crit) ให้กับ JWS ส่วนหัว crit คืออาร์เรย์ของชื่อส่วนหัวที่ตัวรับสัญญาณ JWS ต้องรู้จักและรู้จัก เช่น

{
  “typ: “...”,
  “alg” : “...”,
  “crit” : [ “a”, “b”, “c” ],
}

ระหว่างรันไทม์ นโยบาย ConfirmJWS จะตรวจสอบส่วนหัว crit สำหรับส่วนหัวแต่ละรายการที่แสดงในส่วนหัว crit ระบบจะตรวจสอบว่าองค์ประกอบ <KnownHeaders> ของนโยบาย ConfirmJWS แสดงส่วนหัวดังกล่าวด้วย ส่วนหัวที่นโยบาย ConfirmJWS พบใน crit ซึ่งไม่ได้แสดงอยู่ใน <KnownHeaders> จะทำให้นโยบาย ConfirmJWS ล้มเหลว

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

<DetachContent>

<DetachContent>true|false</DetachContent>

ระบุว่าจะสร้าง JWS ที่มีเพย์โหลด <DetachContent>true</DetachContent> แยกต่างหาก <DetachContent>false</DetachContent> หรือไม่

หากคุณระบุ "เท็จ" ค่าเริ่มต้น JWS ที่สร้างขึ้นจะอยู่ในรูปแบบต่อไปนี้

header.payload.signature

หากคุณระบุ true เพื่อสร้างเพย์โหลดที่ปลดออก JWS ที่สร้างขึ้นจะข้ามเพย์โหลดและอยู่ในรูปแบบดังนี้

header..signature

หากมีเพย์โหลดที่ปลดออก คุณจะต้องส่งผ่านเพย์โหลดเดิมที่ไม่เข้ารหัสไปยังนโยบายVerifyJWS โดยใช้องค์ประกอบ <DetachedContent> ของนโยบาย ConfirmJWS

ค่าเริ่มต้น false
การปรากฏ ไม่บังคับ
ประเภท บูลีน
ค่าที่ถูกต้อง จริงหรือเท็จ

<IgnoreUnresolvedVariables>

<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>

ตั้งค่าเป็น "เท็จ" หากต้องการให้นโยบายแสดงข้อผิดพลาดเมื่อตัวแปรที่อ้างอิงที่ระบุไว้ในนโยบายแก้ไขไม่ได้ ตั้งค่าเป็น true เพื่อทำให้ตัวแปรที่แก้ไขไม่ได้เป็นสตริงว่าง (Null)

ค่าเริ่มต้น false
การปรากฏ ไม่บังคับ
ประเภท บูลีน
ค่าที่ถูกต้อง จริงหรือเท็จ

<OutputVariable>

<OutputVariable>JWS-variable</OutputVariable>

ระบุตำแหน่งที่จะวาง JWS ที่นโยบายนี้สร้างขึ้น ระบบจะวางไว้ในตัวแปรโฟลว์ jws.POLICYNAME.generated_jws โดยค่าเริ่มต้น

ค่าเริ่มต้น jws.POLICYNAME.generated_jws
การปรากฏ ไม่บังคับ
ประเภท สตริง (ชื่อตัวแปรโฟลว์)

<Payload>

<Payload ref="flow-variable-name-here" />

or

<Payload>payload-value</Payload>

ระบุเปย์โหลด JWS แบบข้อมูลดิบ ระบุตัวแปรที่มีเพย์โหลดหรือสตริง

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

<PrivateKey/Id>

<PrivateKey>
  <Id ref="flow-variable-name-here"/>
</PrivateKey>

or

<PrivateKey>
  <Id>your-id-value-here</Id>
</PrivateKey>

ระบุรหัสคีย์ (kid) ที่จะรวมไว้ในส่วนหัว JWS ใช้เฉพาะเมื่ออัลกอริทึมเป็น RS256/RS384/RS512, PS256/PS384/PS512 หรือ ES256/ES384/ES512

ค่าเริ่มต้น ไม่มีข้อมูล
การปรากฏ ไม่บังคับ
ประเภท สตริง
ค่าที่ถูกต้อง ตัวแปรหรือสตริงโฟลว์

<PrivateKey/Password>

<PrivateKey>
  <Password ref="private.privatekey-password"/>
</PrivateKey>

ระบุรหัสผ่านที่นโยบายควรใช้เพื่อถอดรหัสคีย์ส่วนตัว หากจำเป็น ใช้แอตทริบิวต์ ref เพื่อส่งคีย์ในตัวแปรโฟลว์ ใช้เฉพาะเมื่ออัลกอริทึมเป็น RS256/RS384/RS512, PS256/PS384/PS512 หรือ ES256/ES384/ES512

ค่าเริ่มต้น ไม่มีข้อมูล
การปรากฏ ไม่บังคับ
ประเภท สตริง
ค่าที่ถูกต้อง การอ้างอิงตัวแปรโฟลว์

หมายเหตุ: คุณต้องระบุตัวแปรโฟลว์ Edge จะปฏิเสธเนื่องจากการกำหนดค่านโยบายที่ไม่ถูกต้องซึ่งระบุรหัสผ่านเป็นข้อความธรรมดา ตัวแปรโฟลว์ต้องมีคำนำหน้า "private" เช่น private.mypassword

<PrivateKey/Value>

<PrivateKey>
  <Value ref="private.variable-name-here"/>
</PrivateKey>

ระบุคีย์ส่วนตัวที่เข้ารหัสด้วย PEM ที่ใช้ในการลงนาม JWS ใช้แอตทริบิวต์ ref เพื่อส่งคีย์ในตัวแปรโฟลว์ ใช้เฉพาะเมื่ออัลกอริทึมเป็น RS256/RS384/RS512, PS256/PS384/PS512 หรือ ES256/ES384/ES512

ค่าเริ่มต้น ไม่มีข้อมูล
การปรากฏ ต้องสร้าง JWS โดยใช้อัลกอริทึม RS256
ประเภท สตริง
ค่าที่ถูกต้อง ตัวแปรโฟลว์ที่มีสตริงที่แทนค่าคีย์ส่วนตัว RSA ที่เข้ารหัสด้วย PEM

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

<SecretKey/Id>

<SecretKey>
  <Id ref="flow-variable-name-here"/>
</SecretKey>

or

<SecretKey>
  <Id>your-id-value-here</Id>
</SecretKey>

ระบุรหัสคีย์ (kid) ที่จะรวมไว้ในส่วนหัว JWS ของ JWS ที่ลงชื่อด้วยอัลกอริทึม HMAC ใช้เฉพาะเมื่ออัลกอริทึมเป็นหนึ่งใน HS256/HS384/HS512

ค่าเริ่มต้น ไม่มีข้อมูล
การปรากฏ ไม่บังคับ
ประเภท สตริง
ค่าที่ถูกต้อง ตัวแปรหรือสตริงโฟลว์

<SecretKey/Value>

<SecretKey>
  <Value ref="private.your-variable-name"/>
</SecretKey>

ระบุคีย์ลับที่ใช้ยืนยันหรือลงนามโทเค็นด้วยอัลกอริทึม HMAC ใช้เฉพาะเมื่ออัลกอริทึมเป็นหนึ่งใน HS256/HS384/HS512 ใช้แอตทริบิวต์ ref เพื่อส่งคีย์ในตัวแปรโฟลว์

Edge บังคับใช้ความเข้มงวดของคีย์ขั้นต่ำสำหรับอัลกอริทึม HS256/HS384/HS512 ความยาวคีย์ขั้นต่ำของ HS256 คือ 32 ไบต์ สำหรับ HS384 จะเท่ากับ 48 ไบต์ และสำหรับ HS512 จะเท่ากับ 64 ไบต์ การใช้คีย์ที่มีความแรงต่ำกว่าจะทำให้เกิดข้อผิดพลาดรันไทม์

ค่าเริ่มต้น ไม่มีข้อมูล
การปรากฏ จำเป็นสำหรับอัลกอริทึม HMAC
ประเภท สตริง
ค่าที่ถูกต้อง ตัวแปรโฟลว์ที่อ้างถึงสตริง

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

ตัวแปรโฟลว์

นโยบายสร้าง JWS ไม่ได้ตั้งค่าตัวแปรโฟลว์

การอ้างอิงข้อผิดพลาด

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

ข้อผิดพลาดเกี่ยวกับรันไทม์

ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อนโยบายทำงาน

รหัสข้อผิดพลาด สถานะ HTTP เกิดขึ้นเมื่อ
steps.jws.GenerationFailed 401 นโยบายสร้าง JWS ไม่ได้
steps.jws.InsufficientKeyLength 401 สำหรับคีย์ที่มีขนาดเล็กกว่า 32 ไบต์สำหรับอัลกอริทึม HS256
steps.jws.InvalidClaim 401 สำหรับการอ้างสิทธิ์ที่ขาดหายไปหรือการอ้างสิทธิ์ไม่ตรงกัน หรือส่วนหัวที่ขาดหายไปหรือส่วนหัวไม่ตรงกัน
steps.jws.InvalidCurve 401 เส้นโค้งที่คีย์ระบุไม่ถูกต้องสำหรับอัลกอริทึม Elliptic Curve
steps.jws.InvalidJsonFormat 401 พบ JSON ที่ไม่ถูกต้องในส่วนหัว JWS
steps.jws.InvalidPayload 401 เพย์โหลด JWS ไม่ถูกต้อง
steps.jws.InvalidSignature 401 ละเว้น <DetachedContent> และ JWS มีเพย์โหลดเนื้อหาที่ถูกแยกออก
steps.jws.KeyIdMissing 401 นโยบาย "ยืนยัน" ใช้ JWKS เป็นแหล่งที่มาสำหรับคีย์สาธารณะ แต่ JWS ที่ลงนามไม่มีพร็อพเพอร์ตี้ kid ในส่วนหัว
steps.jws.KeyParsingFailed 401 ไม่สามารถแยกวิเคราะห์คีย์สาธารณะจากข้อมูลคีย์ที่ระบุ
steps.jws.MissingPayload 401 ไม่มีเพย์โหลด JWS
steps.jws.NoAlgorithmFoundInHeader 401 เกิดขึ้นเมื่อ JWS ข้ามส่วนหัวของอัลกอริทึม
steps.jws.SigningFailed 401 ใน GenerateJWS สำหรับคีย์ที่มีขนาดเล็กกว่าขนาดต่ำสุดสำหรับอัลกอริทึม HS384 หรือ HS512
steps.jws.UnknownException 401 เกิดข้อผิดพลาดที่ไม่ทราบสาเหตุ
steps.jws.WrongKeyType 401 ประเภทคีย์ที่ระบุไม่ถูกต้อง เช่น หากคุณระบุคีย์ RSA สำหรับอัลกอริทึม Elliptic Curve หรือคีย์เส้นโค้งสำหรับอัลกอริทึม RSA

ข้อผิดพลาดในการทำให้ใช้งานได้

ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อคุณใช้พร็อกซีที่มีนโยบายนี้

ชื่อข้อผิดพลาด เกิดขึ้นเมื่อ
InvalidAlgorithm ค่าที่ใช้ได้มีเพียง RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384, ES512, HS256, HS384, HS512

EmptyElementForKeyConfiguration

FailedToResolveVariable

InvalidConfigurationForActionAndAlgorithmFamily

InvalidConfigurationForVerify

InvalidEmptyElement

InvalidFamiliesForAlgorithm

InvalidKeyConfiguration

InvalidNameForAdditionalClaim

InvalidNameForAdditionalHeader

InvalidPublicKeyId

InvalidPublicKeyValue

InvalidSecretInConfig

InvalidTypeForAdditionalClaim

InvalidTypeForAdditionalHeader

InvalidValueForElement

InvalidValueOfArrayAttribute

InvalidVariableNameForSecret

MissingConfigurationElement

MissingElementForKeyConfiguration

MissingNameForAdditionalClaim

MissingNameForAdditionalHeader

ข้อผิดพลาดอื่นๆ เกี่ยวกับการทำให้ใช้งานได้ที่เป็นไปได้

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

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

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

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

สำหรับการจัดการข้อผิดพลาด แนวทางปฏิบัติแนะนำคือดักส่วน errorcode ของการตอบสนองข้อผิดพลาด อย่าใช้ข้อความใน faultstring เนื่องจากอาจมีการเปลี่ยนแปลง

ตัวอย่างกฎข้อผิดพลาด

<FaultRules>
    <FaultRule name="JWS Policy Errors">
        <Step>
            <Name>JavaScript-1</Name>
            <Condition>(fault.name Matches "TokenExpired")</Condition>
        </Step>
        <Condition>JWS.failed=true</Condition>
    </FaultRule>
</FaultRules>