פתרון בעיות בפריסת מדיניות VerifyJWT

הדף הזה רלוונטי ל-Apigee ול-Apigee Hybrid.

לעיון במסמכי התיעוד של Apigee Edge

InvalidNameForAdditionalClaim

הודעת השגיאה

פריסת ה-proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:

Error Saving Revision revision_number
Invalid name for additional claim : policy(policy_name) claim(claim_name).

הודעת שגיאה לדוגמה

Error Saving Revision 2
Invalid name for additional claim : policy(JWT-Verify-RS256) claim(iss).

דוגמה לצילום מסך

בממשק המשתמש של Apigee, תוצג תיבת דו-שיח עם שגיאה:

השם של הודעת השגיאה לגבי טענה נוספת לא תקין.

מטרה

השגיאה הזו מתרחשת אם השם של התביעה שמשמשת ברכיב הצאצא <Claim> של הרכיב <AdditionalClaims> הוא אחד מהשמות הרשומים הבאים:

‫'kid',‏ 'iss',‏ 'sub',‏ 'aud',‏ 'iat',‏ 'exp',‏ 'nbf',‏ 'jti'

ההצהרות הרשומות מפורטות ב-RFC 7519.

לדוגמה, שימוש בשם ההצהרה iss ברכיב <AdditionalClaims> יגרום לשגיאה הזו.

אבחון

  1. מזהים את השם של מדיניות האימות של JWT ואת שם הטענה מהודעת השגיאה. לדוגמה, בהודעת השגיאה הבאה, השם של מדיניות אימות ה-JWT הוא JWT-Verify-RS256 ושם הטענה הוא iss:

    Invalid name for additional claim : policy(JWT-Verify-RS256) claim(iss).
    
  2. מוודאים ששם התביעה שמשמש ברכיב <AdditionalClaims> בקובץ ה-XML של מדיניות אימות ה-JWT שנכשל זהה לשם התביעה שזוהה בהודעת השגיאה בשלב 1. לדוגמה, במדיניות הבאה ההצהרה מוגדרת כ-iss, שזהה למה שמופיע בהודעת השגיאה:

    <VerifyJWT name="JWT-Verify-RS256">
        <DisplayName>JWT Verify RS256</DisplayName>
        <Algorithm>RS256</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="iss"/>
        </AdditionalClaims>
    </VerifyJWT>
    
  3. אם שם הטענה שמשמש ברכיב המשני <Claim> של הרכיב <AdditionalClaims> הוא אחד מהשמות הרשומים הבאים:

    ‫'kid',‏ 'iss',‏ 'sub',‏ 'aud',‏ 'iat',‏ 'exp',‏ 'nbf',‏ 'jti'

    אז זה הגורם לשגיאה.

    בדוגמה של מדיניות אימות JWT שמוצגת למעלה, השם <Claim> מצוין כ-iss ברכיב <AdditionalClaims>, ולכן מתקבלת השגיאה:

    Invalid name for additional claim : policy(JWT-Verify-RS256) claim(iss).
    

רזולוציה

אל תשתמשו באף אחד מהשמות הרשומים kid,‏ iss,‏ sub,‏ aud,‏ iat,‏ exp,‏ nbf או jti ברכיב הצאצא <Claim> של הרכיב <AdditionalClaims>.

כדי לתקן את הבעיה במדיניות של אימות JWT בדוגמה, משנים את שם ההצהרה ל-status:

<VerifyJWT name="JWT-Verify-RS256">
    <DisplayName>JWT Verify RS256</DisplayName>
    <Algorithm>RS256</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='status' type='string'>Development</Claim>
    </AdditionalClaims>
</VerifyJWT>

InvalidTypeForAdditionalClaim

הודעת השגיאה

פריסת ה-proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:

Error Saving Revision revision_number
Invalid type for additional claim : policy(policy_name) claim(claim_name) type(type_name).

הודעת שגיאה לדוגמה

Error Saving Revision 2
Invalid type for additional claim : policy(JWT-Verify-RS256) claim(claim) type(integer).

דוגמה לצילום מסך

בממשק המשתמש של Apigee, תוצג תיבת דו-שיח עם שגיאה:

סוג לא תקין של הודעת שגיאה לגבי טענה נוספת.

מטרה

הסוג של הטענה שמשמש ברכיב הצאצא <Claim> של הרכיב <AdditionalClaims> במדיניות VerifyJWT לא זהה לאחד מהסוגים הבאים:

‫string (ברירת מחדל), number, boolean או map

לדוגמה, שימוש בסוג התלונה integer ברכיב <AdditionalClaims> יגרום לשגיאה.

אבחון

  1. מזהים את השם של מדיניות האימות של JWT, את שם הטענה ואת הסוג מהודעת השגיאה. לדוגמה, בהודעת השגיאה הבאה, השם של מדיניות אימות ה-JWT הוא JWT-Verify-RS256, שם הטענה הוא claim והסוג הוא integer:

    Invalid type for additional claim : policy(JWT-Verify-RS256) claim(claim) type(integer).
    
  2. מוודאים ששם התביעה והסוג שמשמשים ברכיב <AdditionalClaims> ב-XML של מדיניות אימות ה-JWT שנכשל, תואמים לשם התביעה ולסוג שזוהו בהודעת השגיאה בשלב 1. לדוגמה, במדיניות הבאה ההצהרה מוגדרת כ-claim והסוג מוגדר כ-integer, שזהה למה שמופיע בהודעת השגיאה:

    <VerifyJWT name="JWT-Verify-RS256">
      <DisplayName>JWT Verify RS256</DisplayName>
      <Algorithm>RS256</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='claim' ref='reqclaim' type='integer'/>
      </AdditionalClaims>
    </VerifyJWT>
    
  3. אם סוג התלונה שמשמש ברכיב הצאצא <Claim> של הרכיב <AdditionalClaims> הוא לא אחד מהסוגים הבאים:

    ‫string (ברירת מחדל), number, boolean או map

    אז זה הגורם לשגיאה.

    בדוגמה של מדיניות אימות JWT שמוצגת למעלה, הסוג <Claim> מוגדר כ-integer ברכיב <AdditionalClaims>. מכיוון ש-integer הוא לא סוג נתמך, מוצגת השגיאה:

    Invalid type for additional claim : policy(JWT-Verify-RS256) claim(claim) type(integer).
    

