כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של
Apigee X. מידע
מה
יוצר JWT חתום, עם קבוצה ניתנת להגדרה של דרישות בעלות. לאחר מכן, ניתן להחזיר את ה-JWT ללקוחות, להעביר אותם ליעדים לקצה העורפי או להשתמש בהם בדרכים אחרות. מבוא מפורט זמין בסקירה הכללית על מדיניות JWS ו-JWT.
וידאו
כדאי לצפות בסרטון קצר כדי ללמוד איך ליצור JWT חתום.
דוגמאות
יצירת JWT החתום באמצעות האלגוריתם HS256
המדיניות לדוגמה הזו יוצרת JWT חדש וחותמת עליו באמצעות האלגוריתם HS256. HS256 מסתמך על סוד משותף גם לחתימה וגם לאימות.
כשפעולת המדיניות הזו מופעלת, Edge מקודד את הכותרת והמטען הייעודי (payload) של JWT, ואז חותם באופן דיגיטלי על ה-JWT. בסרטון שלמעלה תוכלו לראות דוגמה מלאה לכך, כולל הסברים על שליחת בקשה למדיניות.
הגדרת המדיניות כאן תיצור JWT עם קבוצה של תלונות סטנדרטיות כפי שהוגדר במפרט JWT, כולל תפוגה של שעה אחת ותלונה נוספת. אפשר לכלול כמה תלונות נוספות שרוצים. מידע על הדרישות והאפשרויות לכל רכיב במדיניות לדוגמה הזו זמין בחומר העזר בנושא Element.
<GenerateJWT name="JWT-Generate-HS256"> <DisplayName>JWT Generate HS256</DisplayName> <Algorithm>HS256</Algorithm> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <SecretKey> <Value ref="private.secretkey"/> <Id>1918290</Id> </SecretKey> <ExpiresIn>1h</ExpiresIn> <Subject>monty-pythons-flying-circus</Subject> <Issuer>urn://apigee-edge-JWT-policy-test</Issuer> <Audience>fans</Audience> <Id/> <AdditionalClaims> <Claim name="show">And now for something completely different.</Claim> </AdditionalClaims> <OutputVariable>jwt-variable</OutputVariable> </GenerateJWT>
ל-JWT שיתקבל יהיה את הכותרת הזו ...
{ "typ" : "JWT", "alg" : "HS256", "kid" : "1918290" }
... ויקבל מטען ייעודי (payload) עם תוכן שנראה כך:
{ "sub" : "monty-pythons-flying-circus", "iss" : "urn://apigee-edge-JWT-policy-test", "aud" : "show", "iat" : 1506553019, "exp" : 1506556619, "jti" : "BD1FF263-3D25-4593-A685-5EC1326E1F37", "show": "And now for something completely different." }
הערכים של הצהרות iat, exp ו-jti ישתנו.
יצירת JWT החתום באמצעות האלגוריתם RS256
המדיניות לדוגמה הזו יוצרת JWT חדש וחותמת עליו באמצעות האלגוריתם RS256. היצירה של חתימת RS256 מבוססת על מפתח פרטי מסוג RSA, שצריך לספק אותו בקידוד PEM. בסרטון שלמעלה תוכלו לראות דוגמה מלאה לכך, כולל הסברים על שליחת בקשה למדיניות.
כשפעולת המדיניות הזו מופעלת, Edge מקודד וחותם באופן דיגיטלי על ה-JWT, כולל התלונות. מידע נוסף על החלקים של JWT ועל אופן ההצפנה והחתימה שלהם זמין ב-RFC7519.
<GenerateJWT name="JWT-Generate-RS256"> <Algorithm>RS256</Algorithm> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <PrivateKey> <Value ref="private.privatekey"/> <Password ref="private.privatekey-password"/> <Id ref="private.privatekey-id"/> </PrivateKey> <Subject>apigee-seattle-hatrack-montage</Subject> <Issuer>urn://apigee-edge-JWT-policy-test</Issuer> <Audience>urn://c60511c0-12a2-473c-80fd-42528eb65a6a</Audience> <ExpiresIn>60m</ExpiresIn> <Id/> <AdditionalClaims> <Claim name="show">And now for something completely different.</Claim> </AdditionalClaims> <OutputVariable>jwt-variable</OutputVariable> </GenerateJWT>
הגדרת הרכיבים המרכזיים
הרכיבים שמשמשים לציון המפתח שמשמש ליצירת ה-JWT תלויים באלגוריתם שנבחר, כפי שמוצג בטבלה הבאה:
אלגוריתם | אלמנטים מרכזיים | |
---|---|---|
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> הרכיבים |
|
*מידע נוסף על הדרישות העיקריות זמין במאמר מידע על אלגוריתמים להצפנת חתימות. |
הפניה לרכיב עבור Generate JWT
בהפניה למדיניות מתוארים הרכיבים והתכונות של המדיניות Generate JWT.
הערה: ההגדרה משתנה בהתאם לאלגוריתם ההצפנה שבו אתם משתמשים. בקטע דוגמאות מופיעות דוגמאות שממחישות הגדרות לתרחישי שימוש ספציפיים.
מאפיינים שחלים על הרכיב ברמה העליונה
<GenerateJWT name="JWT" 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 לניהול ממשק משתמש עם שם אחר בשפה טבעית.
ברירת מחדל | אם תשמיטו את הרכיב הזה, המערכת תשתמש בערך של מאפיין השם של המדיניות. |
נוכחות | אופציונלי |
סוג | מחרוזת |
<Algorithm>
<Algorithm>algorithm-here</Algorithm>
מציינת את אלגוריתם ההצפנה שיש לחתום על האסימון.
ברירת מחדל | לא רלוונטי |
נוכחות | חובה |
סוג | מחרוזת |
ערכים חוקיים | HS256, HS384, HS512, RS256, RS384, RS512, ES256, ES384, ES512, PS256, PS384, PS512 |
<Audience>
<Audience>audience-here</Audience> or: <Audience ref='variable_containing_audience'/>
המדיניות יוצרת JWT שמכיל הצהרת aud שמוגדרת לערך שצוין. ההצהרה הזו מזהה את הנמענים שאליהם ה-JWT מיועד. זו אחת מהתלונות הרשומות שמוזכרות ב-RFC7519.
ברירת מחדל | לא רלוונטי |
נוכחות | אופציונלי |
סוג | מערך (רשימה של ערכים מופרדים בפסיקים) |
ערכים חוקיים | כל מה שמזהה את הקהל. |
<AdditionalClaims/Claims>
<AdditionalClaims> <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'/> </AdditionalClaims> or: <AdditionalClaims ref='claim_payload'/>
מאפשר לציין צמדים נוספים של שם/ערך של הצהרה במטען הייעודי(payload) של ה-JWT. אפשר להגדיר את ההצהרה באופן מפורש כמחרוזת, מספר, ערך בוליאני, מפה או מערך. מפה היא פשוט קבוצה של צמדי שם/ערך.
ברירת מחדל | לא רלוונטי |
נוכחות | אופציונלי |
ערכים חוקיים | כל ערך שבו רוצים להשתמש להצהרה נוספת על זכויות יוצרים. אפשר להגדיר את ההצהרה באופן מפורש כמחרוזת, מספר, ערך בוליאני, מפה או מערך. |
הרכיב <Claim>
מקבל את המאפיינים הבאים:
- name - (חובה) שם ההצהרה.
- ref – (אופציונלי) השם של משתנה זרימה. אם היא קיימת, המדיניות תשתמש בערך של המשתנה הזה בתור ההצהרה. אם יצוינו גם מאפיין ref וגם ערך הצהרה מפורש, הערך המפורש יהיה ברירת המחדל, וייעשה שימוש אם משתנה הזרימה המופנה לא מפוענח.
- type - (אופציונלי) אחד מהערכים הבאים: מחרוזת (ברירת מחדל), מספר, בוליאני או מפה
- array – (אופציונלי) מגדירים את הערך true כדי לציין אם הערך הוא מערך של סוגים. ברירת מחדל: False.
כשכוללים את הרכיב <Claim>
, שמות התלונות מוגדרים בצורה סטטית
במהלך הגדרת המדיניות. לחלופין, אפשר להעביר אובייקט JSON כדי לציין את שמות ההצהרות.
מכיוון שאובייקט ה-JSON מועבר כמשתנה, שמות הצהרות הבעלות ב-JWT שנוצר נקבעים בזמן הריצה.
לדוגמה:
<AdditionalClaims ref='json_claims'/>
כאשר המשתנה json_claims
מכיל אובייקט JSON בצורה:
{ "sub" : "person@example.com", "iss" : "urn://secure-issuer@example.com", "non-registered-claim" : { "This-is-a-thing" : 817, "https://example.com/foobar" : { "p": 42, "q": false } } }
ה-JWT שנוצר כולל את כל ההצהרות באובייקט ה-JSON.
<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>
מוסיפה את הצמדים הנוספים של שם/ערך של הצהרה בכותרת של ה-JWT.
ברירת מחדל | לא רלוונטי |
נוכחות | אופציונלי |
ערכים חוקיים | כל ערך שבו רוצים להשתמש להצהרה נוספת על זכויות יוצרים. אפשר להגדיר את ההצהרה באופן מפורש כמחרוזת, מספר, ערך בוליאני, מפה או מערך. |
הרכיב <Claim>
מקבל את המאפיינים הבאים:
- name - (חובה) שם ההצהרה.
- ref – (אופציונלי) השם של משתנה זרימה. אם היא קיימת, המדיניות תשתמש בערך של המשתנה הזה בתור ההצהרה. אם יצוינו גם מאפיין ref וגם ערך הצהרה מפורש, הערך המפורש יהיה ברירת המחדל, וייעשה שימוש אם משתנה הזרימה המופנה לא מפוענח.
- type - (אופציונלי) אחד מהערכים הבאים: מחרוזת (ברירת מחדל), מספר, בוליאני או מפה
- array – (אופציונלי) מגדירים את הערך true כדי לציין אם הערך הוא מערך של סוגים. ברירת מחדל: False.
<CriticalHeaders>
<CriticalHeaders>a,b,c</CriticalHeaders> or: <CriticalHeaders ref=’variable_containing_headers’/>
מוסיף את הכותרת הקריטית, crit, לכותרת ה-JWT. הכותרת crit היא מערך של שמות כותרות שמקלט ה-JWT חייב להכיר ולזיהוי. לדוגמה:
{ “typ: “...”, “alg” : “...”, “crit” : [ “a”, “b”, “c” ], }
בזמן ריצה, המדיניותVerifyJWT בודקת את כותרת ה-crit.
לכל פריט שמופיע בכותרת ה-crit, המערכת בודקת שהרכיב <KnownHeaders>
במדיניות ValidJWT גם מציג את הכותרת הזו. כל כותרת שמדיניות אימותJWT מוצאת ב-crit
שלא מופיעה גם ב-<KnownHeaders>
תגרום לכישלון של המדיניות ValidJWT.
ברירת מחדל | לא רלוונטי |
נוכחות | אופציונלי |
סוג | מערך של מחרוזות שמופרדות בפסיקים |
ערכים חוקיים | מערך או שם המשתנה שמכיל את המערך. |
<CustomClaims>
הערה: בשלב הזה, המערכת מוסיפה רכיב CustomClaims כשמוסיפים מדיניות GenerateJWT חדשה דרך ממשק המשתמש. הרכיב הזה לא פעיל והמערכת מתעלמת ממנו. הרכיב הנכון לשימוש במקום זאת הוא <AdditionalClaims>. ממשק המשתמש יעודכן כדי להוסיף את הרכיבים הנכונים במועד מאוחר יותר.
<ExpiresIn>
<ExpiresIn>time-value-here</ExpiresIn>
המדיניות הזו קובעת את אורך החיים של ה-JWT באלפיות השנייה, בשניות, בדקות, בשעות או בימים.
ברירת מחדל | N/A |
נוכחות | אופציונלי |
סוג | מספר שלם |
ערכים חוקיים |
ערך או הפניה למשתנה זרימה שמכיל את הערך. אפשר לציין את יחידות הזמן באופן הבא:
לדוגמה, |
<מזהה>
<Id>explicit-jti-value-here</Id> -or- <Id ref='variable-name-here'/> -or- <Id/>
יוצרות JWT עם הצהרת ה-jti הספציפית. כשערך הטקסט והמאפיין ref ריקים, המדיניות תיצור jti שמכיל UUID אקראי. הצהרת מזהה ה-JWT (jti) היא מזהה ייחודי של ה-JWT. מידע נוסף על jti זמין ב-RFC7519.
ברירת מחדל | לא רלוונטי |
נוכחות | אופציונלי |
סוג | מחרוזת, או הפניה. |
ערכים חוקיים | מחרוזת או השם של משתנה זרימה שמכיל את המזהה. |
<IgnoreUnresolvedVariables>
<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>
צריך להגדיר את הערך כ-false אם רוצים שהמדיניות תגרור שגיאה כאשר לא ניתן לפתור את משתנה ההפניה שצוין במדיניות. צריך להגדיר את הערך True כדי להתייחס לכל משתנה שלא ניתן לפתרון כמחרוזת ריקה (null).
ברירת מחדל | לא נכון |
נוכחות | אופציונלי |
סוג | בוליאני |
ערכים חוקיים | נכון או לא נכון |
<Issuer>
<Issuer ref='variable-name-here'/> <Issuer>issuer-string-here</Issuer>
המדיניות יוצרת JWT שמכיל הצהרה בשם iss,עם ערך שמוגדר לערך שצוין. הצהרה שמזהה את מנפיק ה-JWT. זוהי אחת מקבוצת התלונות הרשומה שצוינה ב-RFC7519.
ברירת מחדל | לא רלוונטי |
נוכחות | אופציונלי |
סוג | מחרוזת או הפניה |
ערכים חוקיים | ללא הגבלה |
<NotBefore>
<!-- Specify an absolute time. --> <NotBefore>2017-08-14T11:00:21-07:00</NotBefore> -or- <!-- Specify a time relative to when the token is generated. --> <NotBefore>6h</NotBefore>
ההגדרה קובעת את השעה שבה האסימון ייכנס לתוקף. האסימון לא תקף עד לזמן שצוין. אפשר לציין ערך זמן מוחלט או שעה ביחס למועד יצירת האסימון.
ברירת מחדל | לא רלוונטי |
נוכחות | אופציונלי |
סוג | מחרוזת |
ערכים חוקיים | מידע על סימון אירועים כהמרות מפורט בהמשך. |
ערכי זמן חוקיים לרכיב NotBefore עבור ערכי זמן מוחלטים
שם | אופן הלימוד | דוגמה |
אפשר למיין | yyyy-MM-dd'T'HH:mm:ss.SSSZ |
2017-08-14T11:00:21.269-0700 |
RFC 1123 | EEE, dd MMM yyyy HH:mm:ss zzz |
יום שני, 14 באוגוסט 2017 11:00:21 PDT |
RFC 850 | EEEE, dd-MMM-yy HH:mm:ss zzz |
שני, 14-17 באוגוסט 11:00:21 PDT |
ANCI-C | EEE MMM d HH:mm:ss yyyy |
שני באוגוסט 14 באוגוסט 11:00:21 2017 |
כדי לציין ערכי זמן יחסיים, מציינים מספר שלם ותקופת זמן, לדוגמה:
- 10 שנ'
- 60 דקות
- 12 שעות
<OutputVariable>
<OutputVariable>jwt-variable</OutputVariable>
מציין איפה למקם את ה-JWT שנוצר על ידי המדיניות הזו. כברירת מחדל, הוא מוצב
במשתנה הזרימה jwt.POLICYNAME.generated_jwt
.
ברירת מחדל | jwt.POLICYNAME.generated_jwt |
נוכחות | אופציונלי |
סוג | מחרוזת (שם של משתנה זרימה) |
<PrivateKey/Id>
<PrivateKey> <Id ref="flow-variable-name-here"/> </PrivateKey> or <PrivateKey> <Id>your-id-value-here</Id> </PrivateKey>
מציין את מזהה המפתח (kid) שיש לכלול בכותרת ה-JWT. יש להשתמש רק כאשר האלגוריתם הוא מסוג RS256/RS384/RS512 , PS256/PS384/PS512 או ES256/ES384/ES512.
ברירת מחדל | לא רלוונטי |
נוכחות | אופציונלי |
סוג | מחרוזת |
ערכים חוקיים | מחרוזת או משתנה זרימה |
<PrivateKey/Password>
<PrivateKey> <Password ref="private.privatekey-password"/> </PrivateKey>
במקרה הצורך, מציינים את הסיסמה שבה רוצים להשתמש במדיניות לפענוח המפתח הפרטי. אפשר להשתמש במאפיין ref כדי להעביר את המפתח במשתנה זרימה. יש להשתמש רק כאשר האלגוריתם הוא מסוג RS256/RS384/RS512 , PS256/PS384/PS512 או ES256/ES384/ES512.
ברירת מחדל | לא רלוונטי |
נוכחות | אופציונלי |
סוג | מחרוזת |
ערכים חוקיים |
הפניה למשתנה זרימה.
הערה: חובה לציין משתנה זרימה. תצורת מדיניות שבה הסיסמה מצוינת בטקסט ללא הצפנה תידחה על ידי Edge. משתנה הזרימה חייב לכלול את התחילית 'private'. לדוגמה, |
<PrivateKey/Value>
<PrivateKey> <Value ref="private.variable-name-here"/> </PrivateKey>
מציינת מפתח פרטי בקידוד PEM המשמש לחתימה על ה-JWT. אפשר להשתמש במאפיין ref כדי להעביר את המפתח במשתנה זרימה. יש להשתמש באלגוריתם רק כשהאלגוריתם הוא RS256/RS384/RS512 , PS256/PS384/PS512 או ES256/ES384/ES512.
ברירת מחדל | לא רלוונטי |
נוכחות | נדרש ליצירת JWT באמצעות האלגוריתם RS256. |
סוג | מחרוזת |
ערכים חוקיים |
משתנה זרימה שמכיל מחרוזת שמייצגת ערך של מפתח RSA פרטי בקידוד PEM.
הערה: משתנה הזרימה חייב לכלול את הקידומת "private". לדוגמה,
|
<SecretKey/Id>
<SecretKey> <Id ref="flow-variable-name-here"/> </SecretKey> or <SecretKey> <Id>your-id-value-here</Id> </SecretKey>
קובעת את מזהה המפתח (kid) שיש לכלול בכותרת ה-JWT של JWT שנחתם באמצעות אלגוריתם HMAC. יש להשתמש רק כאשר האלגוריתם הוא מסוג HS256/HS384/HS512.
ברירת מחדל | לא רלוונטי |
נוכחות | אופציונלי |
סוג | מחרוזת |
ערכים חוקיים | מחרוזת או משתנה זרימה |
<SecretKey/Value>
<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 (פרטי). לדוגמה, |
<Subject>
<Subject>subject-string-here</Subject>או
<Subject ref="flow_variable" />
לדוגמה:
<Subject ref="apigee.developer.email"/>
המדיניות יוצרת הצהרת JWT שמכילה הצהרת sub, שמוגדרת לערך שצוין.ההצהרה הזו משמשת כזיהוי של הנושא של ה-JWT או יוצרת הצהרה לגבי הנושא. זוהי אחת מקבוצות התלונות הסטנדרטיות שמוזכרות ב-RFC7519.
ברירת מחדל | לא רלוונטי |
נוכחות | אופציונלי |
סוג | מחרוזת |
ערכים חוקיים | כל ערך שמזהה באופן ייחודי נושא או משתנה זרימה המתייחס לערך. |
משתני זרימה
המדיניות 'יצירת JWT' לא מגדירה משתני זרימה.
הפניה לשגיאות
בקטע הזה מתוארים קודי התקלות והודעות השגיאה שמוחזרים, ומשתני השגיאה שמוגדרים על ידי Edge כשהמדיניות הזו גורמת לשגיאה. חשוב לדעת אם אתם מפתחים כללים לתיקון תקלות. מידע נוסף זמין במאמר מה צריך לדעת על שגיאות מדיניות ועל טיפול בפגמים.
שגיאות בזמן ריצה
השגיאות האלה יכולות להתרחש כשהמדיניות מופעלת.
קוד שגיאה | סטטוס HTTP | מופיע כאשר |
---|---|---|
steps.jwt.AlgorithmInTokenNotPresentInConfiguration |
401 | מופיע כשמדיניות האימות כוללת כמה אלגוריתמים. |
steps.jwt.AlgorithmMismatch |
401 | האלגוריתם שצוין במדיניות היצירה לא תאם לאלגוריתם המצופה במדיניות האימות. האלגוריתמים שצוינו צריכים להתאים. |
steps.jwt.FailedToDecode |
401 | המדיניות לא הצליחה לפענח את ה-JWT. ייתכן שה-JWT פגום. |
steps.jwt.GenerationFailed |
401 | המדיניות לא הצליחה ליצור את ה-JWT. |
steps.jwt.InsufficientKeyLength |
401 | למפתח עם פחות מ-32 בייטים לאלגוריתם HS256, פחות מ-48 בייטים לאגוריתמי HS386 ופחות מ-64 בייטים לאלגוריתם HS512. |
steps.jwt.InvalidClaim |
401 | כאשר חסרה תלונה על הפרת זכויות יוצרים או תלונה על הפרת זכויות יוצרים, או חוסר התאמה בכותרת או בכותרת חסרה. |
steps.jwt.InvalidCurve |
401 | העקומה שצוינה על ידי המפתח אינה חוקית עבור האלגוריתם 'עקומה אליפטית'. |
steps.jwt.InvalidJsonFormat |
401 | נמצא JSON לא חוקי בכותרת או במטען הייעודי (payload). |
steps.jwt.InvalidToken |
401 | השגיאה הזו מתרחשת כאשר אימות החתימה של JWT נכשל. |
steps.jwt.JwtAudienceMismatch |
401 | תביעת הבעלות על הקהל נכשלה באימות האסימון. |
steps.jwt.JwtIssuerMismatch |
401 | תביעת המנפיק נכשלה בתהליך אימות האסימון. |
steps.jwt.JwtSubjectMismatch |
401 | תביעת הבעלות על הנושא נכשלה באימות האסימון. |
steps.jwt.KeyIdMissing |
401 | במדיניות האימות נעשה שימוש ב-JWKS כמקור למפתחות ציבוריים, אבל ה-JWT החתום
לא כולל נכס kid בכותרת. |
steps.jwt.KeyParsingFailed |
401 | לא ניתן היה לנתח את המפתח הציבורי מפרטי המפתח שצוינו. |
steps.jwt.NoAlgorithmFoundInHeader |
401 | מופיע כשה-JWT לא מכיל כותרת אלגוריתם. |
steps.jwt.NoMatchingPublicKey |
401 | במדיניות האימות נעשה שימוש ב-JWKS כמקור למפתחות ציבוריים, אבל kid
ב-JWT החתום לא רשום ב-JWKS. |
steps.jwt.SigningFailed |
401 | ב-GenerateJWT, למפתח שגודלו קטן מהגודל המינימלי לאלגוריתמים HS384 או HS512 |
steps.jwt.TokenExpired |
401 | המדיניות מנסה לאמת אסימון שפג תוקפו. |
steps.jwt.TokenNotYetValid |
401 | האסימון עדיין לא תקף. |
steps.jwt.UnhandledCriticalHeader |
401 | כותרת שנמצאה במדיניות 'אימות JWT' בכותרת crit לא
רשומה ב-KnownHeaders . |
steps.jwt.UnknownException |
401 | אירעה חריגה לא ידועה. |
steps.jwt.WrongKeyType |
401 | צוין סוג שגוי של מפתח. לדוגמה, אם ציינת מפתח RSA לאלגוריתם Elliptic Curve, או מפתח עקומה לאלגוריתם RSA. |
שגיאות בפריסה
השגיאות האלה יכולות להתרחש כשפורסים שרת proxy שכולל את המדיניות הזו.
שם השגיאה | סיבה | תיקון |
---|---|---|
InvalidNameForAdditionalClaim |
הפריסה תיכשל אם ההצהרה שנעשה בה שימוש ברכיב הצאצא <Claim>
של הרכיב <AdditionalClaims> היא אחד מהשמות הרשומים הבאים:
kid , iss , sub , aud , iat ,
exp , nbf או jti .
|
build |
InvalidTypeForAdditionalClaim |
אם ההצהרה שנעשה בה שימוש ברכיב הצאצא <Claim>
של הרכיב <AdditionalClaims> אינה מסוג string , number , boolean או map , הפריסה תיכשל.
|
build |
MissingNameForAdditionalClaim |
אם שם ההצהרה לא צוין ברכיב הצאצא <Claim>
של הרכיב <AdditionalClaims> , הפריסה תיכשל.
|
build |
InvalidNameForAdditionalHeader |
השגיאה הזו נשלחת כאשר שם הצהרת זכויות היוצרים ברכיב הצאצא <Claim>
של הרכיב <AdditionalClaims> הוא alg או typ .
|
build |
InvalidTypeForAdditionalHeader |
אם סוג התביעה שבו נעשה שימוש ברכיב הצאצא <Claim>
של הרכיב <AdditionalClaims> אינו מסוג string , number , boolean או map , הפריסה תיכשל.
|
build |
InvalidValueOfArrayAttribute |
השגיאה הזו מתרחשת כאשר הערך של מאפיין המערך ברכיב הצאצא <Claim>
של הרכיב <AdditionalClaims> לא מוגדר ל-true או ל-false .
|
build |
InvalidConfigurationForActionAndAlgorithm |
אם נעשה שימוש ברכיב <PrivateKey> עם אלגוריתמים של Family HS או אם נעשה שימוש באלמנט <SecretKey> עם אלגוריתמים של משפחת RSA, הפריסה תיכשל.
|
build |
InvalidValueForElement |
אם הערך שצוין ברכיב <Algorithm> אינו ערך נתמך, הפריסה תיכשל.
|
build |
MissingConfigurationElement |
השגיאה הזו תופיע אם לא משתמשים ברכיב <PrivateKey> בשילוב עם אלגוריתמים ממשפחת RSA, או אם לא משתמשים ברכיב <SecretKey> באלגוריתמים של משפחת HS.
|
build |
InvalidKeyConfiguration |
אם רכיב הצאצא <Value> לא מוגדר ברכיבים <PrivateKey> או <SecretKey> , הפריסה תיכשל.
|
build |
EmptyElementForKeyConfiguration |
אם מאפיין ה-ref של אלמנט הצאצא <Value> מתוך הרכיבים <PrivateKey>
או <SecretKey> ריק או שלא צוין, הפריסה תיכשל.
|
build |
InvalidVariableNameForSecret |
השגיאה הזו מתרחשת אם השם של משתנה הזרימה שצוין במאפיין ה-ref של אלמנט הצאצא <Value> של האלמנטים <PrivateKey>
או <SecretKey> לא מכיל את הקידומת הפרטית (private.) .
|
build |
InvalidSecretInConfig |
השגיאה הזו מתרחשת אם אלמנט הצאצא <Value> של רכיבי <PrivateKey> או <SecretKey> לא מכיל את הקידומת הפרטית (private.) .
|
build |
InvalidTimeFormat |
אם הערך שצוין ברכיב <NotBefore> אינו בפורמט נתמך, הפריסה תיכשל.
|
build |
משתני שבר
המשתנים האלה מוגדרים כשמתרחשת שגיאה בזמן הריצה. אפשר לקרוא מידע נוסף במאמר מה צריך לדעת על שגיאות מדיניות.
משתנים | מיקום | דוגמה |
---|---|---|
fault.name="fault_name" |
fault_name הוא שם התקלה, כפי שמפורט בטבלה שגיאות זמן ריצה שלמעלה. שם הטעות הוא החלק האחרון בקוד השגיאה. | fault.name Matches "TokenExpired" |
JWT.failed |
כל כללי המדיניות של JWT מגדירים את אותו משתנה במקרה של כשל. | JWT.failed = true |
דוגמה לשגיאה
לטיפול בשגיאות, השיטה המומלצת היא להעתיק את החלק errorcode
של התגובה לשגיאה. אין להסתמך על הטקסט שבfaultstring
, כי הוא עשוי להשתנות.
דוגמה לכלל שגיאה
<FaultRules> <FaultRule name="JWT Policy Errors"> <Step> <Name>JavaScript-1</Name> <Condition>(fault.name Matches "TokenExpired")</Condition> </Step> <Condition>JWT.failed=true</Condition> </FaultRule> </FaultRules>