<ph type="x-smartling-placeholder"></ph>
您正在查看 Apigee Edge 文档。
转到
Apigee X 文档。 信息
InvalidNameForAdditionalClaim
错误消息
通过 Edge 界面或 Edge Management 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).
示例屏幕截图
在 Edge 界面中,您将看到一个包含以下错误的对话框:

原因
如果 <AdditionalClaims> 元素的子元素 <Claim> 使用的声明名称是下列某个已注册名称,就会出现此错误:
“kid”“iss”“sub”“aud”“iat”“exp”“nbf”“jti”
已注册的声明在 RFC7519 中指定。
例如,在 <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
错误消息
通过 Edge 界面或 Edge Management 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).
示例屏幕截图
在 Edge 界面中,您将看到一个包含以下错误的对话框:

原因
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
错误消息
通过 Edge 界面或 Edge Management 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
示例屏幕截图
在 Edge 界面中,您将看到一个包含以下错误的对话框:

原因
如果在 <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
错误消息
通过 Edge 界面或 Edge Management 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).
示例屏幕截图
在 Edge 界面中,您将看到一个包含以下错误的对话框:

原因
如果在 <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
错误消息
通过 Edge 界面或 Edge Management 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).
示例屏幕截图
在 Edge 界面中,您将看到一个包含以下错误的对话框:

原因
如果 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
错误消息
通过 Edge 界面或 Edge Management 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).
示例屏幕截图
在 Edge 界面中,您将看到一个包含以下错误的对话框:

原因
如果 <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
错误消息
通过 Edge 界面或 Edge Management 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).
示例屏幕截图
在 Edge 界面中,您将看到一个包含以下错误的对话框:

原因
如果 <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
错误消息
通过 Edge 界面或 Edge Management 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).
示例屏幕截图
在 Edge 界面中,您将看到一个包含以下错误的对话框:

原因
当 <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
错误消息
通过 Edge 界面或 Edge Management API 部署 API 代理失败,并显示以下错误消息:
Error Saving RevisionInvalid Key configuration : policy(policy_name).
错误消息示例
Error Saving Revision 2
Invalid Key configuration : policy(JWT-Verify-RS256).
示例屏幕截图
在 Edge 界面中,您将看到一个包含以下错误的对话框:

原因
如果 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
错误消息
通过 Edge 界面或 Edge Management 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).
示例屏幕截图
在 Edge 界面中,您将看到一个包含以下错误的对话框:

原因
如果 <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
错误消息
通过 Edge 界面或 Edge Management 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).
示例屏幕截图
在 Edge 界面中,您将看到一个包含以下错误的对话框:

原因
如果在 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
错误消息
通过 Edge 界面或 Edge Management 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).
示例屏幕截图
在 Edge 界面中,您将看到一个包含以下错误的对话框:

原因
如果 Verify JWT 政策的 <Source> 元素为空,则会出现此错误。如果存在,则必须使用 Edge 流变量名称进行定义。
诊断
从错误消息中确定 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
错误消息
通过 Edge 界面或 Edge Management 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).
示例屏幕截图
在 Edge 界面中,您将看到一个包含以下错误的对话框:

原因
如果 <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
错误消息
通过 Edge 界面或 Edge Management 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).
示例屏幕截图
在 Edge 界面中,您将看到一个包含以下错误的对话框:

原因
如果将 <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>