רזולוציה

מוודאים שמשתמשים רק בסוגי הנתונים הנתמכים string (ברירת מחדל), number, boolean או map ברכיב הצאצא <Claim> של הרכיב <AdditionalClaims>.

כדי לתקן את המדיניות לדוגמה Verify JWT, משנים את סוג ההצהרה ל-boolean:

<VerifyJWT name="JWT-Verify-RS256">
    <DisplayName>JWT Verify RS256</DisplayName>
    <Algorithm>RS256</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='claim' ref='reqclaim' type='boolean'/>
    </AdditionalClaims>
</VerifyJWT>

MissingNameForAdditionalClaim

הודעת השגיאה

פריסת ה-proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:

Error Saving Revision revision_number
Error occurred while validation of bean(policy_name.xml) Reason: - Required attribute name is missing in Claim.

הודעת שגיאה לדוגמה

Error Saving Revision 2
Error occurred while validation of bean JWT-Verify-RS256.xml. Reason: - Required attribute name is missing in Claim

דוגמה לצילום מסך

בממשק המשתמש של Apigee, תוצג תיבת דו-שיח עם שגיאה:

שם המאפיין חסר בהודעת השגיאה לגבי התביעה.

מטרה

השגיאה הזו מתרחשת אם שם הטענה לא מצוין ברכיב הבן <Claim> של הרכיב <AdditionalClaims> או <AdditionalHeaders>.

אבחון

  1. מזהים את השם של מדיניות Verify JWT (אימות JWT) מהודעת השגיאה. לדוגמה, בהודעת השגיאה הבאה, השם של מדיניות אימות ה-JWT הוא JWT-Verify-RS256:

    Error occurred while validation of bean JWT-Verify-RS256.xml. Reason: - Required attribute name is missing in Claim
    
  2. בודקים את ה-XML של מדיניות האימות של JWT שנכשל, ומוודאים ששם התביעה חסר ברכיב הצאצא <Claims> מתחת לרכיב <AdditionalClaims> או <AdditionalHeaders>. לדוגמה, במדיניות הבאה של אימות JWT לא מצוין שם הטענה ברכיב <AdditionalClaims>:

    <VerifyJWT name="JWT-Verify-RS256">
        <DisplayName>JWT Verify RS256</DisplayName>
        <Algorithm>RS256</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 ref='reqclaim' type='boolean'/>
        </AdditionalClaims>
    </VerifyJWT>
    

    מכיוון שהשם <Claim> לא צוין באלמנט <AdditionalClaims>, מוצגת השגיאה:

    Error occurred while validation of bean JWT-Verify-RS256.xml. Reason: - Required attribute name is missing in Claim
    

רזולוציה

חשוב לוודא ששם התביעה תמיד מצוין ברכיב הצאצא <Claim> של הרכיב <AdditionalClaims> או <AdditionalHeaders>.

כדי לתקן את מדיניות האימות של JWT שמוצגת בדוגמה, צריך לציין את שם ההצהרה כמו שמוצג בהמשך:

<VerifyJWT name="JWT-Verify-RS256">
    <DisplayName>JWT Verify RS256</DisplayName>
    <Algorithm>RS256</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='claim' ref='reqclaim' type='boolean'/>
    </AdditionalClaims>
</VerifyJWT>

InvalidNameForAdditionalHeader

הודעת השגיאה

פריסת ה-proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:

Error Saving Revision revision_number
Invalid name for additional header : policy(policy_name)header(header_name).

הודעת שגיאה לדוגמה

Error Saving Revision 2
Invalid name for additional header: policy(JWT-Verify-RS256) header(alg).

דוגמה לצילום מסך

בממשק המשתמש של Apigee, תוצג תיבת דו-שיח עם שגיאה:

השם של הודעת השגיאה של הכותרת הנוספת לא תקין.

מטרה

השגיאה הזו מתרחשת אם השם של ההצהרה שמשמשת ברכיב הצאצא <Claim> של הרכיב <AdditionalHeaders> הוא אחד מכותרות ה-JWT הסטנדרטיות הבאות:

alg או typ

לדוגמה, שימוש בשם התביעה alg מתחת לרכיב <AdditionalHeaders> יגרום לשגיאה.

אבחון

  1. מזהים את השם של מדיניות האימות של JWT ואת שם הכותרת מהודעת השגיאה. לדוגמה, בהודעת השגיאה הבאה, השם של מדיניות אימות ה-JWT הוא JWT-Verify-RS256 ושם הכותרת הוא alg:

    Invalid name for additional header: policy(JWT-Verify-RS256) header(alg).
    
  2. מוודאים ששם הכותרת שמשמש ברכיב הצאצא <Claim> מתחת לרכיב <AdditionalHeaders> בקובץ ה-XML של מדיניות אימות ה-JWT שנכשל, זהה לשם הכותרת שצוין בהודעת השגיאה בשלב 1. לדוגמה, במדיניות הבאה הכותרת מוגדרת כ-alg, שזהה למה שמופיע בהודעת השגיאה:

    <VerifyJWT name="JWT-Verify-RS256">
        <DisplayName>JWT Verify RS256</DisplayName>
        <Algorithm>RS256</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/>
        <AdditionalHeaders>
            <Claim name="alg"/>
        </AdditionalHeaders>
    </VerifyJWT>
    
  3. אם שם הכותרת שמשמש ברכיב המשני <Claim> של הרכיב <AdditionalClaims> הוא אחת מכותרות ה-JWT הסטנדרטיות הבאות:

    alg או typ

    אז זה הגורם לשגיאה.

    בדוגמה של מדיניות אימות JWT שמוצגת למעלה, השם <Claim> מצוין כ-alg ברכיב <AdditionalClaims>, ולכן מתקבלת השגיאה:

    Invalid name for additional header: policy(JWT-Verify-RS256) header(alg).
    

