מדיניות ValidJWS

מוצג המסמך של Apigee Edge.
עוברים אל מסמכי תיעוד של Apigee X.
מידע

מה

מאמת את החתימה ב-JWS שהתקבל מלקוחות או ממערכות אחרות. המדיניות הזו גם מחלצת כותרות למשתני הקשר כדי שכללי המדיניות או התנאים הבאים יוכלו את הערכים האלה כדי לקבל החלטות לגבי הרשאה או ניתוב. מבוא מפורט זמין במאמר סקירה כללית של המדיניות של JWS ו-JWT.

אם ה-JWS מאומת ותקף, הבקשה מורשה להמשיך. אם לא ניתן לאמת את חתימת ה-JWS או אם ה-JWS לא תקין בגלל סוג כלשהו של שגיאה, כל העיבוד נפסק ותוחזר שגיאה בתגובה.

לקבלת מידע על החלקים של JWS ועל אופן ההצפנה והחתימה שלהם, עיינו ב RFC7515.

וידאו

בסרטון קצר זה מוסבר איך לאמת את החתימה ב-JWS. אומנם הסרטון הזה ספציפיים לאימות JWT, רבים מהמושגים זהים ב-JWS.

טעימות

אימות של מסמך JWS מצורף שנחתם עם ה-HS256 אלגוריתם

המדיניות לדוגמה הזו מאמתת קובץ JWS מצורף שנחתם באמצעות אלגוריתם ההצפנה HS256, HMAC באמצעות סיכום ביקורת (checksum) מסוג SHA-256. ה-JWS מועבר בבקשת שרת ה-proxy באמצעות פרמטר טופס בשם JWS המפתח נמצא במשתנה בשם private.secretkey.

קובץ JWS מצורף מכיל את הכותרת, המטען הייעודי (payload) והחתימה המקודדים:

header.payload.signature

הגדרת המדיניות כוללת את המידע שנדרש ל-Edge כדי לפענח ולהעריך את ה-JWS. למשל, איפה למצוא את ה-JWS (במשתנה זרימה שצוין ברכיב <Source>), את אלגוריתם החתימה הנדרש ואיפה נמצא המפתח הסודי (שמאוחסן במשתנה זרימה של Edge, שיכול אוחזרו מ-Edge KVM, לדוגמה).

<VerifyJWS name="JWS-Verify-HS256">
    <DisplayName>JWS Verify HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <Source>request.formparam.JWS</Source>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <SecretKey>
        <Value ref="private.secretkey"/>
    </SecretKey>
</VerifyJWS>

הפלט של המדיניות נכתב במשתני ההקשר, כך שכללי המדיניות או התנאים הבאים נכתבים בשרת ה-proxy ל-API יכול לבדוק את הערכים האלה. בקטע משתני זרימה אפשר למצוא של המשתנים שהוגדרו במדיניות הזו.

אימות של JWS מנותק שנחתם עם ה-RS256 אלגוריתם

המדיניות לדוגמה הזו מאמתת JWS מנותק שנחתם באמצעות האלגוריתם RS256. כדי לאמת, עליך לספק את המפתח הציבורי. ה-JWS מועבר בבקשת שרת ה-proxy באמצעות פרמטר של טופס. בשם JWS. המפתח הציבורי כלול במשתנה בשם public.publickey.

JWS מנותק משמיט את המטען הייעודי (payload) מה-JWS:

header..signature

באחריותך להעביר את המטען הייעודי (payload) למדיניות VerifyJWS על ידי ציון שם המשתנה שמכיל את המטען הייעודי (payload) אל רכיב <DetachedContent>. התוכן שצוין ב-<DetachedContent> להיות בפורמט המקורי שאינו מקודד שבו נוצרה חתימת ה-JWS.

<VerifyJWS name="JWS-Verify-RS256">
    <DisplayName>JWS Verify RS256</DisplayName>
    <Algorithm>RS256</Algorithm>
    <Source>request.formparam.JWS</Source>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <PublicKey>
        <Value ref="public.publickey"/>
    </PublicKey>
    <DetachedContent>private.payload</DetachedContent>
</VerifyJWS>

הפלט של המדיניות נכתב במשתני ההקשר, כך שכללי המדיניות או התנאים הבאים נכתבים בשרת ה-proxy ל-API יכול לבדוק את הערכים האלה. בקטע משתני זרימה אפשר למצוא של המשתנים שהוגדרו במדיניות הזו.

הגדרת הרכיבים העיקריים

