นโยบาย GenerateJWS

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

อะไร

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

หากต้องการเรียนรู้เกี่ยวกับส่วนต่างๆ ของ 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 ที่สร้างขึ้นจะละเว้นเพย์โหลด คุณมีหน้าที่ส่งเพย์โหลดไปยังนโยบาย VerifyJWS โดยใช้ องค์ประกอบ <DetachedContent> ของนโยบาย VerifyJWS

<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> เป็นค่าที่ไม่บังคับ

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

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

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

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

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

<GenerateJWS name="JWS" continueOnError="false" enabled="true" async="false">

แอตทริบิวต์ต่อไปนี้มีอยู่ในองค์ประกอบระดับบนสุดของนโยบายทั้งหมด

แอตทริบิวต์ คำอธิบาย ค่าเริ่มต้น การตรวจหาบุคคล
ชื่อ ชื่อภายในของนโยบาย อักขระที่คุณสามารถใช้ในชื่อจะถูกจำกัดไว้เฉพาะ: A-Z0-9._\-$ % อย่างไรก็ตาม UI การจัดการ Edge จะบังคับใช้เพิ่มเติม เช่น การนำอักขระที่ไม่ใช่ตัวอักษรและตัวเลขคละกันออกโดยอัตโนมัติ

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

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

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

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

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

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

&lt;DisplayName&gt;

<DisplayName>Policy Display Name</DisplayName>

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

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

&lt;Algorithm&gt;

<Algorithm>algorithm-here</Algorithm>

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

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

&lt;AdditionalHeaders/Claim&gt;

<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 เพื่อระบุว่าค่านั้นเป็นอาร์เรย์ประเภท ค่าเริ่มต้น: เท็จ

&lt;CriticalHeaders&gt;

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

or:

<CriticalHeaders ref=’variable_containing_headers’/>

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

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

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

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

&lt;DetachContent&gt;

<DetachContent>true|false</DetachContent>

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

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

header.payload.signature

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

header..signature

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

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

&lt;IgnoreUnresolvedVariables&gt;

<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>

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

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

&lt;OutputVariable&gt;

<OutputVariable>JWS-variable</OutputVariable>

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

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

&lt;Payload&gt;

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

or

<Payload>payload-value</Payload>

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

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

&lt;PrivateKey/Id&gt;

<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

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

&lt;PrivateKey/Password&gt;

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

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

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

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

&lt;PrivateKey/Value&gt;

<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

&lt;SecretKey/Id&gt;

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

or

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

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

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

&lt;SecretKey/Value&gt;

<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

ตัวแปรโฟลว์

นโยบาย Generate 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>