רזולוציה

אל תשתמשו בכותרות ה-JWT הרגילות alg או typ ברכיב המשני <Claim> של הרכיב <AdditionalHeaders>.

כדי לתקן את המדיניות לדוגמה Verify JWT, משתמשים בשם x5c ברכיב המשני <Claim> של הרכיב <AdditionalHeaders>:

<VerifyJWT name="JWT-Verify-RS256">
    <DisplayName>JWT Verify RS256</DisplayName>
    <Algorithm>RS256</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/>
    <AdditionalHeaders>
        <Claim name='x5c'/>
    </AdditionalHeaders>
</VerifyJWT>

InvalidTypeForAdditionalHeader

הודעת השגיאה

פריסת ה-proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:

Error Saving Revision revision_number
Invalid type for additional header : policy(policy_name) claim(claim_name) type(type_name).

הודעת שגיאה לדוגמה

Error Saving Revision 2
Invalid type for additional header : policy(JWT-Verify-RS256) claim(claim1) type(integer).

דוגמה לצילום מסך

בממשק המשתמש של Apigee, תוצג תיבת דו-שיח עם שגיאה:

הסוג של הודעת השגיאה של הכותרת הנוספת לא תקין.

מטרה

השגיאה תתרחש אם סוג הטענה שמשמש ברכיב הצאצא <Claim> של הרכיב <AdditionalHeaders> במדיניות Verify JWT הוא לא אחד מהסוגים הבאים:

‫string (ברירת מחדל), number, boolean או map

לדוגמה, שימוש בסוג התלונה integer מתחת לרכיב <AdditionalHeaders> יגרום לשגיאה.

אבחון

  1. מזהים את השם של מדיניות האימות של JWT, את שם הטענה ואת הסוג מהודעת השגיאה. לדוגמה, בהודעת השגיאה הבאה, השם של מדיניות אימות ה-JWT הוא JWT-Verify-RS256, שם הטענה הוא claim והסוג הוא integer:

    Invalid type for additional header : policy(JWT-Verify-RS256) claim(claim) type(integer).
    
  2. מוודאים ששם הטענה והסוג שמשמשים ברכיב <AdditionalClaims> ב-XML של מדיניות אימות ה-JWT שנכשל, תואמים לשם הטענה ולסוג שזוהו בהודעת השגיאה בשלב 1. לדוגמה, במדיניות הבאה התלונה מוגדרת כ-claim וסוג התלונה מוגדר כ-integer,, וזה תואם למה שמופיע בהודעת השגיאה:

    <VerifyJWT name="JWT-Verify-RS256">
        <DisplayName>JWT Verify RS256</DisplayName>
        <Algorithm>RS256</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/>
        <AdditionalHeaders>
            <Claim name='claim' ref='reqclaim' type='integer'/>
        </AdditionalHeaders>
    </VerifyJWT>
    
  3. אם סוג התלונה שמשמש ברכיב הצאצא <Claim> של הרכיב <AdditionalHeaders> הוא לא אחד מהסוגים הבאים:

    ‫string (ברירת מחדל), number, boolean או map

    אז זה הגורם לשגיאה.

    בדוגמה של מדיניות אימות JWT שמוצגת למעלה, סוג הערך <Claim> שמוגדר ברכיב <AdditionalHeaders> הוא integer. מכיוון ש-integer הוא לא סוג נתמך, מוצגת השגיאה:

    Invalid type for additional header : policy(JWT-Verify-RS256) claim(claim) type(integer).
    

רזולוציה

מוודאים שברכיב הצאצא <Claim> של הרכיב <AdditionalHeaders> נעשה שימוש רק בסוגי הנתונים הנתמכים string,‏ number,‏ boolean או map.

כדי לתקן את המדיניות לדוגמה Verify JWT, משנים את סוג ההצהרה ל-boolean:

<VerifyJWT name="JWT-Verify-RS256">
    <DisplayName>JWT Verify RS256</DisplayName>
    <Algorithm>RS256</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/>
    <AdditionalHeaders>
        <Claim name='claim' ref='reqclaim' type='boolean'/>
    </AdditionalHeaders>
</VerifyJWT>

InvalidValueOfArrayAttribute

הודעת השגיאה

פריסת ה-proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:

Error Saving Revision revision_number
Invalid value for array attribute: policy(policy_name)claim(claim_name).

הודעת שגיאה לדוגמה

Error Saving Revision 2
Invalid value for array attribute: policy(JWT-Verify-RS256) claim(claim).

דוגמה לצילום מסך

בממשק המשתמש של Apigee, תוצג תיבת דו-שיח עם שגיאה:

הודעת שגיאה לגבי ערך לא תקין של מאפיין מסוג מערך.

מטרה

השגיאה הזו מתרחשת אם הערך של מאפיין המערך באלמנט הצאצא <Claim> של האלמנט <AdditionalClaims> או <AdditionalHeaders> לא מוגדר כ-true או כ-false.

