您正在查看 Apigee 和 Apigee Hybrid 文档。
查看 Apigee Edge 文档。
InvalidNameForAdditionalClaim
错误消息
通过 Apigee 界面或 API 部署 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).
示例屏幕截图
在 Apigee 界面中,您会看到一个有错误的对话框:
原因
如果 <AdditionalClaims>
元素的子元素 <Claim>
使用的声明名称是下列某个已注册名称,就会出现此错误:
“kid”“iss”“sub”“aud”“iat”“exp”“nbf”“jti”
RFC 7519 中指定了已注册声明。
例如,在 <AdditionalClaims>
元素下使用声明名称 iss
会导致此错误。
诊断
从错误消息中确定 Verify JWT 政策和声明名称。例如,在以下错误消息中,Verify JWT 政策的名称为
JWT-Verify-RS256
,声明名称为iss
:Invalid name for additional claim : policy(JWT-Verify-RS256) claim(iss).
验证失败的 Verify 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”
就会导致错误。
在上文所示的 Verify 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”。
如需更正示例 Verify 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 界面或 API 部署 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).
示例屏幕截图
在 Apigee 界面中,您会看到一个有错误的对话框:
原因
VerifyJWT 政策 <AdditionalClaims>
元素子元素 <Claim>
的类型不是以下类型之一:
string
(默认)、number
、boolean
或 map
例如,在 <AdditionalClaims>
元素下使用声明类型 integer
会导致错误。
诊断
从错误消息中确定 Verify JWT 政策的名称、声明名称和类型。例如,在以下错误消息中,Verify 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
就会导致错误。
在上方所示的 Verify JWT 政策示例中,
<Claim>
类型在<AdditionalClaims>
元素下被指定为integer
。由于integer
不是支持的类型,因此您会收到以下错误:Invalid type for additional claim : policy(JWT-Verify-RS256) claim(claim) type(integer).
解决方法
确保在 <AdditionalClaims>
元素的子元素 <Claim>
中仅使用支持的数据类型 string
(默认)、number
、boolean
或 map
。
如需更正示例 Verify JWT 政策,请将声明类型更改为 boolean
:
<VerifyJWT name="JWT-Verify-RS256">
<DisplayName>JWT Verify RS256</DisplayName>
<Algorithm>RS256</Algorithm>
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
<SecretKey>
<Value ref="private.secretkey"/>
<Id>1918290</Id>
</SecretKey>
<ExpiresIn>1h</ExpiresIn>
<Subject>monty-pythons-flying-circus</Subject>
<Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
<Audience>fans</Audience>
<Id/>
<AdditionalClaims>
<Claim name='claim' ref='reqclaim' type='boolean'/>
</AdditionalClaims>
</VerifyJWT>
MissingNameForAdditionalClaim
错误消息
通过 Apigee 界面或 API 部署 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
示例屏幕截图
在 Apigee 界面中,您会看到一个有错误的对话框:
原因
如果在 <AdditionalClaims>
或 <AdditionalHeaders>
元素的子元素 <Claim>
中未指定声明名称,就会出现此错误。
诊断
从错误消息中确定 Verify JWT 政策的名称。例如,在以下错误消息中,Verify 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>
中是否缺少声明名称。例如,以下 Verify JWT 政策不会指定<AdditionalClaims>
元素下的声明名称:<VerifyJWT name="JWT-Verify-RS256"> <DisplayName>JWT Verify RS256</DisplayName> <Algorithm>RS256</Algorithm> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <SecretKey> <Value ref="private.secretkey"/> <Id>1918290</Id> </SecretKey> <ExpiresIn>1h</ExpiresIn> <Subject>monty-pythons-flying-circus</Subject> <Issuer>urn://apigee-edge-JWT-policy-test</Issuer> <Audience>fans</Audience> <Id/> <AdditionalClaims> <Claim ref='reqclaim' type='boolean'/> </AdditionalClaims> </VerifyJWT>
由于没有在
<AdditionalClaims>
元素下指定<Claim>
名称,所以会出现以下错误:Error occurred while validation of bean JWT-Verify-RS256.xml. Reason: - Required attribute name is missing in Claim
解决方法
确保始终在 <AdditionalClaims>
或 <AdditionalHeaders>
元素的子元素 <Claim>
中指定声明名称。
如需更正示例 Verify 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 界面或 API 部署 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).
示例屏幕截图
在 Apigee 界面中,您会看到一个有错误的对话框:
原因
如果在 <AdditionalHeaders>
元素的子元素 <Claim>
中使用的声明名称是以下任一标准 JWT 标头,则会出现此错误:
alg
或 typ
例如,在 <AdditionalHeaders>
元素下使用声明名称 alg
将导致错误。
诊断
从错误消息中确定 Verify JWT 政策和标头名称。例如,在以下错误消息中,Verify JWT 政策的名称为
JWT-Verify-RS256
,标头名称为alg
:Invalid name for additional header: policy(JWT-Verify-RS256) header(alg).
验证失败的 Verify 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
就会导致错误。
在上文所示的 Verify JWT 政策示例中,
<Claim>
名称在<AdditionalClaims>
元素下指定为alg
,从而导致错误:Invalid name for additional header: policy(JWT-Verify-RS256) header(alg).
解决方法
请勿在 <AdditionalHeaders>
元素的子元素 <Claim>
中使用标准 JWT 标头 alg
或 typ
。
如需更正示例 Verify 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 界面或 API 部署 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).
示例屏幕截图
在 Apigee 界面中,您会看到一个有错误的对话框:
原因
如果 Verify JWT 政策 <AdditionalHeaders>
元素的子元素 <Claim>
中使用的声明类型不是以下任一类型,则会出现此错误:
string
(默认)、number
、boolean
或 map
例如,在 <AdditionalHeaders>
元素下使用声明类型 integer
将导致错误。
诊断
从错误消息中确定 Verify JWT 政策的名称、声明名称和类型。例如,在以下错误消息中,Verify 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
就会导致错误。
在上述示例 Verify JWT 政策中,
<AdditionalHeaders>
元素下的<Claim>
类型被指定为integer
。由于integer
不是支持的类型,因此您会收到以下错误:Invalid type for additional header : policy(JWT-Verify-RS256) claim(claim) type(integer).
解决方法
确保在 <AdditionalHeaders>
元素的子元素 <Claim>
中仅使用支持的数据类型 string
、number
、boolean
或 map
。
如需更正示例 Verify JWT 政策,请将声明类型更改为 boolean
:
<VerifyJWT name="JWT-Verify-RS256">
<DisplayName>JWT Verify RS256</DisplayName>
<Algorithm>RS256</Algorithm>
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
<SecretKey>
<Value ref="private.secretkey"/>
<Id>1918290</Id>
</SecretKey>
<ExpiresIn>1h</ExpiresIn>
<Subject>monty-pythons-flying-circus</Subject>
<Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
<Audience>fans</Audience>
<Id/>
<AdditionalHeaders>
<Claim name='claim' ref='reqclaim' type='boolean'/>
</AdditionalHeaders>
</VerifyJWT>
InvalidValueOfArrayAttribute
错误消息
通过 Apigee 界面或 API 部署 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).
示例屏幕截图
在 Apigee 界面中,您会看到一个有错误的对话框:
原因
如果 <AdditionalClaims>
或 <AdditionalHeaders>
元素的子元素 <Claim>
中的数组属性值未设置为 true
或 false
,则会出现此错误。
例如,在 <AdditionalClaims>
或 <AdditionalHeaders>
元素的子元素 <Claim>
中将数组属性值设置为 yes
会导致错误。
诊断
从错误消息中确定 Verify JWT 政策和声明名称。例如,在以下错误消息中,Verify 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
。
如需更正上述示例 Verify JWT 政策,请将数组属性值更改为 true
:
<VerifyJWT name="JWT-Verify-RS256">
<DisplayName>JWT Verify RS256</DisplayName>
<Algorithm>RS256</Algorithm>
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
<SecretKey>
<Value ref="private.secretkey"/>
<Id>1918290</Id>
</SecretKey>
<ExpiresIn>1h</ExpiresIn>
<Subject>monty-pythons-flying-circus</Subject>
<Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
<Audience>fans</Audience>
<Id/>
<AdditionalHeaders>
<Claim name='claim' ref='reqclaim' type='string' array='true'/>
</AdditionalHeaders>
</VerifyJWT>
InvalidValueForElement
错误消息
通过 Apigee 界面或 API 部署 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).
示例屏幕截图
在 Apigee 界面中,您会看到一个有错误的对话框:
原因
如果 <Algorithm>
元素中指定的值不是以下值之一,就会出现此错误:
HS256
、HS384
、HS512
、RS256
、RS384
、RS512
例如,在 <Algorithm>
元素中将算法值指定为 RS128
会导致此错误。
诊断
从错误消息中确定 Verify JWT 政策和元素名称。例如,在以下错误消息中,Verify JWT 政策的名称为
JWT-Verify-RS256
,元素名称为Algorithm
:Invalid Value for element : policy(JWT-Verify-RS256) element(Algorithm).
检查失败的 Verify JWT 政策 XML 并检查
<Algorithm>
元素指定的值。下面是一个 Verify 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
就会导致错误。
在上述的示例 Verify JWT 政策中,
<Algorithm>
名称被指定为HS128
。由于不支持此算法,则会出现此错误:Invalid Value for element : policy(JWT-Verify-RS256) element(Algorithm).
解决方法
确保在 <Algorithm>
元素中指定的值是受支持的值之一:
HS256
、HS384
、HS512
、RS256
、RS384
、RS512
如需更正上面显示的示例 Verify 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
错误消息
通过 Apigee 界面或 API 部署 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).
示例屏幕截图
在 Apigee 界面中,您会看到一个有错误的对话框:
原因
当 <PublicKey>
元素在 Verify JWT 政策中未与 RSA 系列算法配合使用时,会发生此错误。同样,如果 <SecretKey>
元素在 Verify JWT 政策中未与 HS 系列算法配合使用时,则也会发生此错误。
例如,如果不将 <PublicKey>
元素与 RSA 系列算法配合使用,则会导致此错误。
诊断
从错误消息中确定 Verify JWT 政策和缺失元素名称。例如,在以下错误消息中,Verify JWT 政策的名称为
JWT-Verify-RS256
,缺失元素名称为PublicKey
:Missing configuration element : policy(JWT-Verify-RS256) element(PublicKey).
检查失败的 Verify 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>
示例 Verify JWT 政策使用了 HS 系列算法,但缺少必需的元素
PublicKey
,从而导致以下错误:Missing configuration element : policy(JWT-Verify-RS256) element(PublicKey).
解决方法
确保将必需的 <PublicKey>
元素与 RSA 系列算法配合使用,并且必需的 <SecretKey>
元素与 HS 系列算法配合使用。
如需更正上述示例 Verify JWT 政策(使用 RS256 算法),请将 <PublicKey>
元素添加到 VerifyJWT 政策:
<VerifyJWT name="JWT-Verify-RS256">
<DisplayName>JWT Verify RS256</DisplayName
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
<Algorithm>RS256</Algorithm>
<PublicKey>
<Value ref="public.publickey"/>
</PublicKey>
<ExpiresIn>1h</ExpiresIn>
<Subject>monty-pythons-flying-circus</Subject>
<Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
<Audience>fans</Audience>
<Id/>
<AdditionalHeaders>
<Claim name='claim' ref='reqclaim' type='string' array='true'/>
</AdditionalHeaders>
</VerifyJWT>
InvalidKeyConfiguration
错误消息
通过 Apigee 界面或 API 部署 API 代理失败并显示以下错误消息:
Error Saving RevisionInvalid Key configuration : policy(policy_name).
错误消息示例
Error Saving Revision 2
Invalid Key configuration : policy(JWT-Verify-RS256).
示例屏幕截图
在 Apigee 界面中,您会看到一个有错误的对话框:
原因
如果 Verify JWT 政策的 <PublicKey>
或 <SecretKey>
元素中未定义子元素 <Value>
或必需的子元素 <JWKS>
,就会出现此错误。
诊断
从错误消息中确定 Verify JWT 政策的名称。例如,在以下错误消息中,Verify JWT 政策的名称为
JWT-Verify-RS256
:Invalid Key configuration : policy(JWT-Verify-RS256).
检查失败的 Verify 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).
解决方法
确保 Verify JWT 政策的 <PublicKey>
元素中始终定义了子元素 <Value>
或 <JWKS>
。
如需更正示例 Verify 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 界面或 API 部署 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).
示例屏幕截图
在 Apigee 界面中,您会看到一个有错误的对话框:
原因
如果 <PublicKey>
元素的子元素 <Value>
或 <JWKS>
中的 ref 属性未指定或为空,则会出现此错误。
例如,如果 <PublicKey>
元素的子元素 <Value>
为空,则会出现此错误。
诊断
从错误消息中确定 Verify JWT 政策名称和空元素名称。例如,在以下错误消息中,Verify JWT 政策的名称为
JWT-Verify-RS256
,元素名称为PublicKey/Value
:Empty Element for Key Configuration : policy(JWT-Verify-RS256) element(PublicKey/Value).
检查失败的 Verify 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>
由于 Verify JWT 政策的
<PublicKey>
元素的子元素<Value>
为空,则会出现此错误:Empty Element for Key Configuration : policy(JWT-Verify-RS256) element(PublicKey/Value).
解决方法
确保始终指定 <PublicKey>
元素的子元素 <Value>
或 <JWKS>
中的 ref 属性。
如需更正示例 Verify 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 界面或 API 部署 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).
示例屏幕截图
在 Apigee 界面中,您会看到一个有错误的对话框:
原因
如果在 VerifyJWT 政策的 <SecretKey>
元素中定义了元素 <Id>
,则会出现此错误。
例如,如果 <SecretKey>
元素中定义了元素 <Id>
,则会出现此错误。
诊断
从错误消息中确定 Verify JWT 政策名称和无效元素名称。例如,在以下错误消息中,Verify JWT 政策的名称是
JWT-Verify-RS256
,元素名称为SecretKey/Id
:Invalid configuration element for verify : policy(JWT-Verify-HS256) element(SecretKey/Id)
检查失败的 Verify 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>
在 Verify JWT 政策的<SecretKey>
元素中定义,则会出现此错误:Invalid configuration element for verify : policy(JWT-Verify-HS256) element(SecretKey/Id)
解决方法
确保元素 <Id>
从不在 Verify JWT 政策的 <SecretKey>
元素中定义。
如需更正示例 Verify 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 界面或 API 部署 API 代理失败并显示以下错误消息:
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 界面中,您会看到一个有错误的对话框:
原因
如果 Verify JWT 政策的 <Source>
元素为空,则会出现此错误。如果存在,则必须使用流变量名称定义它。
诊断
从错误消息中确定 Verify JWT 政策名称和空元素名称。例如,在以下错误消息中,Verify JWT 政策的名称是
JWT-Verify-RS256
,元素名称为PublicKey/Value
:Invalid empty element : policy(JWT-Verify-HS256) element(Source).
检查失败的 Verify 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>
由于 Verify JWT 政策的
<Source>
元素为空,则会出现此错误:Invalid empty element : policy(JWT-Verify-HS256) element(Source).
解决方法
如果 Verify JWT 验证政策的 <Source>
元素存在,请确保它指定了流变量。
如需更正示例 Verify 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 界面或 API 部署 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).
示例屏幕截图
在 Apigee 界面中,您会看到一个有错误的对话框:
原因
如果 <PublicKey>
元素的子元素 <JWKS>
中使用的值未采用 RFC 7517 中指定的有效格式,则会出现此错误。
例如,在 <PublicKey>
元素下使用 abc
作为子元素 <JWKS>
的值会导致此错误。
诊断
从错误消息中确定 Verify JWT 政策名称和包含无效值的元素名称。例如,在以下错误消息中,Verify JWT 政策的名称是
JWT-Verify-RS256
,元素为PublicKey/JWKS
:Invalid Public Key Value in Configuration : policy(JWT-Verify-RS256) element(PublicKey/JWKS).
检查失败的 Verify 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) 的有效字符串或流变量。
如需更正示例 Verify JWT 政策,请更改 <JWKS>
的值,如下所示:
<VerifyJWT name="JWT-Verify-RS256">
<DisplayName>JWT Verify RS256</DisplayName>
<Algorithm>RS256</Algorithm>
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
<PublicKey>
<JWKS>eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOiJiMDhmODZhZi0zNWRhLTQ4ZjItOGZhYi1jZWYzOTA0NjYwYmQifQ.-xN_h82PHVTCMA9vdoHrcZxH-x5mb11y1537t3rGzcM</JWKS>
</PublicKey>
<ExpiresIn>1h</ExpiresIn>
<Subject>monty-pythons-flying-circus</Subject>
<Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
<Audience>fans</Audience>
<Id/>
</VerifyJWT>
InvalidConfigurationForActionAndAlgorithm
错误消息
通过 Apigee 界面或 API 部署 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).
示例屏幕截图
在 Apigee 界面中,您会看到一个有错误的对话框:
原因
如果将 <PublicKey>
元素与 HS 系列算法搭配使用,而 <SecretKey>
元素与 RSA 系列算法搭配使用,则会发生此错误。如果这些条件中的任意一个为 true,也会出现此错误。
例如,如果将 <PublicKey>
元素与 HS 系列算法搭配使用,就会导致此错误。
诊断
从错误消息中确定 Verify JWT 政策名称、元素名称和算法系列名称。例如,在以下错误消息中,验证 Verify 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).
验证失败的 Verify 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>
,则会导致错误。在上文所示的示例 Verify 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 系列算法配合使用。
如需更正示例 Verify 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>