הרכיבים שבהם משתמשים כדי לציין את המפתח שמשמש לאימות ה-JWS תלויים באלגוריתם שנבחר, כפי שמוצג בטבלה הבאה:

אלגוריתם אלמנטים מרכזיים
HS*
<SecretKey>
  <Value ref="private.secretkey"/>
</SecretKey>
RS*, ES*, PS*
<PublicKey>
  <Value ref="rsa_public_key"/>
</PublicKey>

או:

<PublicKey>
  <JWKS ref="jwks_val_ref_or_url"/>
</PublicKey>
*מידע נוסף על הדרישות העיקריות זמין מידע על אלגוריתמים להצפנת חתימות

הפניה לרכיב

בחומר העזר בנושא המדיניות מתוארים הרכיבים והמאפיינים של המדיניות בנושא אימות JWS.

הערה: ההגדרות האישיות משתנות מעט בהתאם להצפנה באלגוריתם שבו אתם משתמשים. בקטע דוגמאות תוכלו לראות דוגמאות שממחישות ולהתאים אותם אישית לתרחישים לדוגמה ספציפיים.

מאפיינים שחלים על הרכיב ברמה העליונה

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

המאפיינים הבאים משותפים לכל רכיבי ההורה של המדיניות.

מאפיין תיאור ברירת מחדל נוכחות
שם השם הפנימי של המדיניות. תווים שבהם אפשר להשתמש בשם מוגבלים ל: A-Z0-9._\-$ % עם זאת, בממשק המשתמש לניהול Edge אוכפים פקודות נוספות הגבלות, כגון הסרה אוטומטית של תווים שאינם אלפאנומריים.

אפשר להשתמש ברכיב <displayname></displayname> כדי להוסיף תווית למדיניות בעורך ה-Proxy של ממשק המשתמש לניהול בשפה טבעית אחרת שם.

לא רלוונטי חובה
continueOnError צריך להגדיר את הערך false כדי להחזיר שגיאה כשמדיניות נכשלת. המצב הזה צפוי של רוב כללי המדיניות.

יש להגדיר ל-true כדי שביצוע התהליך יימשך גם לאחר המדיניות נכשל.

false אופציונלי
פעיל צריך להגדיר את הערך true כדי לאכוף את המדיניות.

הגדרת הערך false כ'כיבוי' המדיניות. המדיניות לא תיאכף גם אם הוא נשאר מחובר לזרימה.

true אופציונלי
אסינכרוני המאפיין הזה הוצא משימוש. false הוצא משימוש

&lt;DisplayName&gt;

<DisplayName>Policy Display Name</DisplayName>

שימוש בנוסף למאפיין השם כדי להוסיף תווית למדיניות בעורך ה-Proxy של ממשק המשתמש לניהול בשם אחר בשפה טבעית.

ברירת מחדל אם משמיטים את הרכיב הזה, המערכת תשתמש בערך של מאפיין השם של המדיניות.
נוכחות אופציונלי
סוג מחרוזת

&lt;Algorithm&gt;

<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

&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 מכילה את הצמדים הנוספים של שם/ערך לבקשה, ושערכי ההצהרה המאושרים תואמים.

בהצהרה נוספת נעשה שימוש בשם שאינו אחד משמות ההצהרות הרגילים והרשומים של JWS. הערך של הצהרה נוספת יכול להיות מחרוזת, מספר, ערך בוליאני, מפה או מערך. מפה היא קבוצה של צמדי שם/ערך. ניתן לציין את הערך של הצהרה על זכויות יוצרים מכל אחד מהסוגים האלה באופן מפורש בהגדרת המדיניות, או בעקיפין דרך הפניה למשתנה זרימה.

ברירת מחדל לא רלוונטי
נוכחות אופציונלי
סוג

מחרוזת (ברירת מחדל), מספר, ערך בוליאני או מפה.

ברירת המחדל של הסוג היא 'מחרוזת' אם לא מצוין סוג.

מערך צריך להגדיר את הערך true כדי לציין אם הערך הוא מערך של סוגים. ברירת מחדל: לא נכון
ערכים חוקיים כל ערך שרוצים להשתמש בו להצהרה נוספת.