לדוגמה, הגדרת הערך של מאפיין המערך כ-yes ברכיב הצאצא <Claim> של הרכיב <AdditionalClaims> או <AdditionalHeaders> גורמת לשגיאה.

אבחון

  1. מזהים את השם של מדיניות האימות של JWT ואת שם הטענה מהודעת השגיאה. לדוגמה, בהודעת השגיאה הבאה, השם של מדיניות אימות ה-JWT הוא JWT-Verify-RS256 ושם הטענה הוא claim:

    Invalid value for array attribute: policy(JWT-Verify-RS256) claim(claim).
    
  2. מוודאים ששם הטענה שמשמש ברכיב הצאצא <Claim> מתחת לרכיב <AdditionalHeaders> ב-XML של מדיניות האימות של JWT שנכשל, זהה לשם הטענה שזוהה בהודעת השגיאה בשלב 1. לדוגמה, במדיניות הבאה שם ההצהרה הוא claim, שזהה למה שמופיע בהודעת השגיאה:

    <VerifyJWT name="JWT-Verify-RS256">
        <DisplayName>JWT Verify RS256</DisplayName>
        <Algorithm>RS256</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='claim' ref='reqclaim' type='string' array='yes'/>
        </AdditionalClaims>
    </VerifyJWT>
    
  3. אם הערך של המאפיין array ברכיב הצאצא <Claim> של הרכיב <AdditionalClaims> לא מוגדר כ-true או כ-false, זו הסיבה לשגיאה.

    בדוגמה שלמעלה, המאפיין array ברכיב הצאצא <Claim> של הרכיב <AdditionalClaims> מוגדר כ-yes, ולכן מוצגת השגיאה:

    Invalid value for array attribute: policy(JWT-Verify-RS256) claim(claim).
    

רזולוציה

מוודאים שהערך של מאפיין המערך ברכיב הצאצא <Claim> של הרכיבים <AdditionalClaims> או <AdditionalHeaders> מוגדר כ-true או כ-false.

כדי לתקן את הדוגמה למדיניות Verify JWT שמוצגת למעלה, משנים את הערך של מאפיין המערך ל-true:

<VerifyJWT name="JWT-Verify-RS256">
    <DisplayName>JWT Verify RS256</DisplayName>
    <Algorithm>RS256</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/>
    <AdditionalHeaders>
        <Claim name='claim' ref='reqclaim' type='string' array='true'/>
    </AdditionalHeaders>
</VerifyJWT>

InvalidValueForElement

הודעת השגיאה

פריסת ה-proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:

Error Saving Revision
Invalid Value for element : policy(policy_name) element(element_name).

הודעת שגיאה לדוגמה

Error Saving Revision
Invalid Value for element : policy(JWT-Verify-RS256) element(Algorithm).

דוגמה לצילום מסך

בממשק המשתמש של Apigee, תוצג תיבת דו-שיח עם שגיאה:

ערך לא חוקי בהודעת השגיאה של הרכיב.

מטרה

השגיאה הזו מתרחשת אם הערך שצוין ברכיב <Algorithm> לא תואם לאחד מהערכים הבאים:

HS256, HS384, HS512, RS256, RS384, RS512

לדוגמה, אם מציינים את ערך האלגוריתם כ-RS128 ברכיב <Algorithm>, מוצגת השגיאה הזו.

אבחון

  1. מזהים את השם של מדיניות Verify JWT ואת שם הרכיב מהודעת השגיאה. לדוגמה, בהודעת השגיאה הבאה, השם של מדיניות אימות ה-JWT הוא JWT-Verify-RS256 ושם הרכיב הוא Algorithm:

    Invalid Value for element : policy(JWT-Verify-RS256) element(Algorithm).
    
  2. בודקים את ה-XML של מדיניות האימות של JWT שנכשל, ואת הערך שצוין לרכיב <Algorithm>.

    הנה דוגמה למדיניות של אימות JWT:

    <VerifyJWT name="JWT-Verify-RS256">
        <DisplayName>JWT Verify RS256</DisplayName>
        <Algorithm>RS128</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='status' type='string'>Development</Claim>
        </AdditionalClaims>
    </VerifyJWT>
    
  3. בודקים את הערך שצוין ברכיב <Algorithm>. אם הוא לא אחד מהערכים הבאים:

    HS256, HS384, HS512, RS256, RS384, RS512

    אז זה הגורם לשגיאה.

    בדוגמה של מדיניות אימות JWT שמוצגת למעלה, השם <Algorithm> מוגדר כ-HS128. מכיוון שזהו לא אלגוריתם נתמך, מופיעה השגיאה:

    Invalid Value for element : policy(JWT-Verify-RS256) element(Algorithm).
    

רזולוציה

צריך לוודא שהערך שצוין ברכיב <Algorithm> הוא אחד מהערכים הנתמכים:

HS256, HS384, HS512, RS256, RS384, RS512

כדי לתקן את מדיניות האימות של JWT שמוצגת למעלה, שמשתמשת ברכיב <SecretKey>, צריך לשנות את הערך של <Algorithm> ל-HS25. הערה: כשמשתמשים ברכיב <SecretKey>, אפשר להשתמש רק באלגוריתמים של HS Family.

<VerifyJWT name="JWT-Verify-RS256">
    <DisplayName>JWT Verify RS256</DisplayName>
    <Algorithm>RS256</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='status' type='string'>Development</Claim>
    </AdditionalClaims>
</VerifyJWT>

MissingConfigurationElement

הודעת השגיאה

פריסת ה-proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:

Error Saving Revision
Missing configuration element : policy(policy_name) element(element_name).

הודעת שגיאה לדוגמה

