כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של
Apigee X. מידע
מה
הפונקציה מפענחת את כותרת ה-JWS בלי לאמת את החתימה ב-JWS, וכותבת כל כותרת למשתנה זרימה. השימוש במדיניות הזו שימושי במיוחד כשמשתמשים במדיניות VerifyJWS, כשצריך לדעת את הערך של כותרת מתוך ה-JWS לפני שמאמתים את החתימה של ה-JWS.
ל-JWS יכול להיות מטען ייעודי (payload) מצורף, כמו בצורה הבאה:
header.payload.signature
לחלופין, ה-JWS יכול להשמיט את המטען הייעודי (payload), שנקרא detached מנותק, ולהיות בפורמט הבא:
header..signature
המדיניות DecodeJWS פועלת עם שני הטפסים כי היא מפענחת רק את חלק הכותרת של ה-JWS. המדיניות בנושא DecodeJWS פועלת גם בלי קשר לאלגוריתם ששימש לחתימה על ה-JWS.
לפרטים נוספים וסקירה כללית של הפורמט של JWS, קראו את הסקירה הכללית על מדיניות JWS ו-JWT.
וידאו
כדאי לצפות בסרטון קצר כדי ללמוד איך לפענח JWT. למרות שהסרטון הזה ספציפי ל-JWT, רבים מהמושגים זהים ב-JWS.
דוגמה: פענוח JWS
המדיניות שמוצגת בהמשך מפענחת JWS שנמצא במשתנה הזרימה var.JWS. המשתנה הזה חייב להיות קיים ולהכיל JWS בר-קיימא (שניתן לפענוח). המדיניות יכולה לקבל את ה-JWS מכל משתנה זרימה.
<DecodeJWS name="JWS-Decode-HS256"> <DisplayName>JWS Verify HS256</DisplayName> <Source>var.JWS</Source> </DecodeJWS>
לכל כותרת בחלק הכותרת של ה-JWS, המדיניות מגדירה משתנה זרימה בשם:
jws.policy-name.header.header-name
אם ל-JWS מצורף מטען ייעודי (payload), הוא מגדיר את משתנה הזרימה jws.policy-name.header.payload
למטען הייעודי (payload). עבור מטען ייעודי (payload) שהתנתק, payload
ריק.
בקטע משתני זרימה מוצגת רשימה מלאה של המשתנים שמוגדרים במדיניות הזו.
הפניה לרכיב עבור פענוח JWS
בהפניה למדיניות מתוארים הרכיבים והתכונות של המדיניות 'פענוח JWS'.
מאפיינים שחלים על הרכיב ברמה העליונה
<DecodeJWS name="JWS" continueOnError="false" enabled="true" async="false">
המאפיינים הבאים משותפים לכל רכיבי ההורה של המדיניות.
מאפיין | תיאור | ברירת מחדל | נוכחות |
---|---|---|---|
name |
השם הפנימי של המדיניות. התווים שאפשר להשתמש בהם בשם מוגבלים ל:
A-Z0-9._\-$ % . אבל בממשק המשתמש לניהול Edge אוכפים הגבלות נוספות, כמו הסרה אוטומטית של תווים שהם לא אלפאנומריים.
אפשר להשתמש באלמנט |
לא רלוונטי | נדרש |
continueOnError |
צריך להגדיר את הערך false כדי להחזיר שגיאה במקרה של כישלון במדיניות. זו התנהגות צפויה
ברוב כללי המדיניות.
צריך להגדיר את הערך |
false | אופציונלי |
פעיל |
צריך להגדיר את הערך true כדי לאכוף את המדיניות.
צריך להגדיר את הערך |
true | אופציונלי |
async | המאפיין הזה הוצא משימוש. | false | הוצא משימוש |
<DisplayName>
<DisplayName>Policy Display Name</DisplayName>
יש להשתמש במאפיין הזה בנוסף למאפיין 'שם' כדי להוסיף למדיניות בכלי לעריכת שרת ה-proxy לניהול ממשק משתמש עם שם אחר בשפה טבעית.
ברירת מחדל | אם תשמיטו את הרכיב הזה, המערכת תשתמש בערך של מאפיין השם של המדיניות. |
נוכחות | אופציונלי |
סוג | מחרוזת |
<מקור>
<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.kid |
מזהה המפתח, אם הוא נוסף בזמן יצירת ה-JWS. כדי לאמת JWS, ראו גם "שימוש ב-JSON Web Key Set (JWKS)" בסקירה הכללית על מדיניות JWT ו-JWS. מידע נוסף זמין במאמר פרמטר מפתח מזהה). |
header.type |
הערך של סוג הכותרת. מידע נוסף זמין במאמר פרמטר של כותרת(סוג). |
header.name |
הערך של הכותרת בעלת השם (רגילה או נוספת). אחת מהאפשרויות האלה תוגדר לכל כותרת נוספת בחלק הכותרת של ה-JWS. |
header-json |
הכותרת בפורמט JSON. |
payload |
אם המטען של JWS מצורף למטען הייעודי (payload) של JWS. אם מדובר במטען ייעודי שנותק, המשתנה הזה ריק. |
valid |
במקרה שלVerifyJWS, המשתנה הזה יהיה TRUE כשהחתימה מאומתת,
והשעה הנוכחית היא לפני תפוגת האסימון ואחרי הערך של האסימון notBefore, אם הם
קיימים. אחרת, הערך False.
במקרה של DecodeJWS, המשתנה הזה לא מוגדר. |
הפניה לשגיאות
בקטע הזה מתוארים קודי התקלות והודעות השגיאה שמוחזרים, ומשתני השגיאה שמוגדרים על ידי Edge כשהמדיניות הזו גורמת לשגיאה. חשוב לדעת אם אתם מפתחים כללים לתיקון תקלות. מידע נוסף זמין במאמר מה צריך לדעת על שגיאות מדיניות ועל טיפול בפגמים.
שגיאות בזמן ריצה
השגיאות האלה יכולות להתרחש כשהמדיניות מופעלת.
קוד שגיאה | סטטוס HTTP | מופיע כאשר |
---|---|---|
steps.jws.FailedToDecode |
401 | המדיניות לא הצליחה לפענח את ה-JWS. יכול להיות שה-JWS פגום. |
steps.jws.FailedToResolveVariable |
401 | מופיע כשמשתנה הזרימה שצוין ברכיב <Source> של המדיניות לא קיים. |
steps.jws.InvalidClaim |
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.MissingPayload |
401 | המטען הייעודי של JWS חסר. |
steps.jws.NoAlgorithmFoundInHeader |
401 | מופיע כשה-JWS משמיטה את כותרת האלגוריתם. |
steps.jws.UnknownException |
401 | אירעה חריגה לא ידועה. |
שגיאות בפריסה
השגיאות האלה יכולות להתרחש כשפורסים שרת proxy שכולל את המדיניות הזו.
שם השגיאה | מופיע כאשר |
---|---|
InvalidAlgorithm |
הערכים החוקיים היחידים הם: RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384, ES512, HS256, HS384, HS512. |
|
שגיאות אפשריות אחרות בפריסה. |
משתני שבר
המשתנים האלה מוגדרים כשמתרחשת שגיאה בזמן הריצה. אפשר לקרוא מידע נוסף במאמר מה צריך לדעת על שגיאות מדיניות.
משתנים | מיקום | דוגמה |
---|---|---|
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>