הרכיב <Claim> לוקח את המאפיינים הבאים:

  • name – (חובה) שם התלונה.
  • ref - (אופציונלי) השם של משתנה זרימה. אם השדה הזה קיים, המדיניות תשתמש בערך בתור ההצהרה. אם ציינתם גם מאפיין ref וגם ערך הצהרה מפורש, הערך של הפרמטר ערך מפורש הוא ברירת המחדל, ויש להשתמש בו אם משתנה הזרימה המופנה לא מפוענח.
  • type – (אופציונלי) אחת מהאפשרויות: מחרוזת (ברירת מחדל), מספר, ערך בוליאני או מפה
  • מערך – (אופציונלי) מגדירים את הערך true כדי לציין אם הערך הוא מערך של סוגים. ברירת מחדל: לא נכון.

&lt;DetachedContent&gt;

<DetachedContent>variable-name-here</DetachedContent>

JWS שנוצר עם מטען ייעודי (payload) של תוכן מופיע בתבנית:

header.payload.signature

אם משתמשים במדיניות GenerateJWS כדי ליצור מטען ייעודי (payload) מנותק, ה-JWS שנוצר משמיט את המטען הייעודי (Payload) בצורה:

header..signature

במטען ייעודי (payload) מנותק, באחריותך להעביר את המטען הייעודי (payload) למדיניות VerifyJWS באמצעות רכיב <DetachedContent>. המטען הייעודי של התוכן שצוין חייב להיות במקור לא מקודד זה היה כשחתימת ה-JWS נוצרה.

המדיניות גורמת לשגיאה כאשר:

  • הערך <DetachedContent> מצוין כש-JWS לא מכיל תוכן נותק מטען ייעודי (payload) (קוד השגיאה הוא steps.jws.ContentIsNotDetached).
  • השדה <DetachedContent> הושמט ויש ל-JWS מטען ייעודי (payload) של תוכן שנותק (קוד השגיאה הוא steps.jws.InvalidSignature).
ברירת מחדל N/A
נוכחות אופציונלי
סוג הפניה למשתנים

&lt;IgnoreCriticalHeaders&gt;

<IgnoreCriticalHeaders>true|false</IgnoreCriticalHeaders>

יש להגדיר את הערך False אם רוצים שהמדיניות תגרור שגיאה כשכותרת כלשהי שמופיעה ברשימה הכותרת crit של ה-JWS לא מופיעה ברכיב <KnownHeaders>. יש להגדיר את הערך כ-True כדי לגרום למדיניות VerifyJWS להתעלם מהכותרת crit.

אחת מהסיבות להגדיר את הרכיב הזה כ-True היא אם אתם בסביבת בדיקה אינך רוצה שהמדיניות תכשל בגלל חסרה כותרת.

ברירת מחדל false
נוכחות אופציונלי
סוג בוליאני
ערכים חוקיים נכון או לא נכון

&lt;IgnoreUnresolvedVariables&gt;

<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>

יש להגדיר את הערך כ-False אם רוצים שהמדיניות תגרור שגיאה כשמצוין משתנה כלשהו שאליו יש הפניה במדיניות לא ניתן לפתור. צריך להגדיר את הערך כ-True כדי להתייחס לכל משתנה שלא ניתן לפתרון כמחרוזת ריקה (null).

ברירת מחדל false
נוכחות אופציונלי
סוג בוליאני
ערכים חוקיים נכון או לא נכון

&lt;KnownHeaders&gt;

<KnownHeaders>a,b,c</KnownHeaders>

or:

<KnownHeaders ref=’variable_containing_headers’/>

מדיניות GenerateJWS משתמשת ברכיב <CriticalHeaders> כדי לאכלס את הכותרת crit באסימון. לדוגמה:

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

המדיניות של VerifyJWS בודקת את כותרת ה-crit ב-JWS, אם היא קיימת, ולכל פריט שצוין בה בודקת שהרכיב <KnownHeaders> גם מציין את הכותרת הזו. הרכיב <KnownHeaders> יכול להכיל קבוצת-על של הפריטים שרשומים ב-crit. חשוב רק שכל הכותרות המפורטות ב-crit יופיעו ב רכיב <KnownHeaders>. כל כותרת שהמדיניות מוצאת בקטע crit שלא מופיע גם ב-<KnownHeaders>, גורמת למדיניות VerifyJWS להיכשל.

אפשר להגדיר את המדיניות VerifyJWS להתעלם מהכותרת crit על ידי הגדרת הרכיב <IgnoreCriticalHeaders> ל-true.

ברירת מחדל לא רלוונטי
נוכחות אופציונלי
סוג מערך מחרוזות מופרדות בפסיקים
ערכים חוקיים מערך או שם של משתנה שמכיל את המערך.

