您正在查看 Apigee 和 Apigee Hybrid 說明文件。
查看
Apigee Edge 說明文件。
InvalidNameForAdditionalClaim
錯誤訊息
透過 Apigee UI 或 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).
螢幕截圖範例
Apigee UI 中會顯示錯誤對話方塊:
原因
如果 <AdditionalClaims>
元素的子元素 <Claim>
中使用的聲明名稱為下列已註冊名稱之一,就會發生此錯誤:
「kid」、「iss」、「sub」、「aud」、「iat」、「exp」、「nbf」、「jti」
已註冊的聲明權利請參閱 RFC 7519。
舉例來說,在 <AdditionalClaims>
元素下使用聲明名稱 iss
會導致這項錯誤。
診斷
從錯誤訊息中找出「驗證 JWT」政策和要求名稱。舉例來說,在下列錯誤訊息中,驗證 JWT 政策的名稱為
JWT-Verify-RS256
,宣告名稱為iss
:Invalid name for additional claim : policy(JWT-Verify-RS256) claim(iss).
請確認在失敗的「驗證 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>
如果
<AdditionalClaims>
元素子元素<Claim>
中使用的聲明名稱為下列已註冊名稱之一:「kid」、「iss」、「sub」、「aud」、「iat」、「exp」、「nbf」、「jti」
那就是錯誤的原因。
在上述「驗證 JWT」政策範例中,
<Claim>
名稱在<AdditionalClaims>
元素下指定為iss
,導致發生以下錯誤:Invalid name for additional claim : policy(JWT-Verify-RS256) claim(iss).
解決方法
請勿在 <AdditionalClaims>
元素的子元素 <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
錯誤訊息
透過 Apigee UI 或 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).
螢幕截圖範例
Apigee UI 中會顯示錯誤對話方塊:
原因
VerifyJWT 政策 <AdditionalClaims>
元素子元素 <Claim>
中使用的宣稱類型並非下列任一類型:
string
(預設)、number
、boolean
或 map
舉例來說,如果在 <AdditionalClaims>
元素下使用宣告類型 integer
,就會導致錯誤。
診斷
從錯誤訊息中找出「驗證 JWT」政策的名稱、宣告名稱和類型。舉例來說,在以下錯誤訊息中,驗證 JWT 政策的名稱為
JWT-Verify-RS256
,宣告名稱為claim
,類型則為integer:
。Invalid type for additional claim : policy(JWT-Verify-RS256) claim(claim) type(integer).
請確認在失敗的「Verify 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>
如果
<AdditionalClaims>
元素子元素<Claim>
中使用的聲明類型不是下列任一類型:string
(預設)、number
、boolean
或map
那就是錯誤的原因。
在上述「驗證 JWT」政策範例中,
<Claim>
類型在<AdditionalClaims>
元素下方指定為integer
。由於integer
不是支援的類型,因此您會收到以下錯誤訊息:Invalid type for additional claim : policy(JWT-Verify-RS256) claim(claim) type(integer).
解決方法
請確認 <AdditionalClaims>
元素的子元素 <Claim>
中只使用支援的資料類型 string
(預設值)、number
、boolean
或 map
。
如要修正「驗證 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
錯誤訊息
透過 Apigee UI 或 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
螢幕截圖範例
Apigee UI 中會顯示錯誤對話方塊:
原因
如果在 <AdditionalClaims>
或 <AdditionalHeaders>
元素的子元素 <Claim>
中未指定聲明名稱,就會發生這個錯誤。
診斷
從錯誤訊息中找出「驗證 JWT」政策的名稱。舉例來說,在下列錯誤訊息中,驗證 JWT 政策的名稱為
JWT-Verify-RS256
:Error occurred while validation of bean JWT-Verify-RS256.xml. Reason: - Required attribute name is missing in Claim
請查看失敗的「Verify 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
錯誤訊息
透過 Apigee UI 或 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).
螢幕截圖範例
Apigee UI 中會顯示錯誤對話方塊:
原因
如果 <AdditionalHeaders>
元素的子元素 <Claim>
中使用的憑證名稱是下列標準 JWT 標頭之一,就會發生這個錯誤:
alg
或typ
舉例來說,如果在 <AdditionalHeaders>
元素下方使用聲明名稱 alg
,就會導致錯誤。
診斷
從錯誤訊息中找出「驗證 JWT」政策和標頭的名稱。舉例來說,在下列錯誤訊息中,驗證 JWT 政策的名稱為
JWT-Verify-RS256
,標頭名稱為alg
:Invalid name for additional header: policy(JWT-Verify-RS256) header(alg).
請確認在失敗的「驗證 JWT」政策 XML 中,
<AdditionalHeaders>
元素下子元素<Claim>
使用的標頭名稱,與步驟 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>
如果
<AdditionalClaims>
元素子項<Claim>
中使用的標頭名稱是下列標準 JWT 標頭之一:alg
或typ
那就是錯誤的原因。
在上述「驗證 JWT」政策範例中,
<Claim>
名稱在<AdditionalClaims>
元素下指定為alg
,導致發生以下錯誤:Invalid name for additional header: policy(JWT-Verify-RS256) header(alg).
解決方法
請勿在 <AdditionalHeaders>
元素的子項元素 <Claim>
中使用標準 JWT 標頭 alg
或 typ
。
如要修正驗證 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
錯誤訊息
透過 Apigee UI 或 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).
螢幕截圖範例
Apigee UI 中會顯示錯誤對話方塊:
原因
如果驗證 JWT 政策的 <AdditionalHeaders>
元素子元素 <Claim>
中使用的宣告類型不是下列類型之一,就會發生錯誤:
string
(預設)、number
、boolean
或 map
舉例來說,在 <AdditionalHeaders>
元素下使用聲明類型 integer
會導致錯誤。
診斷
從錯誤訊息中找出「驗證 JWT」政策的名稱、宣告名稱和類型。舉例來說,在下列錯誤訊息中,驗證 JWT 政策的名稱為
JWT-Verify-RS256
,宣告名稱為claim
,類型為integer
:Invalid type for additional header : policy(JWT-Verify-RS256) claim(claim) type(integer).
請確認在失敗的「Verify 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>
如果
<AdditionalHeaders>
元素子元素<Claim>
中使用的聲明類型不是下列任一類型:string
(預設)、number
、boolean
或map
那就是錯誤的原因。
在上述「驗證 JWT」政策範例中,
<AdditionalHeaders>
元素下方的<Claim>
類型已指定為integer
。由於integer
不是支援的類型,因此您會收到以下錯誤訊息:Invalid type for additional header : policy(JWT-Verify-RS256) claim(claim) type(integer).
解決方法
請確認 <AdditionalHeaders>
元素的子元素 <Claim>
中只使用支援的資料類型 string
、number
、boolean
或 map
。
如要修正「驗證 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
錯誤訊息
透過 Apigee UI 或 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).
螢幕截圖範例
Apigee UI 中會顯示錯誤對話方塊:
原因
如果 <AdditionalClaims>
或 <AdditionalHeaders>
元素的子元素 <Claim>
中陣列屬性的值未設為 true
或 false
,就會發生此錯誤。
舉例來說,如果在 <AdditionalClaims>
或 <AdditionalHeaders>
元素的子項 <Claim>
中,將陣列屬性的值設為 yes
,就會導致錯誤。
診斷
從錯誤訊息中找出「驗證 JWT」政策和要求名稱。舉例來說,在下列錯誤訊息中,驗證 JWT 政策的名稱為
JWT-Verify-RS256
,宣稱名稱為claim
:Invalid value for array attribute: policy(JWT-Verify-RS256) claim(claim).
請確認在失敗的「Verify JWT」政策 XML 中,
<AdditionalHeaders>
元素下子元素<Claim>
中使用的憑證名稱,與步驟 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>
如果
<AdditionalClaims>
元素子元素<Claim>
中的array
屬性值未設為true
或false
,則會導致錯誤。由於上述範例中
<AdditionalClaims>
元素的子項元素<Claim>
中的array
屬性設為yes
,因此會發生以下錯誤:Invalid value for array attribute: policy(JWT-Verify-RS256) claim(claim).
解決方法
請確認 <AdditionalClaims>
或 <AdditionalHeaders>
元素子項 <Claim>
中的陣列屬性值設為 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
錯誤訊息
透過 Apigee UI 或 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).
螢幕截圖範例
Apigee UI 中會顯示錯誤對話方塊:
原因
如果 <Algorithm>
元素中指定的值不是下列值之一,就會發生此錯誤:
HS256
、HS384
、HS512
、RS256
、RS384
、RS512
舉例來說,如果在 <Algorithm>
元素中將演算法值指定為 RS128
,就會導致這項錯誤。
診斷
從錯誤訊息中找出「驗證 JWT」政策和元素的名稱。舉例來說,在下列錯誤訊息中,驗證 JWT 政策的名稱為
JWT-Verify-RS256
,元素名稱為Algorithm
:Invalid Value for element : policy(JWT-Verify-RS256) element(Algorithm).
檢查失敗的「驗證 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>
檢查
<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
如要修正上述使用 <SecretKey>
元素的驗證 JWT 政策範例,請將 <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
錯誤訊息
透過 Apigee UI 或 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).
螢幕截圖範例
Apigee UI 中會顯示錯誤對話方塊:
原因
如果 <PublicKey>
元素「未」與驗證 JWT 政策中的 RSA 系列演算法搭配使用,就會發生這項錯誤。同樣地,如果 <SecretKey>
元素「未」與驗證 JWT 政策中的 HS 系列演算法搭配使用,也會發生錯誤。
舉例來說,如果未在 RSA Family 演算法中使用 <PublicKey>
元素,就會發生這項錯誤。
診斷
從錯誤訊息中找出「驗證 JWT」政策的名稱和缺少的元素名稱。舉例來說,在下列錯誤訊息中,驗證 JWT 政策的名稱為
JWT-Verify-RS256
,而缺少的元素名稱為PublicKey
:Missing configuration element : policy(JWT-Verify-RS256) element(PublicKey).
檢查失敗的「驗證 JWT」政策 XML,確認錯誤訊息中所指的元素是否遺漏。如果缺少該檔案,則表示這是錯誤的原因。
舉例來說,下列政策顯示
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).
解決方法
請確認使用 RSA Family 演算法的必要 <PublicKey>
元素,以及使用 HS Family 演算法的必要 <SecretKey>
元素。
如要修正上述使用 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
錯誤訊息
透過 Apigee UI 或 API 部署 API Proxy 時失敗,並顯示以下錯誤訊息:
Error Saving RevisionInvalid Key configuration : policy(policy_name).
錯誤訊息示例
Error Saving Revision 2
Invalid Key configuration : policy(JWT-Verify-RS256).
螢幕截圖範例
Apigee UI 中會顯示錯誤對話方塊:
原因
如果在驗證 JWT 政策的 <PublicKey>
或 <SecretKey>
元素中未定義子元素 <Value>
或強制子元素 <JWKS>
,就會發生這個錯誤。
診斷
從錯誤訊息中找出「驗證 JWT」政策的名稱。舉例來說,在下列錯誤訊息中,驗證 JWT 政策的名稱為
JWT-Verify-RS256
:Invalid Key configuration : policy(JWT-Verify-RS256).
檢查失敗的驗證 JWT 政策 XML,確認子元素
<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>
未在「驗證 JWT」政策的<PublicKey>
元素中定義,因此您會收到以下錯誤訊息: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
錯誤訊息
透過 Apigee UI 或 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).
螢幕截圖範例
Apigee UI 中會顯示錯誤對話方塊:
原因
如果 <PublicKey>
元素的子項元素 <Value>
或 <JWKS>
中的 ref 屬性未指定或為空白,就會發生這個錯誤。
舉例來說,如果 <PublicKey>
元素的子元素 <Value>
為空白,就會發生錯誤。
診斷
從錯誤訊息中找出空白的「Verify JWT」政策和元素名稱。舉例來說,在下列錯誤訊息中,驗證 JWT 政策的名稱為
JWT-Verify-RS256
,元素名稱為PublicKey/Value
:Empty Element for Key Configuration : policy(JWT-Verify-RS256) element(PublicKey/Value).
檢查失敗的「驗證 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
錯誤訊息
透過 Apigee UI 或 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).
螢幕截圖範例
Apigee UI 中會顯示錯誤對話方塊:
原因
如果在 VerifyJWT 政策的 <SecretKey>
元素中定義 <Id>
元素,就會發生這個錯誤。
舉例來說,如果元素 <Id>
是在 <SecretKey>
元素中定義,就會發生這個錯誤。
診斷
從錯誤訊息中找出「驗證 JWT」政策的名稱和無效元素名稱。舉例來說,在下列錯誤訊息中,驗證 JWT 政策的名稱為
JWT-Verify-RS256
,元素名稱為SecretKey/Id
:Invalid configuration element for verify : policy(JWT-Verify-HS256) element(SecretKey/Id)
檢查失敗的「驗證 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)
解決方法
請確認元素 <Id>
絕不會在驗證 JWT 政策的 <SecretKey>
元素中定義。
如要修正驗證 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
錯誤訊息
透過 Apigee UI 或 API 部署 API Proxy 時失敗,並顯示以下錯誤訊息:
Error Saving RevisionInvalid empty element : policy(policy_name) element(element_name).
錯誤訊息示例
Error Saving Revision 3
Invalid empty element : policy(JWT-Verify-HS256) element(Source).
螢幕截圖範例
Apigee UI 中會顯示錯誤對話方塊:
原因
如果「驗證 JWT」政策的 <Source>
元素為空白,就會發生這個錯誤。如果有此屬性,則必須使用流程變數名稱定義。
診斷
從錯誤訊息中找出「驗證 JWT」政策的名稱和空白元素名稱。舉例來說,在下列錯誤訊息中,驗證 JWT 政策的名稱為
JWT-Verify-RS256
,元素名稱為PublicKey/Value
:Invalid empty element : policy(JWT-Verify-HS256) element(Source).
檢查失敗的「驗證 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
錯誤訊息
透過 Apigee UI 或 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).
螢幕截圖範例
Apigee UI 中會顯示錯誤對話方塊:
原因
如果 <PublicKey>
元素的子元素 <JWKS>
中使用的值並非 RFC 7517 中指定的有效格式,就會發生這個錯誤。
舉例來說,如果您將 abc
做為 <PublicKey>
元素底下子項 <JWKS>
的值,就會導致這項錯誤。
診斷
從錯誤訊息中找出「驗證 JWT」政策的名稱,以及包含無效值的元素名稱。舉例來說,在下列錯誤訊息中,驗證 JWT 政策的名稱為
JWT-Verify-RS256
,元素則為PublicKey/JWKS
:Invalid Public Key Value in Configuration : policy(JWT-Verify-RS256) element(PublicKey/JWKS).
檢查失敗的「驗證 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
錯誤訊息
透過 Apigee UI 或 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).
螢幕截圖範例
Apigee UI 中會顯示錯誤對話方塊:
原因
如果 <PublicKey>
元素與 HS 系列演算法搭配使用,而 <SecretKey>
元素與 RSA 系列演算法搭配使用,就會發生這個錯誤。如果任一條件為真,也會發生錯誤。
舉例來說,使用 <PublicKey>
元素搭配 HS Family 演算法會導致這項錯誤。
診斷
從錯誤訊息中找出「驗證 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).
請確認在失敗的「驗證 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>
如果
<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 Family 演算法,<SecretKey>
元素只用於 HS Family 演算法。
如要修正驗證 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>