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

כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של Apigee X.
מידע

InvalidNameForAdditionalClaim

הודעת השגיאה

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

הודעת השגיאה

כשפורסים את ה-API של ה-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> במדיניות verificationJWT אינו אחד מהסוגים הבאים:

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

הודעת השגיאה

כשפורסים את ה-API של ה-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>. לדוגמה, במדיניות הבאה של אימות 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

הודעת השגיאה

כשפורסים את ה-API של ה-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

הודעת השגיאה

כשפורסים את ה-API של ה-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' של הרכיב <AdditionalHeaders>, הסוג <Claim> מוגדר בתור 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

הודעת השגיאה

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

הודעת השגיאה

כשפורסים את ה-API של ה-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.

<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

הודעת השגיאה

כשפורסים את ה-API של ה-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' במדיניות 'אימות 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, אבל רכיב החובה PublicKey חסר, ולכן השגיאה:

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

רזולוציה

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

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

<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

הודעת השגיאה

כשפורסים את ה-API של ה-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

הודעת השגיאה

כשפורסים את ה-API של ה-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

הודעת השגיאה

כשפורסים את ה-API של ה-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> של מדיניות ValidJWT.

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

הודעת השגיאה

כשפורסים את ה-API של ה-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

הודעת השגיאה

כשפורסים את ה-API של ה-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 בנושא אימות 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

הודעת השגיאה

כשפורסים את ה-API של ה-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' מוביל לשגיאה הזו.

אבחון

  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>, זו הסיבה לשגיאה.

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

כדי לתקן את הדוגמה של מדיניות אימות JWT, צריך להשתמש במדיניות <SecretKey> מהמדיניות ValidJWT שמתבססת על האלגוריתם 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>