&lt;PublicKey/JWKS&gt;

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

אם ה-JWS הנכנס נושא מזהה מפתח שמופיע בקבוצה של JWKS, אז המדיניות תשתמש במפתח הציבורי הנכון כדי לאמת את חתימת ה-JWS. לפרטים על התכונה הזו, ראו שימוש ב-JSON Web Key Set (JWKS) כדי לאמת JWS.

אם מאחזרים את הערך מכתובת URL ציבורית, Edge לשמור את ה-JWKS במטמון למשך 300 שניות. כשפג תוקף המטמון, Edge מאחזר את ה-JWKS שוב.

ברירת מחדל לא רלוונטי
נוכחות כדי לאמת JWS באמצעות אלגוריתם RSA, צריך להשתמש ב-JWKS או ב-Value לרכיב מסוים.
סוג מחרוזת
ערכים חוקיים משתנה זרימה, ערך מחרוזת או כתובת URL.

&lt;PublicKey/Value&gt;

<PublicKey>
   <Value ref="public.publickey"/>
</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>

מציינת את המפתח הציבורי שמשמש לאימות החתימה ב-JWS. שימוש במאפיין ref כדי מעבירים את המפתח במשתנה זרימה, או מציינים את המפתח בקידוד PEM באופן ישיר. יש להשתמש רק כאשר הוא אחד מהפרמטרים הבאים: RS256/RS384/RS512 , PS256/PS384/PS512 או ES256/ES384/ES512.

ברירת מחדל לא רלוונטי
נוכחות כדי לאמת JWS חתום באמצעות אלגוריתם RSA, צריך להשתמש ב-JWKS או רכיבי ערך.
סוג מחרוזת
ערכים חוקיים משתנה זרימה או מחרוזת.

&lt;SecretKey/Value&gt;

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

מספקת את המפתח הסודי המשמש לאימות אסימונים או לחתימה עליהם באמצעות אלגוריתם HMAC. שימוש בלבד כאשר האלגוריתם הוא אחד מ-HS256, HS384, HS512. שימוש במאפיין ref כדי להעביר את המפתח במשתנה זרימה.

ברירת מחדל לא רלוונטי
נוכחות נדרש לאלגוריתמים של HMAC.
סוג מחרוזת
ערכים חוקיים משתנה זרימה שמפנה למחרוזת.

הערה: אם משתנה זרימה, התחילית שלו חייבת להיות "private". לדוגמה, private.mysecret

&lt;Source&gt;

<Source>JWS-variable</Source>

אם השדה הזה קיים, הוא מציין את משתנה הזרימה שבו המדיניות מצפה למצוא את ה-JWS לאמת.

ברירת מחדל request.header.authorization (מידע חשוב מופיע בהערה שלמעלה מידע על ברירת המחדל).
נוכחות אופציונלי
סוג מחרוזת
ערכים חוקיים שם משתנה לזרימה של Edge.

משתני זרימה

לאחר השלמת התהליך, כללי המדיניות אימות JWS ופענוח קוד JWS הוגדרו של משתני ההקשר בהתאם לדפוס הזה:

jws.{policy_name}.{variable_name}

לדוגמה, אם שם המדיניות הוא verify-jws, המדיניות תישמר האלגוריתם שצוין ב-JWS למשתנה ההקשר הזה: jws.verify-jws.header.algorithm

שם משתנה תיאור
decoded.header.name ערך של כותרת שאפשר לנתח בפורמט JSON במטען הייעודי (Payload). משתנה אחד מוגדר עבור כל כותרת במטען הייעודי (payload). אפשר גם להשתמש במשתני הזרימה header.name, זה המשתנה המומלץ שבו צריך להשתמש כדי לגשת לכותרת.
header.algorithm אלגוריתם החתימה שנעשה בו שימוש ב-JWS. לדוגמה, RS256 , HS384 וכן הלאה. מידע נוסף זמין במאמר (Algorithm) Header Parameter.
header.kid מזהה המפתח, אם הוא נוסף בזמן יצירת ה-JWS. ראו גם "שימוש בערכת מפתחות אינטרנט מסוג JSON (JWKS)" ב-JWT ו-JWS סקירה כללית של המדיניות כדי לאמת JWS. מידע נוסף זמין במאמר (Key ID) Header Parameter (פרמטר הכותרת של מזהה המפתח).
header.type הערך של סוג הכותרת. מידע נוסף זמין במאמר (סוג) פרמטר כותרת.
header.name הערך של הכותרת בעלת השם (רגילה או נוספת). אחד מאלה יוגדר עבור כל כותרת נוספת בחלק הכותרת של ה-JWS.
header-json הכותרת בפורמט JSON.
payload המטען הייעודי (payload) של JWS אם ל-JWS מצורף מטען ייעודי (payload). במטען ייעודי (payload) מנותק, המשתנה הזה ריק.
valid במקרה של VerifyJWS, המשתנה הזה יהיה True כשהחתימה תאומת. הזמן הנוכחי הוא לפני תפוגת האסימון, ואחרי הערך לאלפני האסימון, אם קיימים. אחרת, הערך יהיה False.

