מוצג המסמך של Apigee Edge.
עוברים אל
מסמכי תיעוד של Apigee X. מידע
מה
מפענח את כותרת ה-JWS ללא אימות החתימה ב-JWS, וכותב כל כותרת במשתנה הזרימה, המדיניות הזו שימושית במיוחד כשמשתמשים בה בשילוב עם המדיניות לאימות JWS. כשהערך של כותרת מתוך ה-JWS חייב להיות ידוע לפני אימות החתימה של ה-JWS.
JWS יכול לכלול מטען ייעודי (payload) מצורף, כמו בדוגמה הבאה:
header.payload.signature
לחלופין, ה-JWS יכול להשמיט את המטען הייעודי (payload), שנקרא מטען ייעודי (payload) מנותק, ולהיות בפורמט הבא:
header..signature
המדיניות DecodeJWS עובדת עם שני הטפסים כי היא מפענחת רק את חלק הכותרת של ה-JWS. המדיניות DecodeJWS פועלת גם בלי קשר לאלגוריתם ששימש לחתימה על ה-JWS.
למבוא מפורט, אתם יכולים לעיין בסקירה הכללית של המדיניות של JWS ו-JWT וסקירה כללית על הפורמט של JWS.
וידאו
בסרטון קצר זה מוסבר איך לפענח את הקוד של JWT. אומנם הסרטון הזה ספציפיים ל-JWT, רבים מהמושגים זהים ב-JWS.
דוגמה: Decode a 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">
המאפיינים הבאים משותפים לכל רכיבי ההורה של המדיניות.
מאפיין | תיאור | ברירת מחדל | נוכחות |
---|---|---|---|
שם |
השם הפנימי של המדיניות. תווים שבהם אפשר להשתמש בשם מוגבלים ל:
A-Z0-9._\-$ % עם זאת, בממשק המשתמש לניהול Edge אוכפים פקודות נוספות
הגבלות, כגון הסרה אוטומטית של תווים שאינם אלפאנומריים.
אפשר להשתמש ברכיב |
לא רלוונטי | חובה |
continueOnError |
צריך להגדיר את הערך false כדי להחזיר שגיאה כשמדיניות נכשלת. המצב הזה צפוי
של רוב כללי המדיניות.
יש להגדיר ל- |
false | אופציונלי |
פעיל |
צריך להגדיר את הערך true כדי לאכוף את המדיניות.
הגדרת הערך |
true | אופציונלי |
אסינכרוני | המאפיין הזה הוצא משימוש. | false | הוצא משימוש |
<DisplayName>
<DisplayName>Policy Display Name</DisplayName>
שימוש בנוסף למאפיין השם כדי להוסיף תווית למדיניות בעורך ה-Proxy של ממשק המשתמש לניהול בשם אחר בשפה טבעית.
ברירת מחדל | אם משמיטים את הרכיב הזה, המערכת תשתמש בערך של מאפיין השם של המדיניות. |
נוכחות | אופציונלי |
סוג | מחרוזת |
<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.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>