驗證 JWT 政策部署錯誤

您正在查看 Apigee Edge 說明文件。
查看 Apigee X 說明文件
資訊

InvalidNameForAdditionalClaim

錯誤訊息

無法透過 Edge UI 或 Edge Management API 部署 API Proxy,並顯示以下錯誤訊息:

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 UI 中,您會看到出現錯誤的對話方塊:

原因

如果 <AdditionalClaims> 元素的子元素 <Claim> 使用的聲明名稱是下列其中一個註冊名稱,就會發生這個錯誤:

「kid」、「iss」、「sub」、「aud」、「iat」、「exp」、「nbf」、「jti」

已註冊的憑證附加資訊請參閱 RFC7519 文件。

舉例來說,如果在 <AdditionalClaims> 元素下方使用聲明名稱 iss,就會發生這個錯誤。

診斷

  1. 識別驗證 JWT 政策的名稱,以及錯誤訊息中的要求名稱。例如,在下列錯誤訊息中,驗證 JWT 政策的名稱為 JWT-Verify-RS256,憑證附加資訊名稱為 iss

    Invalid name for additional claim : policy(JWT-Verify-RS256) claim(iss).
    
  2. 驗證失敗的驗證 JWT 政策 XML 中 <AdditionalClaims> 元素下使用的要求名稱,是否與步驟 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. 如果 <AdditionalClaims> 元素的子元素 <Claim> 中使用的聲明名稱是下列其中一個註冊名稱:

    「kid」、「iss」、「sub」、「aud」、「iat」、「exp」、「nbf」、「jti」

    才是發生錯誤的原因

    在上述驗證 JWT 政策範例中,在 <AdditionalClaims> 元素下將 <Claim> 名稱指定為 iss,因此就會發生錯誤:

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

解析度

請勿在 <AdditionalClaims> 元素 <Claim> 的子元素 <Claim> 中使用任何註冊名稱「kid」、「iss」、「sub」、「aud」、「iat」、「exp」、「nbf」或「jti」。

如要修正驗證 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

錯誤訊息

無法透過 Edge UI 或 Edge Management API 部署 API Proxy,並顯示以下錯誤訊息:

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 UI 中,您會看到出現錯誤的對話方塊:

原因

在 VerifyJWT 政策的 <AdditionalClaims> 元素 <Claim> 子元素中,使用的版權聲明類型不屬於以下類型:

string (預設)、numberbooleanmap

舉例來說,如果在 <AdditionalClaims> 元素下方使用聲明類型 integer,就會導致錯誤。

診斷

  1. 識別驗證 JWT 政策的名稱、要求名稱和錯誤訊息的類型。舉例來說,在下列錯誤訊息中,驗證 JWT 政策的名稱為 JWT-Verify-RS256,憑證要求名稱為 claim,類型為 integer:

    Invalid type for additional claim : policy(JWT-Verify-RS256) claim(claim) type(integer).
    
  2. 驗證失敗的驗證 JWT 政策 XML 中,<AdditionalClaims> 元素下使用的服務名稱及類型,是否與步驟 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. 如果 <AdditionalClaims> 元素的子元素 <Claim> 中使用的聲明類型不屬於以下任何類型:

    string (預設)、numberbooleanmap

    才是發生錯誤的原因

    在上述驗證 JWT 政策範例中,<Claim> 類型在 <AdditionalClaims> 元素下方指定為 integer。由於 integer 不是支援的類型,所以您會收到錯誤訊息:

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

解析度

確保在 <AdditionalClaims> 元素的子項元素 <Claim> 中,只能使用支援的資料類型 string (預設)、numberbooleanmap

如要修正驗證 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

錯誤訊息

無法透過 Edge UI 或 Edge Management API 部署 API Proxy,並顯示以下錯誤訊息:

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 UI 中,您會看到出現錯誤的對話方塊:

原因

如果在 <AdditionalClaims><AdditionalHeaders> 元素的子元素 <Claim> 中未指定聲明名稱,就會發生這個錯誤。

