<ph type="x-smartling-placeholder"></ph>
您正在查看 Apigee Edge 文档。
转到
Apigee X 文档。 信息
InvalidNameForAdditionalClaim
错误消息
通过 Edge 界面或 Edge Management API 部署 API 代理失败,并显示以下错误消息:
Error Saving Revision 2 Invalid name for additional claim : policy(policy_name) claim(claim_name).
错误消息示例
Error Saving Revision 2
Invalid name for additional claim : policy(JWT-Generate-HS256) claim(iss).
示例屏幕截图
在 Edge 界面中,您将看到一个包含以下错误的对话框:
原因
如果 <AdditionalClaims>
元素的子元素 <Claim>
使用的声明名称是下列某个已注册名称,就会出现此错误:
“kid”“iss”“sub”“aud”“iat”“exp”“nbf”“jti”
已注册的声明在 RFC7519 中指定。
例如,在 <AdditionalClaims>
元素下使用声明名称 iss
会导致此错误。
诊断
标识“生成 JWT”政策的名称以及错误消息中的声明名称。例如,在以下错误消息中,“生成 JWT”政策的名称为
JWT-Generate-HS256
,声明名称为iss
:Invalid name for additional claim : policy(JWT-Generate-HS256) claim(iss).
验证失败的“生成 JWT”政策 XML 中的
<AdditionalClaims>
元素下方使用的声明名称是否与错误消息中标识的声明名称匹配(上文中的第 1 步)。例如,以下政策将声明指定为iss
,它与错误消息中的内容匹配:<GenerateJWT name="JWT-Generate-HS256"> <DisplayName>JWT Generate HS256</DisplayName> <Algorithm>HS256</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> </GenerateJWT>
如果
<AdditionalClaims>
元素的子元素<Claim>
中使用的声明名称是以下某个已注册名称:“kid”“iss”“sub”“aud”“iat”“exp”“nbf”“jti”
就会导致错误。
在上面所示的“生成 JWT”政策示例中,
<Claim>
名称在<AdditionalClaims>
元素下指定为iss
,从而导致错误:Invalid name for additional claim : policy(JWT-Generate-HS256) claim(iss).
解决方法
不要在 <AdditionalClaims>
元素的子元素 <Claim>
中使用以下任何已注册名称:“kid”“iss”“sub”“aud”“iat”“exp”“nbf”或“jti”。
如需更正上面显示的“生成 JWT”政策示例,请将声明名称更改为 status
:
<GenerateJWT name="JWT-Generate-HS256">
<DisplayName>JWT Generate HS256</DisplayName>
<Algorithm>HS256</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>
</GenerateJWT>
InvalidTypeForAdditionalClaim
错误消息
通过 Edge 界面或 Edge Management API 部署 API 代理失败,并显示以下错误消息:
Error Saving Revision 2 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-Generate-HS256) claim(claim) type(integer).
示例屏幕截图
在 Edge 界面中,您将看到一个包含以下错误的对话框:
原因
如果 GenerateJWT 政策的 <AdditionalClaims>
元素的子元素 <Claim>
中使用的声明类型不是以下类型之一,则会出现此错误:
string
(默认)、number
、boolean
或 map
例如,在 <AdditionalClaims>
元素下使用声明类型 integer
会导致错误。
诊断
从错误消息中标识“生成 JWT”政策的名称、声明名称和声明类型。例如,在以下错误消息中,“生成 JWT”政策的名称为
JWT-Generate-HS256
,声明名称为claim
,声明类型为integer
:Invalid type for additional claim : policy(JWT-Generate-HS256) claim(claim) type(integer).
验证失败的“生成 JWT”政策 XML 中
<AdditionalClaims>
元素下方使用的声明名称和类型是否与第 1 步中错误消息中标识的声明名称和类型相匹配。例如,以下政策将声明指定为claim
,类型为integer
,与错误消息中的内容匹配:<GenerateJWT name="JWT-Generate-HS256"> <DisplayName>JWT Generate HS256</DisplayName> <Algorithm>HS256</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> </GenerateJWT>
如果
<AdditionalClaims>
元素的子元素<Claim>
中使用的声明类型不是以下类型之一:string
(默认)、number
、boolean
或map
就会导致错误。
在上面显示的“生成 JWT”政策示例中,
<AdditionalClaims>
元素下的<Claim>
类型被指定为integer
。由于integer
不是支持的类型,因此您会收到以下错误:Invalid type for additional claim : policy(JWT-Generate-HS256) claim(claim) type(integer).
解决方法
确保在 <AdditionalClaims>
元素的子元素 <Claim>
中仅使用支持的数据类型,例如 string
、number
、boolean
或 map
。
如需更正上面显示的“生成 JWT”政策示例,请将声明类型更改为 boolean
。
<GenerateJWT name="JWT-Generate-HS256">
<DisplayName>JWT Generate HS256</DisplayName>
<Algorithm>HS256</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>
</GenerateJWT>
MissingNameForAdditionalClaim
错误消息
通过 Edge 界面或 Edge Management API 部署 API 代理失败,并显示以下错误消息:
Error Saving Revision 2 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-Generate-HS256.xml. Reason: - Required attribute name is missing in Claim
示例屏幕截图
在 Edge 界面中,您将看到一个包含以下错误的对话框:
原因
如果在 <AdditionalClaims>
或 <AdditionalHeaders>
元素的子元素 <Claim>
中未指定声明名称,就会出现此错误。
诊断
从错误消息中标识“生成 JWT”政策的名称。例如,在以下错误消息中,“生成 JWT 政策”的名称为
JWT-Generate-HS256
:Error occurred while validation of bean JWT-Generate-HS256.xml. Reason: - Required attribute name is missing in Claim
检查失败的“生成 JWT”政策 XML,并验证
<AdditionalClaims>
或<AdditionalHeaders>
元素下的子元素<Claims>
中是否缺少声明名称。例如,以下“生成 JWT”政策不会在<AdditionalClaims>
元素下指定声明名称:<GenerateJWT name="JWT-Generate-HS256"> <DisplayName>JWT Generate HS256</DisplayName> <Algorithm>HS256</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> </GenerateJWT>
由于没有在
<AdditionalClaims>
元素下指定<Claim>
名称,因此会出现以下错误:Error occurred while validation of bean JWT-Generate-HS256.xml. Reason: - Required attribute name is missing in Claim
解决方法
确保始终在 <AdditionalClaims>
或 <AdditionalHeaders>
元素的子元素 <Claim>
中指定声明名称。
如需更正上面显示的“生成 JWT”政策示例,请按如下所示指定声明名称:
<GenerateJWT name="JWT-Generate-HS256">
<DisplayName>JWT Generate HS256</DisplayName>
<Algorithm>HS256</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>
</GenerateJWT>
InvalidNameForAdditionalHeader
错误消息
通过 Edge 界面或 Edge Management API 部署 API 代理失败,并显示以下错误消息:
Error Saving Revision 2 Invalid name for additional header : policy(policy_name)header(header_name).
错误消息示例
Error Saving Revision 2
Invalid name for additional header: policy(JWT-Generate-HS256) header(alg).
示例屏幕截图
在 Edge 界面中,您将看到一个包含以下错误的对话框:
原因
如果在 <AdditionalHeaders>
元素的子元素 <Claim>
中使用的声明名称是以下任一标准 JWT 标头,则会出现此错误:
alg
或 typ
例如,在 <AdditionalHeaders>
元素下使用声明名称 alg
将导致错误。
诊断
从错误消息中标识“生成 JWT”政策和标头名称。例如,在以下错误消息中,“生成 JWT”政策的名称为
JWT-Generate-HS256
,标头名称为alg
:Invalid name for additional header: policy(JWT-Generate-HS256) header(alg).
验证失败的“生成 JWT”政策 XML 中
<AdditionalHeaders>
元素下方的子元素<Claim>
中使用的标头名称与第 1 步错误消息中标识的标头名称匹配。例如,以下政策将标头指定为alg
,它与错误消息中的内容匹配:<GenerateJWT name="JWT-Generate-HS256"> <DisplayName>JWT Generate HS256</DisplayName> <Algorithm>HS256</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> </GenerateJWT>
如果
<AdditionalClaims>
元素的子元素<Claim>
中使用的标头名称是以下标准 JWT 标头之一:alg
或typ
就会导致错误。
在上面所示的“生成 JWT”政策示例中,
<Claim>
名称在<AdditionalClaims>
元素下指定为alg
,从而导致错误:Invalid name for additional header: policy(JWT-Generate-HS256) header(alg).
解决方法
请勿在 <AdditionalHeaders>
元素的子元素 <Claim>
中使用标准 JWT 标头 alg
或 typ
。
如需更正上面显示的“生成 JWT”政策示例,请在 <AdditionalHeaders>
元素的子元素 <Claim>
中使用名称 x5c
:
<GenerateJWT name="JWT-Generate-HS256">
<DisplayName>JWT Generate HS256</DisplayName>
<Algorithm>HS256</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>
</GenerateJWT>
InvalidTypeForAdditionalHeader
错误消息
通过 Edge 界面或 Edge Management API 部署 API 代理失败,并显示以下错误消息:
Error Saving Revision 2 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-Generate-HS256) claim(claim1) type(integer).
示例屏幕截图
在 Edge 界面中,您将看到一个包含以下错误的对话框:
原因
如果 GenerateJWT 政策 <AdditionalHeaders>
元素的子元素 <Claim>
中使用的声明类型不是以下任一类型,则会出现此错误:
string
(默认)、number
、boolean
或 map
。
例如,在 <AdditionalHeaders>
元素下使用声明类型 integer
将导致错误。
诊断
从错误消息中标识“生成 JWT”政策的名称、声明名称和声明类型。例如,在以下错误消息中,“生成 JWT”政策的名称为
JWT-Generate-HS256
,声明名称为claim,
,声明类型为integer:
Invalid type for additional header : policy(JWT-Generate-HS256) claim(claim) type(integer).
验证失败的“生成 JWT”政策 XML 的
<AdditionalClaims>
元素下方使用的声明名称和声明类型是否与第 1 步中错误消息中标识的声明名称和声明类型相匹配。例如,以下政策将声明指定为claim
,声明类型为integer
,与错误消息中的内容匹配:<GenerateJWT name="JWT-Generate-HS256"> <DisplayName>JWT Generate HS256</DisplayName> <Algorithm>HS256</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> </GenerateJWT>
如果
<AdditionalHeaders>
元素的子元素<Claim>
中使用的声明类型不是以下类型之一:string
(默认)、number
、boolean
或map
就会导致错误。
在上面显示的“生成 JWT”政策示例中,
<AdditionalHeaders>
元素下的<Claim>
类型被指定为integer
。由于integer
不是支持的类型,因此您会收到以下错误:Invalid type for additional header : policy(JWT-Generate-HS256) claim(claim) type(integer).
解决方法
确保在 <AdditionalHeaders>
元素的子元素 <Claim>
中仅使用支持的数据类型 string
、number
、boolean
或 map
。
如需更正上面显示的“生成 JWT”政策示例,请将声明类型更改为 boolean
:
<GenerateJWT name="JWT-Generate-HS256">
<DisplayName>JWT Generate HS256</DisplayName>
<Algorithm>HS256</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>
</GenerateJWT>
InvalidValueOfArrayAttribute
错误消息
通过 Edge 界面或 Edge Management API 部署 API 代理失败,并显示以下错误消息:
Error Saving Revision 2 Invalid value for array attribute: policy(policy_name)claim(claim_name).
错误消息示例
Error Saving Revision 2
Invalid value for array attribute: policy(JWT-Generate-HS256) claim(claim).
示例屏幕截图
在 Edge 界面中,您将看到一个包含以下错误的对话框:
原因
如果 <AdditionalClaims>
或 <AdditionalHeaders>
元素的子元素 <Claim>
中的数组属性值未设置为 true
或 false
,则会出现此错误。
例如,在 <AdditionalClaims>
或 <AdditionalHeaders>
的子元素 <Claim>
中将数组属性值设置为 yes
会导致错误。
诊断
标识“生成 JWT”政策的名称以及错误消息中的声明名称。例如,在以下错误消息中,“生成 JWT”政策的名称为
JWT-Generate-HS256
,声明名称为claim:
Invalid value for array attribute: policy(JWT-Generate-HS256) claim(claim).
验证失败的“生成 JWT”政策 XML 中
<AdditionalHeaders>
元素下子元素<Claim>
中使用的声明名称与第 1 步错误消息中标识的声明名称匹配。例如,以下政策将声明名称指定为claim
,它与错误消息中的内容匹配:<GenerateJWT name="JWT-Generate-HS256"> <DisplayName>JWT Generate HS256</DisplayName> <Algorithm>HS256</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> </GenerateJWT>
如果
<AdditionalClaims>
元素的子元素<Claim>
中的array
属性值未设置为true
或false
,则会导致错误。由于
<AdditionalClaims>
元素的子元素<Claim>
中的array
属性设为上述示例中的yes
,因此会收到错误:Invalid value for array attribute: policy(JWT-Generate-HS256) claim(claim).
解决方法
确保 <AdditionalClaims>
或 <AdditionalHeaders>
的子元素 <Claim>
中的数组属性值设置为 true
或 false
。
如需更正上面显示的“生成 JWT”政策示例,请将数组属性值更改为 true
:
<GenerateJWT name="JWT-Generate-HS256">
<DisplayName>JWT Generate HS256</DisplayName>
<Algorithm>HS256</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>
</GenerateJWT>
InvalidConfigurationForActionAndAlgorithm
错误消息
通过 Edge 界面或 Edge Management API 部署 API 代理失败,并显示以下错误消息:
Error Saving Revision 2
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 2 Invalid configuration element for this action and algorithm Family: policy(JWT-Generate-HS256) element(PrivateKey) action(Generate) family(HMAC).
示例屏幕截图
在 Edge 界面中,您将看到一个包含以下错误的对话框:
原因
如果将 <PrivateKey>
元素与 HS 系列算法搭配使用,而 <SecretKey>
元素与 RSA 系列算法搭配使用,则会发生此错误。如果这些条件中的任意一个为 true,也会出现此错误。
例如,如果将 <PrivateKey>
元素与 HS 系列算法搭配使用,就会导致此错误。
诊断
从错误消息中标识“生成 JWT”政策名称、元素名称和算法系列名称。例如,在以下错误消息中,“生成 JWT”政策的名称为
JWT-Generate-HS256
,元素名称为PrivateKey
,算法系列为HMAC
:Invalid configuration element for this action and algorithm Family: policy(JWT-Generate-HS256) element(PrivateKey) action(Generate) family(HMAC).
验证失败的“生成 JWT”政策 XML 中使用的元素和算法系列是否与第 1 步错误消息中标识的元素和算法系列匹配。例如,以下政策将元素指定为
PrivateKey
,算法系列指定为HMAC
,这与错误消息中的内容匹配:<GenerateJWT name="JWT-Generate-HS256"> <DisplayName>JWT Generate HS256</DisplayName> <Algorithm>HS256</Algorithm> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <PrivateKey> <Password ref="private.privatekey-password"/> </PrivateKey> <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=tuu =/> </AdditionalClaims> </GenerateJWT>
如果
<Algorithm>
元素的值为HS256
,但您使用了<PrivateKey>
,则会导致错误。在上面显示的“生成 JWT”政策示例中,即使将
<PrivateKey>
设置为系列算法HS256
,系统也会使用<PrivateKey>
,从而导致错误:Invalid configuration element for this action and algorithm Family: policy(JWT-Generate-HS256) element(PrivateKey) action(Generate) family(HMAC).
解决方法
确保 <PrivateKey>
元素仅与 RSA 系列算法搭配使用,<SecretKey>
元素仅与 HS 系列算法搭配使用。
如需更正上面显示的“生成 JWT”政策示例,请使用利用 HS256 算法的 GenerateJWT 政策中的 <SecretKey>
:
<GenerateJWT name="JWT-Generate-HS256">
<DisplayName>JWT Generate HS256</DisplayName>
<Algorithm>HS256</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>
</GenerateJWT>
InvalidValueForElement
错误消息
通过 Edge 界面或 Edge Management API 部署 API 代理失败,并显示以下错误消息:
Error Saving Revision 2 Invalid Value for element : policy(policy_name) element(element_name).
错误消息示例
Error Saving Revision 2
Invalid Value for element : policy(JWT-Generate-HS256) element(Algorithm).
示例屏幕截图
在 Edge 界面中,您将看到一个包含以下错误的对话框:
原因
如果 <Algorithm>
元素中指定的值不是以下值之一,就会出现此错误:
HS256
、HS384
、HS512
、RS256
、RS384
、RS512
例如,在 <Algorithm>
元素中将算法值指定为 RS128
会导致此错误。
诊断
从错误消息中标识“生成 JWT”政策的名称和元素名称。例如,在以下错误消息中,“生成 JWT”政策的名称为
JWT-Generate-HS256
,元素名称为Algorithm.
Invalid Value for element : policy(JWT-Generate-HS256) element(Algorithm).
检查失败的“生成 JWT”政策 XML,并检查为
<Algorithm>
元素指定的值。下面是一个“生成 JWT”政策示例:
<GenerateJWT name="JWT-Generate-HS256"> <DisplayName>JWT Generate HS256</DisplayName> <Algorithm>HS128</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> </GenerateJWT>
检查在
<Algorithm>
元素中指定的值。如果不是以下值之一:HS256
、HS384
、HS512
、RS256
、RS384
、RS512
就会导致错误。
在上面显示的“生成 JWT”政策示例中,
<Algorithm>
名称被指定为HS128
。由于系统不支持此算法,因此收到错误:Invalid Value for element : policy(JWT-Generate-HS256) element(Algorithm).
解决方法
确保在 <Algorithm>
元素中指定的值是受支持的值之一:
HS256
、HS384
、HS512
、RS256
、RS384
、RS512
如需更正上面显示的“生成 JWT”政策示例(使用 <SecretKey>
元素),请将 <Algorithm>
的值更改为 HS25
。请注意,使用 <SecretKey>
元素时,只能使用 HS 系列算法。
<GenerateJWT name="JWT-Generate-HS256">
<DisplayName>JWT Generate HS256</DisplayName>
<Algorithm>HS256</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>
</GenerateJWT>
MissingConfigurationElement
错误消息
通过 Edge 界面或 Edge Management API 部署 API 代理失败,并显示以下错误消息:
Error Saving Revision 2 Missing configuration element : policy(policy_name) element(element_name).
错误消息示例
Error Saving Revision 2
Missing configuration element : policy(JWT-Generate-HS256) element(SecretKey).
示例屏幕截图
在 Edge 界面中,您将看到一个包含以下错误的对话框:
原因
当 <PrivateKey>
元素在“生成 JWT”政策中未与 RSA 系列算法搭配使用时,会发生此错误。同样,如果 <SecretKey>
元素在“生成 JWT”政策中未与 HS 系列算法搭配使用时,也会发生此错误。
例如,如果不将 <PrivateKey>
元素与 RSA 系列算法搭配使用,则会导致此错误。
诊断
从错误消息中标识“生成 JWT”政策的名称和缺少元素名称。例如,在以下错误消息中,“生成 JWT 政策”的名称为
JWT-Generate-HS256
,缺少元素名称为SecretKey
。Missing configuration element : policy(JWT-Generate-HS256) element(SecretKey).
检查失败的“生成 JWT”政策 XML,并验证错误消息中指定的元素是否缺失。如果缺失,则会导致错误。
例如,在以下政策中,
SecretKey
缺失,且使用的Algorithm
为HS256
:<GenerateJWT name="JWT-Generate-HS256"> <DisplayName>JWT Generate HS256</DisplayName> <Algorithm>HS256</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> </GenerateJWT>
“生成 JWT”政策示例使用 HS 系列算法,但缺少必需元素
SecretKey
,从而导致以下错误:Missing configuration element : policy(JWT-Generate-HS256) element(SecretKey).
解决方法
确保将必需的 <PrivateKey>
元素与 RSA 系列算法搭配使用,并且必需的 <SecretKey>
元素与 HS 系列算法搭配使用。
如需更正上面显示的“生成 JWT”政策示例(使用 HS256
算法),请将 <SecretKey>
元素添加到“生成 JWT”政策:
<GenerateJWT name="JWT-Generate-HS256">
<DisplayName>JWT Generate HS256</DisplayName>
<Algorithm>HS256</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>
</GenerateJWT>
InvalidKeyConfiguration
错误消息
通过 Edge 界面或 Edge Management API 部署 API 代理失败,并显示以下错误消息:
Error Saving RevisionInvalid Key configuration : policy(policy_name).
错误消息示例
Error Saving Revision 3
Invalid Key configuration : policy(JWT-Generate-HS256).
示例屏幕截图
在 Edge 界面中,您将看到一个包含以下错误的对话框:
原因
如果在“生成 JWT”政策的 <PrivateKey>
或 <SecretKey>
元素中未定义必需的子元素 <Value>
,就会出现此错误。
诊断
从错误消息中标识“生成 JWT”政策的名称。例如,在以下错误消息中,“生成 JWT”政策的名称为
JWT-Generate-HS256
。Invalid Key configuration : policy(JWT-Generate-HS256).
检查失败的“生成 JWT”政策 XML,并验证是否子元素
<Value>
是否未在<PrivateKey>
或<SecretKey>
元素定义。如果未定义<Value>
,则会导致错误。例如,在以下政策中,子元素
<Value>
未在<SecretKey>
元素中定义:<GenerateJWT name="JWT-Generate-HS256"> <DisplayName>JWT Generate HS256</DisplayName> <Algorithm>HS256</Algorithm> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <ExpiresIn>1h</ExpiresIn> <SecretKey> </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> </GenerateJWT>
由于未在“生成 JWT”政策的
<SecretKey>
元素中定义子元素<Value>
,因此收到以下错误:Invalid Key configuration : policy(JWT-Generate-HS256).
解决方法
确保始终在“生成 JWT”政策的 <PrivateKey>
或 <SecretKey>
元素中定义子元素 <Value>
。
如需更正上面显示的“生成 JWT”政策示例,请在 <SecretKey>
元素下定义子元素 <Value>
,如下所示:
<GenerateJWT name="JWT-Generate-HS256">
<DisplayName>JWT Generate HS256</DisplayName>
<Algorithm>HS256</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>
</GenerateJWT>
EmptyElementForKeyConfiguration
错误消息
通过 Edge 界面或 Edge Management API 部署 API 代理失败,并显示以下错误消息:
Error Saving Revision 2 Empty Element for Key Configuration : policy(policy_name) element(element_name).
错误消息示例
Error Saving Revision 2
Empty Element for Key Configuration : policy(JWT-Generate-HS256) element(SecretKey/Value).
示例屏幕截图
在 Edge 界面中,您将看到一个包含以下错误的对话框:
原因
如果 <PrivateKey>
或 <SecretKey>
元素的子元素 <Value>
中的 ref 属性未指定或为空,则会发生此错误。
例如,如果 <SecretKey>
元素的子元素 <Value>
为空,则会出现此错误。
诊断
从错误消息中确定“生成 JWT”政策名称和空元素名称。例如,在以下错误消息中,“生成 JWT”政策的名称为
JWT-Generate-HS256
,空元素名称为SecretKey/Value
。Empty Element for Key Configuration : policy(JWT-Generate-HS256) element(SecretKey/Value).
检查失败的“生成 JWT”政策 XML,并验证第 1 步中标识的元素是否为空。如果为空,则会导致错误。
例如,以下政策表明
<SecretKey>
元素的子元素<Value>
为空:<GenerateJWT name="JWT-Generate-HS256"> <DisplayName>JWT Generate HS256</DisplayName> <Algorithm>HS256</Algorithm> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <ExpiresIn>1h</ExpiresIn> <SecretKey> <Value/> <Id>1918290</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> </GenerateJWT>
由于“生成 JWT”政策中
<SecretKey>
元素的子元素<Value>
为空,您收到以下错误:Empty Element for Key Configuration : policy(JWT-Generate-HS256) element(SecretKey/Value).
解决方法
确保始终在 <PrivateKey>
或 <SecretKey>
元素的子元素 <Value>
中指定 ref 属性,并且具有前缀“private.
”。
如需更正上面显示的“生成 JWT”政策示例,请在 <SecretKey>
元素的子元素 <Value>
中使用流变量 private.privatekey
。
<GenerateJWT name="JWT-Generate-HS256">
<DisplayName>JWT Generate HS256</DisplayName>
<Algorithm>HS256</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>
</GenerateJWT>
InvalidVariableNameForSecret
错误消息
通过 Edge 界面或 Edge Management API 部署 API 代理失败,并显示以下错误消息:
Error Saving Revision 2 Invalid variable name for secret : policy(policy_name) element(element_name).
错误消息示例
Error Saving Revision 2
Invalid variable name for secret : policy(JWT-Generate-HS256) element(SecretKey/Value).
示例屏幕截图
在 Edge 界面中,您将看到一个包含以下错误的对话框:
原因
如果在 <PrivateKey>
或 <SecretKey>
元素的子元素 <Value>
ref 属性中指定的流变量名称未包含专用前缀 (private.
),则会出现此错误。
例如:
如果在 <PrivateKey>
元素的子元素 <Value>
ref 属性中将流变量名称指定为 mykey
,则会出现此错误。
诊断
从错误消息中标识“生成 JWT”政策的名称,以及含无效变量名称的元素的名称。例如,在以下错误消息中,“生成 JWT”政策的名称为
JWT-Generate-HS256
,元素名称为SecretKey/Value
。Invalid variable name for secret : policy(JWT-Generate-HS256) element(SecretKey/Value).
检查失败的“生成 JWT”政策 XML,并验证在第 1 步中标识的元素中使用的变量名称。如果变量名称没有前缀
private.
,则会导致错误。例如,以下政策表明
<SecretKey>
元素的子元素<Value>
具有无效变量名称mykey
:<GenerateJWT name="JWT-Generate-HS256"> <DisplayName>JWT Generate HS256</DisplayName> <Algorithm>HS256</Algorithm> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <ExpiresIn>1h</ExpiresIn> <SecretKey> <Value ref="mykey"/> <Id>1918290</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> </GenerateJWT>
由于在“生成 JWT”政策的
<SecretKey>
元素的子元素<Value>
中指定的变量名称没有private.
前缀,因此收到以下错误:Invalid variable name for secret : policy(JWT-Generate-HS256) element(SecretKey/Value).
解决方法
确保 <PrivateKey>
或 <SecretKey>
元素的子元素 <Value>
中的 ref 属性始终指定,并且具有前缀 private.
。
如需更正上面显示的“生成 JWT”政策示例,请在 <SecretKey>
元素的子元素 <Value>
中使用流变量 private.privatekey
:
<GenerateJWT name="JWT-Generate-HS256">
<DisplayName>JWT Generate HS256</DisplayName>
<Algorithm>HS256</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>
</GenerateJWT>
InvalidSecretInConfig
错误消息
通过 Edge 界面或 Edge Management API 部署 API 代理失败,并显示以下错误消息:
Error Saving Revision 2 Specifying a secret in the configuration is invalid : policy(policy_name) element(element_name).
错误消息示例
Error Saving Revision 2
Specifying a secret in the configuration is invalid : policy(JWT-Generate-HS256) element(SecretKey/Value).
示例屏幕截图
在 Edge 界面中,您将看到一个包含以下错误的对话框:
原因
如果在下列各项中显式指定值(密钥),就会出现此错误:
<PrivateKey>
元素的子元素<Value>
或<Password>
,或<SecretKey>
元素的子元素<Value>
(“生成 JWT”政策中)。
例如,如果在 <SecretKey>
元素的子元素 <Value>
中显式将密钥指定为 abc
,则会出现此错误。
诊断
从错误消息中标识“生成 JWT”政策的名称,以及显式指定密钥的元素名称。例如,在以下错误消息中,“生成 JWT”政策的名称为
JWT-Generate-HS256
,元素名称为SecretKey/Value
。Specifying a secret in the configuration is invalid : policy(JWT-Generate-HS256) element(SecretKey/Value).
检查失败的“生成 JWT”政策 XML,并验证是否在第 1 步中标识的元素中显式指定了密钥。如果已显式指定,则会导致错误。
例如,以下政策表明已在
<SecretKey>
元素的子元素<Value>
中显式指定密钥:<GenerateJWT name="JWT-Generate-HS256"> <DisplayName>JWT Generate HS256</DisplayName> <Algorithm>HS256</Algorithm> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <ExpiresIn>1h</ExpiresIn> <SecretKey> <Value>abc</Value> <Id>1918290</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> </GenerateJWT>
由于已在“生成 JWT”政策的
<SecretKey>
元素的子元素<Value>
中显式指定了密钥,因此收到以下错误:Specifying a secret in the configuration is invalid : policy(JWT-Generate-HS256) element(SecretKey/Value).
解决方法
确保始终在 <PrivateKey>
或 <SecretKey>
元素的子元素 <Value>
中将该值指定为流变量。
如需更正上面显示的“生成 JWT”政策示例,请在 <SecretKey>
的子元素 <Value>
的 ref 属性中使用流变量 private.secretkey
:
<GenerateJWT name="JWT-Generate-HS256">
<DisplayName>JWT Generate HS256</DisplayName>
<Algorithm>HS256</Algorithm>
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
<ExpiresIn>1h</ExpiresIn>
<SecretKey>
<Value ref="private.secretkey"/>
<Id>1918290</Id>
</SecretKey>
<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>
</GenerateJWT>
InvalidTimeFormat
错误消息
通过 Edge 界面或 Edge Management API 部署 API 代理失败,并显示以下错误消息:
Error Saving Revision 2 Invalid Time format: policy(policy_name) element(element_name).
错误消息示例
Error Saving Revision 3
Invalid Time format: policy(JWT-Generate-HS256) element(NotBefore).
示例屏幕截图
在 Edge 界面中,您将看到一个包含以下错误的对话框:
原因
如果在 <NotBefore>
元素中指定的值不是支持的格式之一,就会出现此错误:
sortable
、RFC 1123
、RFC 850
、ANCI-C
例如,如果在 <NotBefore>
中指定的值是 20-JUN-1990 08:03
(格式不受支持),则会出现此错误。
<NotBefore>20-JUN-1990 08:03:00:21-07:00</NotBefore>
诊断
从错误消息中标识“生成 JWT”政策的名称,以及具有无效时间格式的元素名称。例如,在以下错误消息中,“生成 JWT”政策的名称为
JWT-Generate-HS256
,元素名称为NotBefore
。Invalid Time format: policy(JWT-Generate-HS256) element(NotBefore).
检查失败的“生成 JWT”政策 XML,并验证在第 1 步中标识的元素中使用的时间格式。如果元素未使用任何支持的格式:
sortable
、RFC 1123
、RFC 850
、ANCI-C
就会导致错误。
例如,以下政策表明子元素
<NotBefore>
使用不受支持的时间格式:<GenerateJWT name="JWT-Generate-HS256"> <DisplayName>JWT Generate HS256</DisplayName> <Algorithm>HS256</Algorithm> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <ExpiresIn>1h</ExpiresIn> <NotBefore>20-JUN-1990 08:03:00:21-07:00</NotBefore> <SecretKey> <Value ref="private.secretkey"/> <Id>1918290</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> </GenerateJWT>
由于“生成 JWT”政策的元素
<NotBefore>
不使用任何支持的时间格式,因此您收到以下错误:Invalid variable name for secret : policy(JWT-Generate-HS256) element(SecretKey/Value).
解决方法
确保在 <NotBefore>
元素中指定的值采用支持的格式之一:
sortable
、RFC 1123
、RFC 850
、ANCI-C
如需更正“生成 JWT”政策示例,请修改 <NotBefore>
元素中的日期,以使用 sortable
格式,如下所示:
<GenerateJWT name="JWT-Generate-HS256">
<DisplayName>JWT Generate HS256</DisplayName>
<Algorithm>HS256</Algorithm>
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
<ExpiresIn>1h</ExpiresIn>
<NotBefore>2018-08-14T11:00:21-07:00</NotBefore>
<SecretKey>
<Value ref="private.secretkey"/>
<Id>1918290</Id>
</SecretKey>
<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>
</GenerateJWT>