אימות שגיאות בפריסה של מדיניות JWT

מוצג המסמך של Apigee Edge.
עוברים אל מסמכי תיעוד של Apigee X.
מידע

InvalidNameForAdditionalClaim

הודעת שגיאה

כשפורסים את שרת ה-proxy ל-API דרך ממשק המשתמש של Edge או Edge management API, מופיעה הודעת השגיאה הבאה:

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).

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

בממשק המשתמש של Edge תופיע תיבת דו-שיח עם השגיאה:

סיבה

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

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

התלונות הרשומות מפורטות ב-RFC7519.

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

אבחון

  1. מזהים את השם של המדיניות Verify 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 דרך ממשק המשתמש של Edge או Edge management API, מופיעה הודעת השגיאה הבאה:

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).

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

בממשק המשתמש של Edge תופיע תיבת דו-שיח עם השגיאה:

סיבה

סוג התלונה שנעשה בה שימוש ברכיב הצאצא <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>.

כדי לתקן את המדיניות לדוגמה של 'אימות 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 דרך ממשק המשתמש של Edge או Edge management API, מופיעה הודעת השגיאה הבאה:

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

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

בממשק המשתמש של Edge תופיע תיבת דו-שיח עם השגיאה:

סיבה

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

אבחון

  1. מזהים את השם של המדיניות לאימות 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>. לדוגמה, המדיניות הבאה של Verify 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 דרך ממשק המשתמש של Edge או Edge management API, מופיעה הודעת השגיאה הבאה:

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).

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

בממשק המשתמש של Edge תופיע תיבת דו-שיח עם השגיאה:

סיבה

השגיאה הזו מתקבלת אם שם ההצהרה שנמצא ברכיב הצאצא <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>.

כדי לתקן את המדיניות לדוגמה של אימות 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 דרך ממשק המשתמש של Edge או Edge management API, מופיעה הודעת השגיאה הבאה:

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).

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

בממשק המשתמש של Edge תופיע תיבת דו-שיח עם השגיאה:

סיבה

השגיאה הזו תתרחש אם סוג התלונה שנעשה בו שימוש ברכיב הצאצא <Claim> של הרכיב <AdditionalHeaders> במדיניות 'אימות 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).
    

רזולוציה

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

כדי לתקן את המדיניות לדוגמה של 'אימות 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 דרך ממשק המשתמש של Edge או Edge management API, מופיעה הודעת השגיאה הבאה:

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).

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

בממשק המשתמש של Edge תופיע תיבת דו-שיח עם השגיאה:

סיבה

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

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

אבחון

  1. מזהים את השם של המדיניות Verify 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.

כדי לתקן את המדיניות לדוגמה של 'אימות 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 דרך ממשק המשתמש של Edge או Edge management API, מופיעה הודעת השגיאה הבאה:

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).

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

בממשק המשתמש של Edge תופיע תיבת דו-שיח עם השגיאה:

סיבה

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

HS256, HS384, HS512, RS256, RS384, RS512

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

אבחון

  1. מזהים את שם המדיניות לאימות ה-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 דרך ממשק המשתמש של Edge או Edge management API, מופיעה הודעת השגיאה הבאה:

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

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

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

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

בממשק המשתמש של Edge תופיע תיבת דו-שיח עם השגיאה:

סיבה

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

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

אבחון

  1. מזהים את שם המדיניות לאימות 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>
    

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

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

רזולוציה

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

כדי לתקן את הדוגמה לדוגמה של מדיניות אימות 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 דרך ממשק המשתמש של Edge או Edge management API, מופיעה הודעת השגיאה הבאה:

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

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

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

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

בממשק המשתמש של Edge תופיע תיבת דו-שיח עם השגיאה:

סיבה

השגיאה הזו מתקבלת אם רכיב הצאצא <Value> או רכיב הצאצא <JWKS> לא מוגדרים ברכיבים <PublicKey> או <SecretKey> של המדיניות לאימות 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 דרך ממשק המשתמש של Edge או Edge management API, מופיעה הודעת השגיאה הבאה:

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).

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

בממשק המשתמש של Edge תופיע תיבת דו-שיח עם השגיאה:

סיבה

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

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

אבחון

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

    Empty Element for Key Configuration : policy(JWT-Verify-RS256) element(PublicKey/Value).
    
  2. בודקים את קובץ ה-XML של מדיניות ה-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> במדיניות אימות ה-JWT ריק, תתקבל השגיאה:

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

רזולוציה

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

כדי לתקן את המדיניות לדוגמה של 'אימות 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 דרך ממשק המשתמש של Edge או Edge management API, מופיעה הודעת השגיאה הבאה:

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).

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

בממשק המשתמש של Edge תופיע תיבת דו-שיח עם השגיאה:

סיבה

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

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

אבחון

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

    Invalid configuration element for verify : policy(JWT-Verify-HS256) element(SecretKey/Id)
    
  2. בודקים את קובץ ה-XML של מדיניות ה-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> של מדיניות אימות JWT, תקבלו את השגיאה:

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

רזולוציה

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

כדי לתקן את המדיניות לדוגמה לאימות 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 דרך ממשק המשתמש של Edge או Edge management API, מופיעה הודעת השגיאה הבאה:

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).

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

בממשק המשתמש של Edge תופיע תיבת דו-שיח עם השגיאה:

סיבה

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

אבחון

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

    Invalid empty element : policy(JWT-Verify-HS256) element(Source).
    
  2. בודקים את קובץ ה-XML של מדיניות ה-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> של מדיניות אימות 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 דרך ממשק המשתמש של Edge או Edge management API, מופיעה הודעת השגיאה הבאה:

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).

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

בממשק המשתמש של Edge תופיע תיבת דו-שיח עם השגיאה:

סיבה

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

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

אבחון

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

    Invalid Public Key Value in Configuration : policy(JWT-Verify-RS256) element(PublicKey/JWKS).
    
  2. בודקים את קובץ ה-XML של מדיניות ה-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).

כדי לתקן את המדיניות לדוגמה של אימות 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 דרך ממשק המשתמש של Edge או Edge management API, מופיעה הודעת השגיאה הבאה:

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).

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

בממשק המשתמש של Edge תופיע תיבת דו-שיח עם השגיאה:

סיבה

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

לדוגמה, שימוש ברכיב <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> נמצא בשימוש רק עם אלגוריתמים של HS Family.

כדי לתקן את המדיניות לדוגמה של אימות 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>