診斷

  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. 檢查未通過的 JWT 政策 XML 驗證,並確認 <AdditionalClaims><AdditionalHeaders> 元素下方的子元素 <Claims> 中缺少聲明名稱。舉例來說,以下驗證 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>
    

    由於您並未在 <AdditionalClaims> 元素下方指定 <Claim> 名稱,您會收到錯誤訊息:

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

解析度

確保聲明名稱一律在 <AdditionalClaims><AdditionalHeaders> 元素的子元素 <Claim> 中指定。

如要修正「驗證 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

錯誤訊息

無法透過 Edge UI 或 Edge Management API 部署 API Proxy,並顯示以下錯誤訊息:

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 UI 中,您會看到出現錯誤的對話方塊:

原因

如果 <AdditionalHeaders> 元素的子元素 <Claim> 使用了下列任一標準 JWT 標頭,就會發生這個錯誤:

algtyp

舉例來說,如果在 <AdditionalHeaders> 元素下方使用聲明名稱 alg,就會導致錯誤。

診斷

  1. 識別驗證 JWT 政策的名稱和錯誤訊息中的標頭名稱。例如,在下列錯誤訊息中,驗證 JWT 政策的名稱為 JWT-Verify-RS256,標頭名稱則為 alg

    Invalid name for additional header: policy(JWT-Verify-RS256) header(alg).
    
  2. 確認您在未通過的驗證 JWT 政策 XML 中,於子元素 <Claim> 中使用的標頭名稱,與步驟 1 錯誤訊息中指出的標頭名稱相符。<AdditionalHeaders>舉例來說,下列政策會將標頭指定為 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. 如果 <AdditionalClaims> 元素的 <Claim> 子元素使用標頭名稱是下列任一項標準 JWT 標頭:

    algtyp

    才是發生錯誤的原因

    在上述驗證 JWT 政策範例中,在 <AdditionalClaims> 元素下將 <Claim> 名稱指定為 alg,因此就會發生錯誤:

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

解析度

請勿在 <AdditionalHeaders> 元素的子元素 <Claim> 中使用標準 JWT 標頭 algtyp

如要修正驗證 JWT 政策範例,請在 <AdditionalHeaders> 元素的子元素 <Claim> 中使用名稱 x5c

<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

錯誤訊息

無法透過 Edge UI 或 Edge Management API 部署 API Proxy,並顯示以下錯誤訊息:

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 UI 中,您會看到出現錯誤的對話方塊:

原因

如果驗證 JWT 政策的 <AdditionalHeaders> 元素 <Claim> 子元素使用了以下憑證類型,就會發生這個錯誤:

string (預設)、numberbooleanmap

舉例來說,如果在 <AdditionalHeaders> 元素下方使用聲明類型 integer,就會導致錯誤。

診斷

  1. 識別驗證 JWT 政策的名稱、憑證附加資訊名稱和錯誤訊息的類型。例如,在下列錯誤訊息中,驗證 JWT 政策的名稱為 JWT-Verify-RS256,憑證要求名稱為 claim,類型為 integer

    Invalid type for additional header : policy(JWT-Verify-RS256) claim(claim) type(integer).
    
  2. 驗證失敗的驗證 JWT 政策 XML 中,<AdditionalClaims> 元素下使用的服務名稱及類型,是否與步驟 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. 如果 <AdditionalHeaders> 元素的子元素 <Claim> 中使用的聲明類型不屬於以下任何類型:

    string (預設)、numberbooleanmap

    才是發生錯誤的原因

    在上述驗證 JWT 政策範例中,<AdditionalHeaders> 元素下方的 <Claim> 類型會指定為 integer。由於 integer 不是支援的類型,所以您會收到錯誤訊息:

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

解析度

確保在 <AdditionalHeaders> 元素的子項元素 <Claim> 中,只能使用支援的資料類型 stringnumberbooleanmap

如要修正驗證 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

錯誤訊息