Error Saving Revision
Missing configuration element : policy(JWT-Verify-RS256) element(PublicKey).

דוגמה לצילום מסך

בממשק המשתמש של Apigee, תוצג תיבת דו-שיח עם שגיאה:

הודעת שגיאה על רכיב הגדרה חסר.

מטרה

השגיאה הזו מתרחשת כשלא משתמשים ברכיב <PublicKey> עם אלגוריתמים של RSA Family במדיניות Verify JWT. באופן דומה, השגיאה יכולה להתרחש אם לא משתמשים ברכיב <SecretKey> עם אלגוריתמים של HS Family במדיניות Verify JWT.

לדוגמה, אם לא משתמשים ברכיב <PublicKey> עם אלגוריתמים של RSA Family, השגיאה הזו תופיע.

אבחון

  1. מזהים את השם של מדיניות Verify JWT ואת השם של הרכיב החסר מתוך הודעת השגיאה. לדוגמה, בהודעת השגיאה הבאה, השם של מדיניות אימות ה-JWT הוא JWT-Verify-RS256 ושם הרכיב החסר הוא PublicKey:

    Missing configuration element : policy(JWT-Verify-RS256) element(PublicKey).
    
  2. בודקים את קובץ ה-XML של מדיניות האימות של JWT שנכשל, ומוודאים שהרכיב שמצוין בהודעת השגיאה חסר. אם הוא חסר, זה הגורם לשגיאה.

    לדוגמה, במדיניות הבאה חסר PublicKey והערך של Algorithm הוא RS256:

    <VerifyJWT name="JWT-Verify-RS256">
        <DisplayName>JWT Verify RS256</DisplayName>
        <Algorithm>RS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <ExpiresIn>1h</ExpiresIn>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalClaims>
            <Claim name='claim' ref='reqclaim' type='string' array='true'/>
        </AdditionalClaims>
    </VerifyJWT>
    

    במדיניות לדוגמה Verify JWT נעשה שימוש באלגוריתמים של HS Family, אבל חסר הרכיב הנדרש PublicKey, ולכן מוצגת השגיאה:

    Missing configuration element : policy(JWT-Verify-RS256) element(PublicKey).
    

רזולוציה

חשוב לוודא שנעשה שימוש ברכיב <PublicKey> שהוא חובה עם אלגוריתמים של RSA Family, וברכיב <SecretKey> שהוא חובה עם אלגוריתמים של HS Family.

כדי לתקן את הדוגמה למדיניות Verify JWT שמוצגת למעלה, שמשתמשת באלגוריתם RS256, מוסיפים את הרכיב <PublicKey> למדיניות VerifyJWT:

<VerifyJWT name="JWT-Verify-RS256">
    <DisplayName>JWT Verify RS256</DisplayName
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <Algorithm>RS256</Algorithm>
    <PublicKey>
      <Value ref="public.publickey"/>
    </PublicKey>
    <ExpiresIn>1h</ExpiresIn>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalHeaders>
        <Claim name='claim' ref='reqclaim' type='string' array='true'/>
    </AdditionalHeaders>
</VerifyJWT>

InvalidKeyConfiguration

הודעת השגיאה

פריסת ה-proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:

Error Saving Revision 
Invalid Key configuration : policy(policy_name).

הודעת שגיאה לדוגמה

Error Saving Revision 2
Invalid Key configuration : policy(JWT-Verify-RS256).

דוגמה לצילום מסך

בממשק המשתמש של Apigee, תוצג תיבת דו-שיח עם שגיאה:

הודעת שגיאה לגבי הגדרת מפתח לא תקינה.

מטרה

השגיאה הזו מתרחשת אם רכיב הבן <Value> או רכיב הבן הנדרש <JWKS> לא מוגדרים ברכיבים <PublicKey> או <SecretKey> של מדיניות Verify JWT.

אבחון

  1. מזהים את השם של מדיניות אימות ה-JWT מהודעת השגיאה. לדוגמה, בהודעת השגיאה הבאה, השם של מדיניות האימות של JWT הוא JWT-Verify-RS256:

    Invalid Key configuration : policy(JWT-Verify-RS256).
    
    
  2. בודקים את קובץ ה-XML של מדיניות האימות של JWT שנכשל, ומוודאים שאלמנט הצאצא <Value> או אלמנט הצאצא <JWKS> לא מוגדרים באלמנטים <PublicKey> או <SecretKey>. אם רכיב הצאצא לא מוגדר, זו הסיבה לשגיאה.

    לדוגמה, במדיניות הבאה אפשר לראות שרכיב הבן <Value> או <JWKS> לא מוגדר ברכיב <PublicKey>:

    <VerifyJWT name="JWT-Verify-RS256">
        <DisplayName>JWT Verify RS256</DisplayName>
        <Algorithm>RS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <ExpiresIn>1h</ExpiresIn>
        <PublicKey>
        </PublicKey>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalClaims>
            <Claim name='claim' ref='reqclaim' type='string' array='true'/>
        </AdditionalClaims>
    </VerifyJWT>
    

    מכיוון שאלמנט הצאצא <Value> או <JWKS> לא מוגדר באלמנט <PublicKey> של מדיניות האימות של JWT, מוצגת השגיאה:

    Invalid Key configuration : policy(JWT-Verify-RS256).
    

רזולוציה

חשוב לוודא שרכיב הבן <Value> או <JWKS> מוגדר תמיד ברכיב <PublicKey> של מדיניות אימות ה-JWT.

כדי לתקן את המדיניות לדוגמה של אימות JWT, צריך להגדיר את רכיב הצאצא <Value> או <JWKS> מתחת לרכיב <PublicKey>, כמו שמוצג בהמשך:

