המדיניות של CREATEJWT

כרגע מוצג התיעוד של 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>

הרכיבים <Password> ו-<Id> הם אופציונליים.

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

הפניה לרכיב עבור Generate JWT

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

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

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

<GenerateJWT name="JWT" continueOnError="false" enabled="true" async="false">

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

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

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

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

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

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

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

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
נוכחות אופציונלי
סוג מספר שלם
ערכים חוקיים

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

  • ms = אלפיות שנייה (ברירת מחדל)
  • s = שניות
  • מ' = דקות
  • h = שעות
  • d = ימים

לדוגמה, ExpiresIn=10d שווה ערך ל-ExpiresIn של 864,000s.

<מזהה>

<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'. לדוגמה, private.mypassword.

<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". לדוגמה, private.mykey

<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 (פרטי). לדוגמה, private.mysecret

<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.
InvalidTypeForAdditionalClaim אם ההצהרה שנעשה בה שימוש ברכיב הצאצא <Claim> של הרכיב <AdditionalClaims> אינה מסוג string, number, boolean או map, הפריסה תיכשל.
MissingNameForAdditionalClaim אם שם ההצהרה לא צוין ברכיב הצאצא <Claim> של הרכיב <AdditionalClaims>, הפריסה תיכשל.
InvalidNameForAdditionalHeader השגיאה הזו נשלחת כאשר שם הצהרת זכויות היוצרים ברכיב הצאצא <Claim> של הרכיב <AdditionalClaims> הוא alg או typ.
InvalidTypeForAdditionalHeader אם סוג התביעה שבו נעשה שימוש ברכיב הצאצא <Claim> של הרכיב <AdditionalClaims> אינו מסוג string, number, boolean או map, הפריסה תיכשל.
InvalidValueOfArrayAttribute השגיאה הזו מתרחשת כאשר הערך של מאפיין המערך ברכיב הצאצא <Claim> של הרכיב <AdditionalClaims> לא מוגדר ל-true או ל-false.
InvalidConfigurationForActionAndAlgorithm אם נעשה שימוש ברכיב <PrivateKey> עם אלגוריתמים של Family HS או אם נעשה שימוש באלמנט <SecretKey> עם אלגוריתמים של משפחת RSA, הפריסה תיכשל.
InvalidValueForElement אם הערך שצוין ברכיב <Algorithm> אינו ערך נתמך, הפריסה תיכשל.
MissingConfigurationElement השגיאה הזו תופיע אם לא משתמשים ברכיב <PrivateKey> בשילוב עם אלגוריתמים ממשפחת RSA, או אם לא משתמשים ברכיב <SecretKey> באלגוריתמים של משפחת HS.
InvalidKeyConfiguration אם רכיב הצאצא <Value> לא מוגדר ברכיבים <PrivateKey> או <SecretKey>, הפריסה תיכשל.
EmptyElementForKeyConfiguration אם מאפיין ה-ref של אלמנט הצאצא <Value> מתוך הרכיבים <PrivateKey> או <SecretKey> ריק או שלא צוין, הפריסה תיכשל.
InvalidVariableNameForSecret השגיאה הזו מתרחשת אם השם של משתנה הזרימה שצוין במאפיין ה-ref של אלמנט הצאצא <Value> של האלמנטים <PrivateKey> או <SecretKey> לא מכיל את הקידומת הפרטית (private.).
InvalidSecretInConfig השגיאה הזו מתרחשת אם אלמנט הצאצא <Value> של רכיבי <PrivateKey> או <SecretKey> לא מכיל את הקידומת הפרטית (private.).
InvalidTimeFormat אם הערך שצוין ברכיב <NotBefore> אינו בפורמט נתמך, הפריסה תיכשל.

משתני שבר

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

משתנים מיקום דוגמה
fault.name="fault_name" fault_name הוא שם התקלה, כפי שמפורט בטבלה שגיאות זמן ריצה שלמעלה. שם הטעות הוא החלק האחרון בקוד השגיאה. fault.name Matches "TokenExpired"
JWT.failed כל כללי המדיניות של JWT מגדירים את אותו משתנה במקרה של כשל. JWT.failed = true

דוגמה לשגיאה

קודי תקלות במדיניות JWT

לטיפול בשגיאות, השיטה המומלצת היא להעתיק את החלק 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>