無法透過 Edge UI 或 Edge Management API 部署 API Proxy,並顯示以下錯誤訊息:

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 UI 中,您會看到出現錯誤的對話方塊:

原因

如果 <AdditionalClaims><AdditionalHeaders> 元素子項元素 <Claim> 中的陣列屬性值未設為 truefalse,就會發生這個錯誤。

舉例來說,如果在 <AdditionalClaims><AdditionalHeaders> 元素的子元素 <Claim> 中將陣列屬性的值設為 yes,就會導致錯誤。

診斷

  1. 識別驗證 JWT 政策的名稱,以及錯誤訊息中的要求名稱。例如,在下列錯誤訊息中,驗證 JWT 政策的名稱為 JWT-Verify-RS256,憑證附加資訊名稱為 claim

    Invalid value for array attribute: policy(JWT-Verify-RS256) claim(claim).
    
  2. 確認您在驗證 JWT 政策 XML 中,於子元素 <Claim> 中使用的憑證聲明名稱與步驟 1 錯誤訊息中指出的要求名稱相符。<AdditionalHeaders>舉例來說,下列政策會將聲明名稱指定為 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. 如果 <AdditionalClaims> 元素子項元素 <Claim>array 屬性值未設為 truefalse,就會導致錯誤。

    由於上述範例中的 <AdditionalClaims> 元素子元素 <Claim> 中的 array 屬性設為 yes,因此您會收到錯誤訊息:

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

解析度

確認 <AdditionalClaims><AdditionalHeaders> 元素子項元素 <Claim> 中的陣列屬性值已設為 truefalse

如要修正上述「驗證 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

錯誤訊息

無法透過 Edge UI 或 Edge Management API 部署 API Proxy,並顯示以下錯誤訊息:

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 UI 中,您會看到出現錯誤的對話方塊:

原因

如果 <Algorithm> 元素中指定的值不是下列任一值,就會發生這個錯誤:

HS256HS384HS512RS256RS384RS512

舉例來說,如果在 <Algorithm> 元素中將演算法值指定為 RS128,就會發生這個錯誤。

診斷

  1. 識別驗證 JWT 政策的名稱以及錯誤訊息中的元素名稱。例如,在下列錯誤訊息中,驗證 JWT 政策的名稱為 JWT-Verify-RS256,元素名稱則為 Algorithm

    Invalid Value for element : policy(JWT-Verify-RS256) element(Algorithm).
    
  2. 檢查未通過的 JWT 政策 XML 驗證,並檢查 <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> 元素中指定的值。如果不是下列任一值:

    HS256HS384HS512RS256RS384RS512

    才是發生錯誤的原因

    在上述驗證 JWT 政策範例中,系統會將 <Algorithm> 名稱指定為 HS128。這不是支援的演算法,因此會顯示錯誤訊息:

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

解析度

確認 <Algorithm> 元素中指定的值是其中一個支援的值:

HS256HS384HS512RS256RS384RS512

如要修正上方顯示的「驗證 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

錯誤訊息

無法透過 Edge UI 或 Edge Management API 部署 API Proxy,並顯示以下錯誤訊息:

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 UI 中,您會看到出現錯誤的對話方塊:

原因

如果驗證 JWT 政策中的 <PublicKey> 元素「並未」與 RSA 系列演算法搭配使用,就會發生這個錯誤。同樣地,如果驗證 JWT 政策中的 <SecretKey> 元素「沒有」與 HS 系列演算法搭配使用,就會發生錯誤。

舉例來說,如果沒有將 <PublicKey> 元素與 RSA Family 演算法搭配使用,就會發生這個錯誤。

診斷

  1. 指明驗證 JWT 政策的名稱,以及錯誤訊息中缺少的元素名稱。例如,在下列錯誤訊息中,驗證 JWT 政策的名稱為 JWT-Verify-RS256,而缺少的元素名稱是 PublicKey

    Missing configuration element : policy(JWT-Verify-RS256) element(PublicKey).
    
  2. 檢查未通過的 JWT 政策 XML 驗證,確認錯誤訊息中指出的元素是否缺少。若缺少的話,就是導致錯誤的原因。

    舉例來說,以下政策顯示缺少 PublicKey,而使用的 AlgorithmRS256

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

    以下範例採用 HS 系列演算法,但缺少必要元素 PublicKey,因此導致錯誤:

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

