VerifyJWS policy

אתם צופים במסמכי התיעוד של Apigee Edge.
כדאי לעיין במסמכי התיעוד של Apigee X.
מידע

מה

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

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

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

וידאו

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

דוגמאות

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

מדיניות לדוגמה שמאמתת קובץ JWS מצורף שנחתם באמצעות אלגוריתם ההצפנה HS256, ‏ HMAC באמצעות סכום ביקורת 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 מנותק, המטען הייעודי מושמט מה-JWS:

header..signature

אתם צריכים להעביר את מטען הנתונים למדיניות VerifyJWS על ידי ציון שם המשתנה שמכיל את מטען הנתונים ברכיב <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>
*מידע נוסף על דרישות המפתח מופיע במאמר מידע על אלגוריתמים להצפנת חתימות.

הפניה לרכיב

ההפניה למדיניות מתארת את האלמנטים והמאפיינים של מדיניות Verify JWS.

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

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

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

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

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

אופציונלית, אפשר להשתמש ברכיב <displayname></displayname> כדי לתת למדיניות שם אחר בשפה טבעית, ולתייג אותה בכלי לעריכת ה-proxy של ממשק ניהול.

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

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

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

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

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

<DisplayName>

<DisplayName>Policy Display Name</DisplayName>

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

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

<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

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

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

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

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

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

אם לא מציינים סוג, ברירת המחדל היא String.

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

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

  • name – (חובה) שם התלונה.
  • ref – (אופציונלי) השם של משתנה זרימה. אם המדיניות קיימת, היא תשתמש בערך של המשתנה הזה כמאפיין. אם מציינים גם מאפיין ref וגם ערך הצהרה מפורש, ערך ברירת המחדל הוא הערך המפורש, והמערכת משתמשת בו אם משתנה הזרימה שאליו מתבצעת ההפניה לא נפתר.
  • type – (אופציונלי) אחד מהערכים הבאים: string (ברירת מחדל), number,‏ boolean או map
  • array – (אופציונלי) מגדירים את הערך true כדי לציין אם הערך הוא מערך של סוגים. ברירת מחדל: ‫false.

<DetachedContent>

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

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

header.payload.signature

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

header..signature

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

המדיניות מחזירה שגיאה במקרים הבאים:

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

<IgnoreCriticalHeaders>

<IgnoreCriticalHeaders>true|false</IgnoreCriticalHeaders>

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

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

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

<IgnoreUnresolvedVariables>

<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>

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

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

<KnownHeaders>

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

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

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

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

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

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

<PublicKey/Value>

<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 או Value.
סוג מחרוזת
ערכים תקינים משתנה זרימה או מחרוזת.

<SecretKey/Value>

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

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

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

הערה: אם מדובר במשתנה של זרימת נתונים, צריך להוסיף לו את הקידומת private. לדוגמה, private.mysecret

<Source>

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