<VerifyJWT name="JWT-Verify-RS256">
    <DisplayName>JWT Verify RS256</DisplayName>
    <Algorithm>RS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <PublicKey>
        <Value ref="public.publickey"/>
    </PublicKey>
    <ExpiresIn>1h</ExpiresIn>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalHeaders>
        <Claim name='claim' ref='reqclaim' type='string' array='true'/>
    </AdditionalHeaders>
</PublicJWT>

EmptyElementForKeyConfiguration

הודעת השגיאה

פריסת ה-proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:

Error Saving Revision revision_number
Empty Element for Key Configuration : policy(policy_name) element(element_name).

הודעת שגיאה לדוגמה

Error Saving Revision 2
Empty Element for Key Configuration : policy(JWT-Verify-RS256) element(PublicKey/Value).

דוגמה לצילום מסך

בממשק המשתמש של Apigee, תוצג תיבת דו-שיח עם שגיאה:

רכיב ריק להודעת שגיאה בהגדרת מפתח.

מטרה

השגיאה הזו מתרחשת אם מאפיין ה-ref ברכיב הצאצא <Value> או <JWKS> של הרכיב <PublicKey> לא צוין או ריק.

לדוגמה, אם רכיב הצאצא <Value> של האלמנט <PublicKey> ריק, השגיאה מתרחשת.

אבחון

  1. מזהים את השם של מדיניות Verify JWT ואת שם הרכיב שריק מתוך הודעת השגיאה. לדוגמה, בהודעת השגיאה הבאה, השם של מדיניות אימות ה-JWT הוא JWT-Verify-RS256 ושם הרכיב הוא PublicKey/Value:

    Empty Element for Key Configuration : policy(JWT-Verify-RS256) element(PublicKey/Value).
    
  2. בודקים את קובץ ה-XML של המדיניות Verify JWT שנכשל ומוודאים שהרכיב שזוהה בשלב 1 ריק. אם הוא ריק, זו הסיבה לשגיאה.

    לדוגמה, במדיניות הבאה אפשר לראות שהרכיב הצאצא <Value> של הרכיב <PublicKey> ריק:

    <VerifyJWT name="JWT-Verify-RS256">
        <DisplayName>JWT Verify RS256</DisplayName>
        <Algorithm>RS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <ExpiresIn>1h</ExpiresIn>
        <PublicKey>
            <Value/>
        </PublicKey>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalClaims>
            <Claim name='claim' ref='reqclaim' type='string' array='true'/>
        </AdditionalClaims>
    </VerifyJWT>
    

    כי רכיב הצאצא <Value> של רכיב <PublicKey> במדיניות Verify JWT ריק, מוצגת השגיאה:

    Empty Element for Key Configuration : policy(JWT-Verify-RS256) element(PublicKey/Value).
    
    

רזולוציה

חשוב לוודא שמאפיין ה-ref ברכיב הבן <Value> או <JWKS> של הרכיב <PublicKey> תמיד מצוין.

כדי לתקן את המדיניות לדוגמה Verify JWT, משתמשים במשתנה של זרימת העבודה public.publickey ברכיב המשני <Value> של הרכיב <PublicKey>:

<VerifyJWT name="JWT-Verify-RS256">
    <DisplayName>JWT Verify RS256</DisplayName>
    <Algorithm>RS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <PublicKey>
        <Value ref="public.publickey"/>
    </PublicKey>
    <ExpiresIn>1h</ExpiresIn>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalHeaders>
        <Claim name='claim' ref='reqclaim' type='string' array='true'/>
    </AdditionalHeaders>
</VerifyJWT>

InvalidConfigurationForVerify

הודעת השגיאה

פריסת ה-proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:

Error Saving Revision revision_number
Invalid configuration element for verify : policy(policy_name) element(element_name).

הודעת שגיאה לדוגמה

Error Saving Revision 3
Invalid configuration element for verify : policy(JWT-Verify-HS256) element(SecretKey/Id).

דוגמה לצילום מסך

בממשק המשתמש של Apigee, תוצג תיבת דו-שיח עם שגיאה:

רכיב הגדרה לא תקין להודעת שגיאה באימות.

מטרה

השגיאה הזו מתרחשת אם הרכיב <Id> מוגדר בתוך הרכיב <SecretKey> של מדיניות VerifyJWT.

לדוגמה, אם הרכיב <Id> מוגדר ברכיב <SecretKey>, תופיע השגיאה הזו.

אבחון

  1. מזהים את השם של מדיניות Verify JWT ואת השם של הרכיב הלא תקין מתוך הודעת השגיאה. לדוגמה, בהודעת השגיאה הבאה, השם של מדיניות אימות ה-JWT הוא JWT-Verify-RS256 ושם הרכיב הוא SecretKey/Id:

    Invalid configuration element for verify : policy(JWT-Verify-HS256) element(SecretKey/Id)
    
  2. בודקים את קובץ ה-XML של המדיניות Verify JWT (אימות JWT) שנכשל, ומוודאים שהרכיב הלא תקין שזוהה בשלב 1 מוגדר. אם הוא מוגדר, זו הסיבה לשגיאה.

    לדוגמה, במדיניות הבאה אפשר לראות שהוגדר רכיב הצאצא <Id> של הרכיב <SecretKey>:

    <VerifyJWT name="JWT-Verify-RS256">
        <DisplayName>JWT Verify RS256</DisplayName>
        <Algorithm>RS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <ExpiresIn>1h</ExpiresIn>
        <SecretKey>
            <Value ref="private.secretkey"/>
            <Id/>
        </SecretKey>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalClaims>
            <Claim name='claim' ref='reqclaim' type='string' array='true'/>
        </AdditionalClaims>
    </VerifyJWT>
    

    מכיוון שהאלמנט <Id> מוגדר בתוך האלמנט <SecretKey> של המדיניות Verify JWT, מוצגת השגיאה:

    Invalid configuration element for verify : policy(JWT-Verify-HS256) element(SecretKey/Id)
    