解析度

確認必要的 <PublicKey> 元素與 RSA 家庭演算法搭配使用,且必要的 <SecretKey> 元素與 HS 系列演算法搭配使用。

如要修正上述使用 RS256 演算法的「驗證 JWT」政策範例,請將 <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

錯誤訊息

無法透過 Edge UI 或 Edge Management API 部署 API Proxy,並顯示以下錯誤訊息:

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

錯誤訊息示例

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

螢幕截圖範例

在 Edge UI 中,您會看到出現錯誤的對話方塊:

原因

如果驗證 JWT 政策的 <PublicKey><SecretKey> 元素中並未定義子元素 <Value> 或必要子元素 <JWKS>,就會發生這個錯誤。

診斷

  1. 找出錯誤訊息中「驗證 JWT」政策的名稱。例如,在下列錯誤訊息中,驗證 JWT 政策的名稱為 JWT-Verify-RS256

    Invalid Key configuration : policy(JWT-Verify-RS256).
    
    
  2. 檢查未通過的 JWT 政策 XML 驗證,並確認 <PublicKey><SecretKey> 元素中未定義子元素 <Value> 或子元素 <JWKS>。如未定義子元素,就是導致錯誤的原因。

    舉例來說,以下政策顯示 <PublicKey> 元素中並未定義子元素 <Value><JWKS>

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

    由於 Verify JWT 政策的 <PublicKey> 元素並未定義子元素 <Value><JWKS>,因此您會收到錯誤訊息:

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

解析度

確保驗證 JWT 政策的 <PublicKey> 元素中一律定義了子元素 <Value><JWKS>

如要修正驗證 JWT 政策的範例,請在 <PublicKey> 元素下方定義子元素 <Value><JWKS>,如下所示:

<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

錯誤訊息

無法透過 Edge UI 或 Edge Management API 部署 API Proxy,並顯示以下錯誤訊息:

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 UI 中,您會看到出現錯誤的對話方塊:

原因

如未指定 <PublicKey> 元素中子項元素 <Value><JWKS> 的 ref 屬性,就會發生這個錯誤。

舉例來說,如果 <PublicKey> 元素的子元素 <Value> 為空白,就會發生錯誤。

診斷

  1. 找出驗證 JWT 政策的名稱,以及錯誤訊息中空白的元素名稱。例如,在下列錯誤訊息中,驗證 JWT 政策的名稱為 JWT-Verify-RS256,元素名稱則為 PublicKey/Value

    Empty Element for Key Configuration : policy(JWT-Verify-RS256) element(PublicKey/Value).
    
  2. 檢查未通過的 JWT 政策 XML 驗證,並確認步驟 1 中找出的元素為空白。若空無一物,就是發生錯誤的原因。

    舉例來說,以下政策顯示 <PublicKey> 元素的子元素 <Value> 為空白:

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

    由於驗證 JWT 政策中 <PublicKey> 元素的子元素 <Value> 為空白,因此您會收到錯誤訊息:

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

解析度

確保一律指定 <PublicKey> 元素 <Value><JWKS> 子項元素中的 ref 屬性。

如要修正驗證 JWT 政策範例,請在 <PublicKey> 元素的子元素 <Value> 中使用資料流變數 public.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

錯誤訊息

無法透過 Edge UI 或 Edge Management API 部署 API Proxy,並顯示以下錯誤訊息:

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 UI 中,您會看到出現錯誤的對話方塊:

原因

如果在 VerifyJWT 政策的 <SecretKey> 元素中定義了 <Id> 元素,就會發生這個錯誤。

舉例來說,如果在 <SecretKey> 元素中定義了 <Id> 元素,就會發生這個錯誤。