במקרה של DecodeJWS, המשתנה הזה לא מוגדר.

התייחסות לשגיאות

בקטע הזה מתוארים קודי התקלות והודעות השגיאה שמוחזרים, ומשתני השגיאה שמוגדרים על ידי Edge כשהמדיניות הזו גורמת לשגיאה. חשוב לדעת אם אתם מפתחים כללים לתיקון תקלות. מידע נוסף זמין במאמר מה צריך לדעת על שגיאות מדיניות ועל טיפול בפגמים.

שגיאות בזמן ריצה

השגיאות האלה יכולות להתרחש כשהמדיניות מופעלת.

קוד שגיאה סטטוס HTTP מופיע כאשר
steps.jws.AlgorithmInTokenNotPresentInConfiguration 401 מופיע כשמדיניות האימות כוללת כמה אלגוריתמים
steps.jws.AlgorithmMismatch 401 האלגוריתם שצוין בכותרת במדיניות Generate (יצירה) לא תאם את האלגוריתם הצפוי במדיניות האימות. האלגוריתמים שצוינו צריכים להתאים.
steps.jws.ContentIsNotDetached 401 <DetachedContent> צוין כשה-JWS לא מכיל מטען ייעודי (payload) של תוכן מנותק.
steps.jws.FailedToDecode 401 המדיניות לא הצליחה לפענח את ה-JWS. יכול להיות שה-JWS פגום.
steps.jws.InsufficientKeyLength 401 למפתח קטן מ-32 בייטים לאלגוריתם HS256
steps.jws.InvalidClaim 401 כאשר חסרה תלונה על הפרת זכויות יוצרים או תלונה על הפרת זכויות יוצרים, או חוסר התאמה בכותרת או בכותרת חסרה.
steps.jws.InvalidCurve 401 העקומה שצוינה על ידי המפתח אינה חוקית עבור האלגוריתם 'עקומה אליפטית'.
steps.jws.InvalidJsonFormat 401 נמצא JSON לא חוקי בכותרת ה-JWS.
steps.jws.InvalidJws 401 השגיאה הזו מתרחשת כאשר אימות החתימה של JWS נכשל.
steps.jws.InvalidPayload 401 המטען הייעודי של JWS לא חוקי.
steps.jws.InvalidSignature 401 <DetachedContent> לא נכלל וב-JWS יש מטען ייעודי (payload) נפרד.
steps.jws.KeyIdMissing 401 במדיניות האימות נעשה שימוש ב-JWKS כמקור למפתחות ציבוריים, אבל ה-JWS החתום לא כולל נכס kid בכותרת.
steps.jws.KeyParsingFailed 401 לא ניתן היה לנתח את המפתח הציבורי מפרטי המפתח שצוינו.
steps.jws.MissingPayload 401 המטען הייעודי של JWS חסר.
steps.jws.NoAlgorithmFoundInHeader 401 מופיע כשה-JWS משמיטה את כותרת האלגוריתם.
steps.jws.NoMatchingPublicKey 401 במדיניות האימות נעשה שימוש ב-JWKS כמקור למפתחות ציבוריים, אבל kid ב-JWK החתום לא רשום ב-JWKS.
steps.jws.UnhandledCriticalHeader 401 כותרת שנמצאה על ידי המדיניות 'אימות JWS' בכותרת crit לא רשומה ב-KnownHeaders.
steps.jws.UnknownException 401 אירעה חריגה לא ידועה.
steps.jws.WrongKeyType 401 צוין סוג שגוי של מפתח. לדוגמה, אם ציינת מפתח RSA לאלגוריתם Elliptic Curve, או מפתח עקומה לאלגוריתם RSA.

שגיאות בפריסה

השגיאות האלה יכולות להתרחש כשפורסים שרת proxy שכולל את המדיניות הזו.

שם השגיאה מופיע כאשר
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>