רזולוציה

מוודאים שהרכיב <Id> אף פעם לא מוגדר בתוך הרכיב <SecretKey> של מדיניות Verify JWT.

כדי לתקן את המדיניות לדוגמה Verify JWT, מסירים את רכיב הצאצא <Id> מהרכיב <SecretKey>:

<VerifyJWT name="JWT-Verify-RS256">
    <DisplayName>JWT Verify RS256</DisplayName>
    <Algorithm>RS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <SecretKey>
        <Value ref='private.secretkey'/>
    </SecretKey>
    <ExpiresIn>1h</ExpiresIn>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalHeaders>
        <Claim name='claim' ref='reqclaim' type='string' array='true'/>
    </AdditionalHeaders>
</VerifyJWT>

InvalidEmptyElement

הודעת השגיאה

פריסת ה-proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:

Error Saving Revision 
Invalid empty element : policy(policy_name) element(element_name).

הודעת שגיאה לדוגמה

Error Saving Revision 3
Invalid empty element : policy(JWT-Verify-HS256) element(Source).

דוגמה לצילום מסך

בממשק המשתמש של Apigee, תוצג תיבת דו-שיח עם שגיאה:

הודעת שגיאה על רכיב ריק לא תקין.

מטרה

השגיאה הזו מתרחשת אם הרכיב <Source> של מדיניות האימות של JWT ריק. אם הוא קיים, צריך להגדיר אותו עם שם של משתנה זרימה.

אבחון

  1. מזהים את השם של מדיניות Verify JWT ואת שם הרכיב הריק מהודעת השגיאה. לדוגמה, בהודעת השגיאה הבאה, השם של מדיניות אימות ה-JWT הוא JWT-Verify-RS256 ושם הרכיב הוא PublicKey/Value:

    Invalid empty element : policy(JWT-Verify-HS256) element(Source).
    
  2. בודקים את ה-XML של המדיניות Verify JWT שנכשלת ומוודאים שהרכיב שזוהה בשלב 1 ריק. אם הוא ריק, זו הסיבה לשגיאה.

    לדוגמה, במדיניות הבאה אפשר לראות שהרכיב <Source> ריק:

    <VerifyJWT name="JWT-Verify-RS256">
        <DisplayName>JWT Verify RS256</DisplayName>
        <Algorithm>RS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <ExpiresIn>1h</ExpiresIn>
        <Source></Source>
        <PublicKey>
            <Value ref="public.publickey"/>
        </PublicKey>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalClaims>
            <Claim name='claim' ref='reqclaim' type='string' array='true'/>
        </AdditionalClaims>
    </VerifyJWT>
    

    מכיוון שהרכיב <Source> של מדיניות האימות של JWT ריק, מתקבלת השגיאה:

    Invalid empty element : policy(JWT-Verify-HS256) element(Source).
    

רזולוציה

אם קיים רכיב <Source> של מדיניות Verify JWT, מוודאים שהוא מציין משתנה זרימה.

כדי לתקן את מדיניות האימות של JWT בדוגמה, צריך להשתמש במשתנה תקין של זרימת נתונים ברכיב <Source>:

<VerifyJWT name="JWT-Verify-RS256">
    <DisplayName>JWT Verify RS256</DisplayName>
    <Algorithm>RS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <Source>jwt-variable</Source>
    <PublicKey>
        <Value ref="public.publickey"/>
    </PublicKey>
    <ExpiresIn>1h</ExpiresIn>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalHeaders>
        <Claim name='claim' ref='reqclaim' type='string' array='true'/>
    </AdditionalHeaders>
</VerifyJWT>

InvalidPublicKeyValue

הודעת השגיאה

פריסת ה-proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:

Error Saving Revision revision_number
Invalid Public Key Value in Configuration : policy(policy_name) element(element_name).

הודעת שגיאה לדוגמה

Error Saving Revision 2
Invalid Public Key Value in Configuration : policy(JWT-Verify-RS256) element(PublicKey/JWKS).

דוגמה לצילום מסך

בממשק המשתמש של Apigee, תוצג תיבת דו-שיח עם שגיאה:

ערך לא תקין של מפתח ציבורי בהודעת שגיאה בהגדרה.

מטרה

השגיאה הזו מתרחשת אם הערך שמשמש ברכיב הצאצא <JWKS> של הרכיב <PublicKey> לא נמצא בפורמט תקין כפי שמצוין ב-RFC 7517.

לדוגמה, שימוש ב-abc כערך של רכיב הצאצא <JWKS> ברכיב <PublicKey> יוביל לשגיאה הזו.

אבחון

  1. מזהים את השם של מדיניות Verify JWT ואת שם הרכיב שמכיל ערך לא תקין מהודעת השגיאה. לדוגמה, בהודעת השגיאה הבאה, השם של מדיניות אימות ה-JWT הוא JWT-Verify-RS256 והרכיב הוא PublicKey/JWKS:

    Invalid Public Key Value in Configuration : policy(JWT-Verify-RS256) element(PublicKey/JWKS).
    
  2. בודקים את קובץ ה-XML של המדיניות Verify JWT שנכשל, ומוודאים שהאלמנט שזוהה בשלב 1 מכיל ערך בפורמט תקין בהתאם ל-RFC 7517. אם הערך של הרכיב לא בפורמט תקין, זו הסיבה לשגיאה.

    <VerifyJWT name="JWT-Verify-RS256">
        <DisplayName>JWT Verify RS256</DisplayName>
        <Algorithm>RS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <PublicKey>
            <JWKS>abc<JWKS>
        </PublicKey>
        <ExpiresIn>1h</ExpiresIn>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
    </VerifyJWT>
    

    הערך ברכיב הצאצא <JWKS> של הרכיב <PublicKey> לא בפורמט תקין לפי RFC 7517, ולכן מוצגת השגיאה:

    Invalid Public Key Value in Configuration : policy(JWT-Verify-RS256) element(PublicKey/JWKS).
    