診斷

  1. 識別驗證 JWT 政策的名稱和錯誤訊息中的無效元素名稱。例如,在下列錯誤訊息中,驗證 JWT 政策的名稱為 JWT-Verify-RS256,元素名稱為 SecretKey/Id

    Invalid configuration element for verify : policy(JWT-Verify-HS256) element(SecretKey/Id)
    
  2. 檢查失敗的 JWT 政策 XML 檔案,確認步驟 1 中識別的無效元素已定義。如果已定義定義,就就是錯誤的原因。

    舉例來說,下列政策顯示已定義 <SecretKey> 元素的子元素 <Id>

    <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> 元素是在驗證 JWT 政策的 <SecretKey> 元素中定義,因此您會收到錯誤訊息:

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

解析度

確保未在驗證 JWT 政策的 <SecretKey> 元素中定義 <Id> 元素。

如要修正驗證 JWT 政策的範例,請從 <SecretKey> 元素中移除子元素 <Id>

<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

錯誤訊息

無法透過 Edge UI 或 Edge Management API 部署 API Proxy,並顯示以下錯誤訊息:

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 UI 中,您會看到出現錯誤的對話方塊:

原因

如果驗證 JWT 政策的 <Source> 元素為空白,就會發生這個錯誤。如果有,則必須以 Edge 流程變數名稱定義。

診斷

  1. 識別驗證 JWT 政策的名稱和錯誤訊息中的空白元素名稱。例如,在下列錯誤訊息中,驗證 JWT 政策的名稱為 JWT-Verify-RS256,元素名稱為 PublicKey/Value

    Invalid empty element : policy(JWT-Verify-HS256) element(Source).
    
  2. 檢查未通過的 JWT 政策 XML 驗證,並確認步驟 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>
    

    由於驗證 JWT 政策的 <Source> 元素為空白,因此您會收到錯誤訊息:

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

解析度

如有驗證 JWT 政策的 <Source> 元素,請確定該元素指定了資料流變數。

如要修正驗證 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

錯誤訊息

無法透過 Edge UI 或 Edge Management API 部署 API Proxy,並顯示以下錯誤訊息:

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 UI 中,您會看到出現錯誤的對話方塊:

原因

如果 <PublicKey> 元素的子元素 <JWKS> 使用的值未採用 RFC 7517 中指定的有效格式,就會發生這個錯誤。

例如,如果在 <PublicKey> 元素下方使用 abc 做為子元素 <JWKS> 的值,即會導致這個錯誤。

診斷

  1. 識別驗證 JWT 政策的名稱,以及含有錯誤訊息中無效值的元素名稱。舉例來說,在下列錯誤訊息中,驗證 JWT 政策的名稱為 JWT-Verify-RS256,元素為 PublicKey/JWKS

    Invalid Public Key Value in Configuration : policy(JWT-Verify-RS256) element(PublicKey/JWKS).
    
  2. 檢查未通過的 JWT 政策 XML 驗證,並確認步驟 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>
    

    由於 <PublicKey> 元素中 <JWKS> 子元素的值不符合 RFC 7517 規定,您會收到錯誤訊息:

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

解析度

確認 <PublicKey> 元素的子元素 <JWKS> 中指定的值是採用有效 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

錯誤訊息

無法透過 Edge UI 或 Edge Management API 部署 API Proxy,並顯示以下錯誤訊息:

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 UI 中,您會看到出現錯誤的對話方塊:

原因

如果將 <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. 驗證失敗的驗證 JWT 政策 XML 中使用的元素和演算法系列,確認與步驟 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 政策」範例中,雖然 <Algorithm> 已設為 HS256 系列演算法,但仍會使用 <PublicKey> 元素,因此導致發生錯誤:

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

解析度

確認 <PublicKey> 元素僅與 RSA 家庭演算法搭配使用,且 <SecretKey> 元素僅與 HS 系列演算法搭配使用。

如要修正驗證 JWT 政策範例,請使用採用 HS256 演算法的 VerifyJWT 政策中的 <SecretKey>

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