רזולוציה

מוודאים שהערך שצוין באלמנט הצאצא <JWKS> של האלמנט <PublicKey> הוא מחרוזת או משתנה זרימה תקינים בפורמט JWKS תקין (RFC 7517).

כדי לתקן את הדוגמה למדיניות Verify JWT, משנים את הערך של <JWKS> כמו שמוצג בהמשך:

    <VerifyJWT name="JWT-Verify-RS256">
        <DisplayName>JWT Verify RS256</DisplayName>
        <Algorithm>RS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <PublicKey>
        <JWKS>eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOiJiMDhmODZhZi0zNWRhLTQ4ZjItOGZhYi1jZWYzOTA0NjYwYmQifQ.-xN_h82PHVTCMA9vdoHrcZxH-x5mb11y1537t3rGzcM</JWKS>
        </PublicKey>
        <ExpiresIn>1h</ExpiresIn>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
    </VerifyJWT>

InvalidConfigurationForActionAndAlgorithm

הודעת השגיאה

פריסת ה-proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:

Error Saving Revision <var>revision_number</var>
Invalid configuration element for this action and algorithm Family: policy(<var>policy_name</var>) element(<var>element_name</var>) action(<var>action_name</var>) family(<var>family_name</var>).

הודעת שגיאה לדוגמה

Error Saving Revision
Invalid configuration element for this action and algorithm Family: policy(JWT-Verify-HS256) element(PublicKey) action(Verify) family(RSA).

דוגמה לצילום מסך

בממשק המשתמש של Apigee, תוצג תיבת דו-שיח עם שגיאה:

רכיב הגדרה לא תקין עבור הפעולה הזו והודעת שגיאה באלגוריתם.

מטרה

השגיאה הזו מתרחשת אם נעשה שימוש באלמנט <PublicKey> עם אלגוריתמים של HS Family, ונעשה שימוש באלמנט <SecretKey> עם אלגוריתמים של RSA Family. השגיאה תתרחש גם אם אחד מהתנאים האלה יתקיים.

לדוגמה, שימוש ברכיב <PublicKey> עם אלגוריתמים של HS Family מוביל לשגיאה הזו.

אבחון

  1. מזהים את השם של מדיניות האימות של JWT, את שם הרכיב ואת שם משפחת האלגוריתם מהודעת השגיאה. לדוגמה, בהודעת השגיאה הבאה, השם של מדיניות האימות של JWT הוא JWT-Verify-HS256, שם הרכיב הוא PublicKey ומשפחת האלגוריתמים היא RSA:

    Invalid configuration element for this action and algorithm Family: policy(JWT-Verify-HS256) element(PublicKey) action(Verify) family(RSA).
    
  2. מוודאים שהרכיב ומשפחת האלגוריתמים שבהם נעשה שימוש ב-XML של מדיניות אימות ה-JWT שנכשל, זהים לרכיב ולמשפחת האלגוריתמים שזוהו בהודעת השגיאה בשלב 1. לדוגמה, המדיניות הבאה מציינת את הרכיב כ-PublicKey ואת משפחת האלגוריתמים כ-HMAC, שזהה למה שמופיע בהודעת השגיאה

    <VerifyJWT name="JWT-Verify-HS256">
        <DisplayName>JWT Verify HS256</DisplayName>
        <Algorithm>HS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <Source>request.formparam.jwt</Source>
        <PublicKey>
            <Value ref="var-value"/>
        </PublicKey>
        <SecretKey>
            <Value ref="private.secretkey"/>
        </SecretKey>
            <ExpiresIn>1h</ExpiresIn>
            <Subject>monty-pythons-flying-circus</Subject>
            <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
            <Audience>fans</Audience>
        </VerifyJWT>
    
  3. אם הערך של רכיב <Algorithm> הוא HS256, אבל השתמשתם ב-<PublicKey>, זו הסיבה לשגיאה.

    בדוגמה של מדיניות אימות JWT שמוצגת למעלה, נעשה שימוש ברכיב <PublicKey> למרות ש-<Algorithm> מוגדר לאלגוריתם HS256, וכתוצאה מכך מוצגת השגיאה:

    Invalid configuration element for this action and algorithm Family: policy(JWT-Verify-HS256) element(PublicKey) action(Verify) family(RSA).
    

רזולוציה

חשוב לוודא שהרכיב <PublicKey> משמש רק עם אלגוריתמים של מודעות רספונסיביות לרשת החיפוש (RSA) בקטגוריה 'למשפחות', והרכיב <SecretKey> משמש רק עם אלגוריתמים של מודעות היברידיות לרשת החיפוש (HSA) בקטגוריה 'למשפחות'.

כדי לתקן את המדיניות לדוגמה Verify JWT, משתמשים ב-<SecretKey> מהמדיניות VerifyJWT שמשתמשת באלגוריתם HS256:

    <VerifyJWT name="JWT-Verify-HS256">
        <DisplayName>JWT Verify HS256</DisplayName>
        <Algorithm>HS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <Source>request.formparam.jwt</Source>
        <SecretKey>
        <Value ref="private.secretkey"/>
    </SecretKey>
        <ExpiresIn>1h</ExpiresIn>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
    </VerifyJWT>