本页面适用于 Apigee 和 Apigee Hybrid。
查看 Apigee Edge 文档。
AccessControl 政策
This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
Fault code | HTTP status | Cause | Fix |
---|---|---|---|
accesscontrol.IPDeniedAccess |
403 |
The client IP address, or an IP address passed
in the API request, matches an IP address specified in the <SourceAddress> element within
the <MatchRule> element of the Access Control Policy, and the action attribute of the
<MatchRule> element is set to DENY . |
build |
accesscontrol.InvalidIPAddressInVariable |
500 |
The flow variable in <ClientIPVariable> contains an invalid IP address. |
Fault variables
These variables are set when a runtime error occurs. For more information, see Variables specific to policy errors.
Variables | Where | Example |
---|---|---|
fault.name="fault_name" |
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. | fault.name Matches "IPDeniedAccess" |
acl.policy_name.failed |
policy_name is the user-specified name of the policy that threw the fault. | acl.AC-AllowAccess.failed = true |
Example fault response
{ "fault":{ "faultstring":"Access Denied for client ip : 52.211.243.3" "detail":{ "errorcode":"steps.accesscontrol.IPDeniedAccess" } } }
Example fault rule
<FaultRule name="IPDeniedAccess"> <Step> <Name>AM-IPDeniedAccess</Name> <Condition>(fault.name Matches "IPDeniedAccess") </Condition> </Step> <Condition>(acl.failed = true) </Condition> </FaultRule>
AccessEntity 政策
如需了解相关信息,请参阅有关政策错误的注意事项和处理故障。
运行时错误
无。
部署错误
错误名称 | 故障字符串 | HTTP 状态 | 发生的条件 |
---|---|---|---|
InvalidEntityType |
Invalid type [entity_type] in ACCESSENTITYStepDefinition
[policy_name] |
不适用 | 使用的实体类型必须是受支持的类型之一。 |
AssignMessage 政策
This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
Fault code | HTTP status | Cause | Fix |
---|---|---|---|
steps.assignmessage.SetVariableFailed |
500 |
The policy was not able to set a variable. See the fault string for the name of the unresolved variable. | |
steps.assignmessage.VariableOfNonMsgType |
500 |
This error occurs if the Message type variables represent entire HTTP requests and responses. The built-in Apigee
flow variables |
build |
steps.assignmessage.UnresolvedVariable |
500 |
This error occurs if a variable specified in the AssignMessage policy is either:
|
build |
Deployment errors
These errors can occur when you deploy a proxy containing this policy.
Error name | Cause | Fix |
---|---|---|
InvalidIndex |
If the index specified in the <Copy> and/or <Remove> elements of the AssignMessage
policy is 0 or a negative number, then deployment of the API Proxy fails.
|
build |
InvalidVariableName |
If the child element <Name> is empty or not specified in the <AssignVariable> element,
then the deployment of the API proxy fails because there is no valid variable name to
which to assign a value. A valid variable name is required.
|
build |
InvalidPayload |
A payload specified in the policy is invalid. |
Fault variables
These variables are set when this policy triggers an error at runtime. For more information, see What you need to know about policy errors.
Variables | Where | Example |
---|---|---|
fault.name="FAULT_NAME" |
FAULT_NAME is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. | fault.name Matches "UnresolvedVariable" |
assignmessage.POLICY_NAME.failed |
POLICY_NAME is the user-specified name of the policy that threw the fault. | assignmessage.AM-SetResponse.failed = true |
Example error response
{ "fault":{ "detail":{ "errorcode":"steps.assignmessage.VariableOfNonMsgType" }, "faultstring":"AssignMessage[AM-SetResponse]: value of variable is not of type Message" } }
Example fault rule
<FaultRule name="Assign Message Faults"> <Step> <Name>AM-CustomNonMessageTypeErrorResponse</Name> <Condition>(fault.name Matches "VariableOfNonMsgType") </Condition> </Step> <Step> <Name>AM-CustomSetVariableErrorResponse</Name> <Condition>(fault.name = "SetVariableFailed")</Condition> </Step> <Condition>(assignmessage.failed = true) </Condition> </FaultRule>
基本身份验证政策
This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle errors. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
Fault code | HTTP status | Cause | Fix |
---|---|---|---|
steps.basicauthentication.InvalidBasicAuthenticationSource |
500 |
On a decode when the incoming Base64 encoded string does not contain a valid value or
the header is malformed (for example, does not start with Basic ). |
build |
steps.basicauthentication.UnresolvedVariable |
500 |
The required source variables for the decode or encode are not present. This error can
only occur if IgnoreUnresolvedVariables is false. |
build |
Deployment errors
These errors can occur when you deploy a proxy containing this policy.
Error name | Occurs when | Fix |
---|---|---|
UserNameRequired |
The <User> element must be present for the named operation. |
build |
PasswordRequired |
The <Password> element must be present for the named operation. |
build |
AssignToRequired |
The <AssignTo> element must be present for the named operation. |
build |
SourceRequired |
The <Source> element must be present for the named operation. |
build |
Fault variables
These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors.
Variables | Where | Example |
---|---|---|
fault.name="fault_name" |
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. | fault.name Matches "UnresolvedVariable" |
BasicAuthentication.policy_name.failed |
policy_name is the user-specified name of the policy that threw the fault. | BasicAuthentication.BA-Authenticate.failed = true |
Example error response
{ "fault":{ "detail":{ "errorcode":"steps.basicauthentication.UnresolvedVariable" }, "faultstring":"Unresolved variable : request.queryparam.password" } }
Example fault rule
<FaultRule name="Basic Authentication Faults"> <Step> <Name>AM-UnresolvedVariable</Name> <Condition>(fault.name Matches "UnresolvedVariable") </Condition> </Step> <Step> <Name>AM-AuthFailedResponse</Name> <Condition>(fault.name = "InvalidBasicAuthenticationSource")</Condition> </Step> <Condition>(BasicAuthentication.BA-Authentication.failed = true) </Condition> </FaultRule>
DecodeJWS 政策
This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
Fault code | HTTP status | Occurs when |
---|---|---|
steps.jws.FailedToDecode |
401 |
The policy was unable to decode the JWS. The JWS is possibly corrupted. |
steps.jws.FailedToResolveVariable |
401 |
Occurs when the flow variable specified in the <Source> element of
the policy does not exist. |
steps.jws.InvalidClaim |
401 |
For a missing claim or claim mismatch, or a missing header or header mismatch. |
steps.jws.InvalidJsonFormat |
401 |
Invalid JSON found in the JWS header. |
steps.jws.InvalidJws |
401 |
This error occurs when the JWS signature verification fails. |
steps.jws.InvalidPayload |
401 |
The JWS payload is invalid. |
steps.jws.InvalidSignature |
401 |
<DetachedContent> is omitted and the JWS has a detached content payload. |
steps.jws.MissingPayload |
401 |
The JWS payload is missing. |
steps.jws.NoAlgorithmFoundInHeader |
401 |
Occurs when the JWS omits the algorithm header. |
steps.jws.UnknownException |
401 |
An unknown exception occurred. |
Deployment errors
These errors can occur when you deploy a proxy containing this policy.
Error name | Occurs when |
---|---|
InvalidAlgorithm |
The only valid values are: RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384, ES512,
HS256, HS384, HS512 . |
|
Other possible deployment errors. |
Fault variables
These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors.
Variables | Where | Example |
---|---|---|
fault.name="fault_name" |
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. | fault.name Matches "TokenExpired" |
JWS.failed |
All JWS policies set the same variable in the case of a failure. | jws.JWS-Policy.failed = true |
Example error response
For error handling, the best practice is to trap the errorcode
part of the error
response. Do not rely on the text in the faultstring
, because it could change.
Example fault rule
<FaultRules> <FaultRule name="JWS Policy Errors"> <Step> <Name>JavaScript-1</Name> <Condition>(fault.name Matches "TokenExpired")</Condition> </Step> <Condition>JWS.failed=true</Condition> </FaultRule> </FaultRules>
DecodeJWT 政策
This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
Fault code | HTTP status | Cause | Fix |
---|---|---|---|
steps.jwt.FailedToDecode |
401 |
Occurs when the policy is unable to decode the JWT. The JWT may be malformed, invalid or otherwise not decodable. | build |
steps.jwt.FailedToResolveVariable |
401 |
Occurs when the flow variable specified in the <Source> element of
the policy does not exist. |
|
steps.jwt.InvalidToken |
401 |
Occurs when the flow variable specified in the <Source> element of
the policy is out of scope or can't be resolved. |
build |
Deployment errors
These errors can occur when you deploy a proxy containing this policy.
Error name | Cause | Fix |
---|---|---|
InvalidEmptyElement |
Occurs when the flow variable containing the JWT to be decoded is not specified in the
<Source> element of the policy.
|
build |
故障变量
发生运行时错误时,系统会设置这些变量。如需了解详情,请参阅您需要了解的有关政策错误的信息。
变量 | 地点 | 示例 |
---|---|---|
fault.name="fault_name" |
fault_name 是故障名称,如上面的运行时错误表中所列。故障名称是故障代码的最后一部分。 | fault.name Matches "InvalidToken" |
JWT.failed |
所有 JWT 政策都将在发生故障时设置同一变量。 | JWT.failed = true |
错误响应示例
处理错误时,最佳做法是捕获错误响应的 errorcode
部分。不要依赖 faultstring
中的文本,因为它可能会发生变化。
故障规则示例
<FaultRules> <FaultRule name="JWT Policy Errors"> <Step> <Name>JavaScript-1</Name> <Condition>(fault.name Matches "InvalidToken")</Condition> </Step> <Condition>JWT.failed=true</Condition> </FaultRule> </FaultRules>
ExtractVariables 政策
本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息和处理故障。
运行时错误
政策执行时可能会发生这些错误。
故障代码 | HTTP 状态 | 原因 | 修复 |
---|---|---|---|
steps.extractvariables.ExecutionFailed |
500 |
在以下情况下,会发生此错误:
|
build |
steps.extractvariables.ImmutableVariable |
500 |
政策中使用的变量不可变。政策无法设置此变量。 | 不适用 |
steps.extractvariables.InvalidJSONPath |
500 |
如果在政策的 JSONPath 元素中使用了无效的 JSON 路径,则会出现此错误。例如,如果 JSON 载荷没有对象 Name ,但您在政策中指定 Name 作为路径,则会出现此错误。 |
build |
steps.extractvariables.JsonPathParsingFailure |
500 |
当政策无法解析 JSON 路径并从 Source 元素中指定的流变量提取数据时,会发生此错误。如果当前流中不存在 Source 元素中指定的流变量,通常就会发生这种情况。 |
build |
steps.extractvariables.SetVariableFailed |
500 |
如果政策无法为变量设置值,则会出现此错误。如果您尝试将值分配给多个名称以采用嵌套点分隔格式的相同字词开头的变量,通常会发生此错误。 | build |
steps.extractvariables.SourceMessageNotAvailable |
500 |
如果政策的 Source 元素中指定的消息变量为以下任意一项,就会出现此错误:
|
build |
steps.extractvariables.UnableToCast |
500 |
如果政策无法将提取的值转换为变量,就会出现此错误。如果您尝试将一种数据类型的值设置为另一种数据类型的变量,通常就会发生这种情况。 | build |
部署错误
在您部署包含此政策的代理时,可能会发生这些错误。
错误名称 | 原因 | 修复 |
---|---|---|
NothingToExtract |
如果政策没有元素 URIPath 、QueryParam 、Header 、FormParam 、XMLPayload 或 JSONPayload 中的任一个,则 API 代理部署将失败,因为没有要提取的内容。 |
build |
NONEmptyPrefixMappedToEmptyURI |
如果政策在 XMLPayload 元素下的 Namespace 元素中定义了一个前缀,但未定义 URI,则会出现此错误。 |
build |
DuplicatePrefix |
如果政策在 XMLPayload 元素下的 Namespace 元素中多次定义了相同的前缀,就会出现此错误。 |
build |
NoXPathsToEvaluate |
如果政策在 XMLPayload 元素中没有 XPath 元素,则 API 代理的部署将失败并显示此错误。 |
build |
EmptyXPathExpression |
如果政策在 XMLPayload 元素内包含空的 XPath 表达式,则 API 代理部署将失败。 |
build |
NoJSONPathsToEvaluate |
如果政策在 JSONPayload 元素中没有 JSONPath 元素,则 API 代理的部署将失败并显示此错误。 |
build |
EmptyJSONPathExpression |
如果政策在 XMLPayload 元素内包含空的 XPath 表达式,则 API 代理部署将失败。 |
build |
MissingName |
如果政策在 QueryParam 、Header 、FormParam 或 Variable 等任何政策元素中没有 name 属性,则 API 代理部署将失败。 |
build |
PatternWithoutVariable |
如果政策未在 Pattern 元素中指定变量,则 API 代理部署将失败。Pattern 元素需要存储所提取数据的变量的名称。 |
build |
CannotBeConvertedToNodeset |
如果政策具有 XPath 表达式(其中将 Variable 类型定义为 nodeset),但无法将表达式转换为 nodeset,则 API 代理部署将失败。 |
build |
JSONPathCompilationFailed |
政策无法编译指定的 JSON 路径。 | 不适用 |
InstantiationFailed |
无法实例化此政策。 | 不适用 |
XPathCompilationFailed |
如果 XPath 元素中使用的前缀或值不是政策中声明的任何命名空间的一部分,则 API 代理部署将失败。 |
build |
InvalidPattern |
如果政策中的任何元素(如 URIPath 、QueryParam 、Header 、FormParam 、XMLPayload 或 JSONPayload )中的 Pattern 元素定义无效,则 API 代理部署将失败。 |
build |
故障变量
当此政策在运行时触发错误时,将设置这些变量。如需了解详情,请参阅您需要了解的有关政策错误的信息。
变量 | 位置 | 示例 |
---|---|---|
fault.name="fault_name" |
fault_name 是故障名称,如上面的运行时错误表中所列。故障名称是故障代码的最后一部分。 | fault.name = "SourceMessageNotAvailable" |
extractvariables.policy_name.failed |
policy_name 是抛出故障的政策的用户指定名称。 | extractvariables.EV-ParseJsonResponse.failed = true |
错误响应示例
{ "fault":{ "detail":{ "errorcode":"steps.extractvariables.SourceMessageNotAvailable" }, "faultstring":"request message is not available for ExtractVariable: EV-ParseJsonResponse" } }
故障规则示例
<FaultRule name="Extract Variable Faults"> <Step> <Name>AM-CustomErrorMessage</Name> <Condition>(fault.name = "SourceMessageNotAvailable") </Condition> </Step> <Condition>(extractvariables.EM-ParseJsonResponse.failed = true) </Condition> </FaultRule>
GenerateJWS 政策
This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
Fault code | HTTP status | Occurs when |
---|---|---|
steps.jws.GenerationFailed |
401 |
The policy was unable to generate the JWS. |
steps.jws.InsufficientKeyLength |
401 |
For a key less than 32 bytes for the HS256 algorithm |
steps.jws.InvalidClaim |
401 |
For a missing claim or claim mismatch, or a missing header or header mismatch. |
steps.jws.InvalidCurve |
401 |
The curve specified by the key is not valid for the Elliptic Curve algorithm. |
steps.jws.InvalidJsonFormat |
401 |
Invalid JSON found in the JWS header. |
steps.jws.InvalidPayload |
401 |
The JWS payload is invalid. |
steps.jws.InvalidSignature |
401 |
<DetachedContent> is omitted and the JWS has a detached content payload. |
steps.jws.KeyIdMissing |
401 |
The Verify policy uses a JWKS as a source for public keys, but the signed JWS does not
include a kid property in the header. |
steps.jws.KeyParsingFailed |
401 |
The public key could not be parsed from the given key information. |
steps.jws.MissingPayload |
401 |
The JWS payload is missing. |
steps.jws.NoAlgorithmFoundInHeader |
401 |
Occurs when the JWS omits the algorithm header. |
steps.jws.SigningFailed |
401 |
In GenerateJWS, for a key less than the minimum size for the HS384 or HS512 algorithms |
steps.jws.UnknownException |
401 |
An unknown exception occurred. |
steps.jws.WrongKeyType |
401 |
Wrong type of key specified. For example, if you specify an RSA key for an Elliptic Curve algorithm, or a curve key for an RSA algorithm. |
Deployment errors
These errors can occur when you deploy a proxy containing this policy.
Error name | Occurs when |
---|---|
InvalidAlgorithm |
The only valid values are: RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384, ES512,
HS256, HS384, HS512 . |
|
Other possible deployment errors. |
Fault variables
These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors.
Variables | Where | Example |
---|---|---|
fault.name="fault_name" |
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. | fault.name Matches "TokenExpired" |
JWS.failed |
All JWS policies set the same variable in the case of a failure. | jws.JWS-Policy.failed = true |
Example error response
For error handling, the best practice is to trap the errorcode
part of the error
response. Do not rely on the text in the faultstring
, because it could change.
Example fault rule
<FaultRules> <FaultRule name="JWS Policy Errors"> <Step> <Name>JavaScript-1</Name> <Condition>(fault.name Matches "TokenExpired")</Condition> </Step> <Condition>JWS.failed=true</Condition> </FaultRule> </FaultRules>
GenerateJWT 政策
本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。 在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息和处理故障。
运行时错误
政策执行时可能会发生这些错误。
故障代码 | HTTP 状态 | 发生的条件 |
---|---|---|
steps.jwt.AlgorithmInTokenNotPresentInConfiguration |
401 |
验证政策包含多个算法时发生。 |
steps.jwt.AlgorithmMismatch |
401 |
生成政策中指定的算法与验证政策中要求的算法不匹配。指定的算法必须匹配。 |
steps.jwt.EncryptionFailed |
401 |
创建加密 JWT 失败且原因不明 |
steps.jwt.FailedToDecode |
401 |
该政策无法解码 JWT。JWT 可能已损坏。 |
steps.jwt.GenerationFailed |
401 |
该政策无法生成 JWT。 |
steps.jwt.InsufficientKeyLength |
401 |
HS256 算法的密钥小于 32 个字节,HS386 算法的密钥少于 48 个字节,HS512 算法的密钥少于 64 个字节。 |
steps.jwt.InvalidClaim |
401 |
用于缺失声明或声明不匹配,或者缺少标题或标头不匹配的情况。 |
steps.jwt.InvalidConfiguration |
401 |
同时存在 <Algorithm> 和 <Algorithms> 元素。 |
steps.jwt.InvalidCurve |
401 |
密钥指定的曲线对椭圆曲线算法无效。 |
steps.jwt.InvalidJsonFormat |
401 |
标头或载荷中存在无效的 JSON。 |
steps.jwt.InvalidPasswordKey |
401 |
指定的密钥不符合要求。 |
steps.jwt.InvalidPrivateKey |
401 |
指定的密钥不符合要求。 |
steps.jwt.InvalidPublicKey |
401 |
指定的密钥不符合要求。 |
steps.jwt.InvalidSecretKey |
401 |
指定的密钥不符合要求。 |
steps.jwt.InvalidToken |
401 |
当 JWT 签名验证失败时,会发生此错误。 |
steps.jwt.JwtAudienceMismatch |
401 |
目标对象声明未通过令牌验证。 |
steps.jwt.JwtIssuerMismatch |
401 |
颁发者声明未通过令牌验证。 |
steps.jwt.JwtSubjectMismatch |
401 |
主题声明未通过令牌验证。 |
steps.jwt.KeyIdMissing |
401 |
验证政策使用 JWKS 作为公钥的来源,但已签名的 JWT 在标头中不包含的 kid 属性。 |
steps.jwt.KeyParsingFailed |
401 |
无法通过给定密钥信息解析公钥。 |
steps.jwt.NoAlgorithmFoundInHeader |
401 |
JWT 不包含算法标头时发生。 |
steps.jwt.NoMatchingPublicKey |
401 |
验证政策使用 JWKS 作为公钥的来源,但已签名的 JWT 中的 kid 未列在 JWKS 中。 |
steps.jwt.SigningFailed |
401 |
在 GenerateJWT 中,HS384 或 HS512 算法的密钥大小小于下限。 |
steps.jwt.TokenExpired |
401 |
该政策尝试验证过期的令牌。 |
steps.jwt.TokenNotYetValid |
401 |
令牌尚未生效。 |
steps.jwt.UnhandledCriticalHeader |
401 |
验证 JWT 政策在 crit 标头中发现的标头未在 KnownHeaders 中列出。 |
steps.jwt.UnknownException |
401 |
发生未知异常。 |
steps.jwt.WrongKeyType |
401 |
指定的密钥类型不正确。例如,为椭圆曲线算法指定 RSA 密钥,或为 RSA 算法指定了曲线密钥。 |
部署错误
在您部署包含此政策的代理时,可能会发生这些错误。
错误名称 | 原因 | 修复 |
---|---|---|
InvalidNameForAdditionalClaim |
如果 <AdditionalClaims> 元素的子元素 <Claim> 中使用的声明是以下注册名称之一,部署将失败:kid 、iss 、sub 、aud 、iat 、exp 、nbf 、jti 。
|
build |
InvalidTypeForAdditionalClaim |
如果 <AdditionalClaims> 元素的子元素 <Claim> 中使用的声明不是 string 、number 、boolean 或 map 之一,部署将失败。 |
build |
MissingNameForAdditionalClaim |
如果未在 <AdditionalClaims> 元素的子元素 <Claim> 中指定声明的名称,部署将失败。 |
build |
InvalidNameForAdditionalHeader |
当 <AdditionalClaims> 元素的子元素 <Claim> 中使用的声明的名称为 alg 或 typ 时会发生此错误。 |
build |
InvalidTypeForAdditionalHeader |
如果 <AdditionalClaims> 元素的子元素 <Claim> 中使用的声明类型不是 string 、number 、boolean 或 map 之一,部署将失败。
|
build |
InvalidValueOfArrayAttribute |
当 <AdditionalClaims> 元素的子元素 <Claim> 中数组特性的值未设置为 true 或 false 时会发生此错误。 |
build |
InvalidConfigurationForActionAndAlgorithm |
如果 <PrivateKey> 元素与 HS 系列算法搭配使用,或者 <SecretKey> 元素与 RSA Family 算法搭配使用,部署将失败。 |
build |
InvalidValueForElement |
如果 <Algorithm> 元素中指定的值不受支持,部署将失败。 |
build |
MissingConfigurationElement |
如果 <PrivateKey> 元素未与 RSA 系列算法搭配使用,或者 <SecretKey> 元素未与 HS 系列算法搭配使用,则会发生此错误。 |
build |
InvalidKeyConfiguration |
如果未在 <PrivateKey> 或 <SecretKey> 元素中定义子元素 <Value> ,部署将失败。 |
build |
EmptyElementForKeyConfiguration |
如果 <PrivateKey> 或 <SecretKey> 元素的子元素 <Value> 的 ref 特性为空或未指定,部署将失败。 |
build |
InvalidVariableNameForSecret |
如果在 <PrivateKey> 或 <SecretKey> 元素的子元素 <Value> 的 ref 特性中指定的流变量名称不包含专用前缀 (private.) ,则会出现此错误。 |
build |
InvalidSecretInConfig |
如果 <PrivateKey> 或 <SecretKey> 元素的子元素 <Value> 不包含专用前缀 (private.) ,则会出现此错误。 |
build |
InvalidTimeFormat |
如果 <NotBefore> 元素中指定的值未使用支持的格式,则部署将失败。 |
build |
故障变量
发生运行时错误时,系统会设置这些变量。如需了解详情,请参阅您需要了解的有关政策错误的信息。
变量 | 地点 | 示例 |
---|---|---|
fault.name="fault_name" |
fault_name 是故障名称,如上面的运行时错误表中所列。故障名称是故障代码的最后一部分。 | fault.name Matches "InvalidToken" |
JWT.failed |
所有 JWT 政策都将在发生故障时设置同一变量。 | JWT.failed = true |
错误响应示例
处理错误时,最佳做法是捕获错误响应的 errorcode
部分。不要依赖 faultstring
中的文本,因为它可能会发生变化。
故障规则示例
<FaultRules> <FaultRule name="JWT Policy Errors"> <Step> <Name>JavaScript-1</Name> <Condition>(fault.name Matches "InvalidToken")</Condition> </Step> <Condition>JWT.failed=true</Condition> </FaultRule> </FaultRules>
JavaCallout 政策
This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
Fault code | HTTP status | Cause | Fix |
---|---|---|---|
steps.javacallout.ExecutionError |
500 |
Occurs when Java code throws an exception or returns null during the execution of a JavaCallout policy . |
build |
Deployment errors
These errors can occur when the proxy containing the policy is deployed.
Error name | Fault string | HTTP status | Occurs when |
---|---|---|---|
ResourceDoesNotExist |
Resource with name
[name] and type [type] does not exist |
N/A | The file specified in the <ResourceURL> element does not exist. |
JavaCalloutInstantiationFailed |
Failed to instantiate the JavaCallout Class [classname] |
N/A | The class file specified in the <ClassName> element is not in the
jar. |
IncompatibleJavaVersion |
Failed to load java class [classname] definition due to - [reason] |
N/A | See fault string. Supported Java versions include: Oracle JDK 7/8 and OpenJDK 7/8 |
JavaClassNotFoundInJavaResource |
Failed to find the ClassName in java resource [jar_name] -
[class_name] |
N/A | See fault string. |
JavaClassDefinitionNotFound |
Failed to load java class [class_name] definition due to - [reason] |
N/A | See fault string. |
NoAppropriateConstructor |
No appropriate constructor found in JavaCallout class [class_name] |
N/A | See fault string. |
NoResourceForURL |
Could not locate a resource with URL [string] |
N/A | See fault string. |
Fault variables
These variables are set when this policy triggers an error. For more information, see What you need to know about policy errors.
Variables | Where | Example |
---|---|---|
fault.name="fault_name" |
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. | fault.name Matches "ExecutionError" |
javacallout.policy_name.failed |
policy_name is the user-specified name of the policy that threw the fault. | javacallout.JC-GetUserData.failed = true |
Example error response
{ "fault":{ "faultstring":"Failed to execute JavaCallout. [policy_name]", "detail":{ "errorcode":"javacallout.ExecutionError" } } }
Example fault rule
<FaultRule name="JavaCalloutFailed"> <Step> <Name>AM-JavaCalloutError</Name> </Step> <Condition>(fault.name Matches "ExecutionError") </Condition> </FaultRule>
JavaScript 政策
This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
Fault code | HTTP status | Cause | Fix |
---|---|---|---|
steps.javascript.ScriptExecutionFailed |
500 |
The JavaScript policy can throw many different types of ScriptExecutionFailed errors. Commonly
seen types of errors include
RangeError,
ReferenceError,
SyntaxError,
TypeError, and
URIError. |
build |
steps.javascript.ScriptExecutionFailedLineNumber |
500 |
An error occurred in the JavaScript code. See the fault string for details. |
N/A |
steps.javascript.ScriptSecurityError |
500 |
A security error occurred when the JavaScript executed. See the fault string for
details. |
N/A |
Deployment errors
These errors can occur when you deploy a proxy containing this policy.
Error name | Cause | Fix |
---|---|---|
InvalidResourceUrlFormat |
If the format of the resource URL specified within the <ResourceURL> or the <IncludeURL> element of the JavaScript policy is invalid, then the deployment of the API proxy fails. |
build |
InvalidResourceUrlReference |
If the <ResourceURL> or the <IncludeURL> elements
refer to a JavaScript file that does not exist, then the deployment of the API proxy fails.
The referenced source file must exist either the API proxy, environment, or organization level. |
build |
WrongResourceType |
This error occurs during deployment if the <ResourceURL> or the <IncludeURL>
elements of the JavaScript policy refer to any resource type other than jsc (JavaScript file). |
build |
NoResourceURLOrSource |
The deployment of the JavaScript policy can fail with this error if the <ResourceURL>
element is not declared or if the resource URL is not defined within this element.
<ResourceURL> element is a mandatory element. Or, The <IncludeURL> element is declared
but the resource URL is not defined within this element. The <IncludeURL> element is optional
but if declared, the resource URL must be specified within the <IncludeURL> element. |
build |
Fault variables
These variables are set when this policy triggers an error at runtime. For more information, see What you need to know about policy errors.
Variables | Where | Example |
---|---|---|
fault.name="fault_name" |
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. | fault.name Matches "ScriptExecutionFailed" |
javascript.policy_name.failed |
policy_name is the user-specified name of the policy that threw the fault. | javascript.JavaScript-1.failed = true |
Example error response
{ "fault": { "faultstring": "Execution of SetResponse failed with error: Javascript runtime error: "ReferenceError: "status" is not defined. (setresponse.js:6)\"", "detail": { "errorcode": "steps.javascript.ScriptExecutionFailed" } } }
Example fault rule
<FaultRule name="JavaScript Policy Faults"> <Step> <Name>AM-CustomErrorResponse</Name> <Condition>(fault.name Matches "ScriptExecutionFailed") </Condition> </Step> <Condition>(javascript.JavaScript-1.failed = true) </Condition> </FaultRule>
JSONThreatProtection 政策
本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。 在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息和处理故障。
运行时错误
政策执行时可能会发生这些错误。
故障代码 | HTTP 状态 | 原因 | 修复 |
---|---|---|---|
steps.jsonthreatprotection.ExecutionFailed |
500 |
JSONThreatProtection 政策可能会抛出许多不同类型的 ExecutionFailed 错误。其中大多数错误会在超出政策中设置的特定阈值时发生。这些类型的错误包括:对象条目名称长度、对象条目计数、数组元素计数、容器深度、字符串字符串值长度。当载荷包含无效的 JSON 对象时,也会发生此错误。 |
build |
steps.jsonthreatprotection.SourceUnavailable |
500 |
如果在 <Source> 元素中指定的消息变量为以下任意一项,就会出现此错误:
|
build |
steps.jsonthreatprotection.NonMessageVariable |
500 |
如果将 <Source> 元素设置为非消息类型的变量,则会发生此错误。
|
build |
部署错误
无。
故障变量
此政策触发错误时设置这些变量。如需了解详情,请参阅您需要了解的有关政策错误的信息。
变量 | 位置 | 示例 |
---|---|---|
fault.name="fault_name" |
fault_name 是故障名称,如上面的运行时错误表中所列。故障名称是故障代码的最后一部分。 | fault.name Matches "SourceUnavailable" |
jsonattack.policy_name.failed |
policy_name 是抛出故障的政策的用户指定名称。 | jsonattack.JTP-SecureRequest.failed = true |
错误响应示例
{ "fault": { "faultstring": "JSONThreatProtection[JPT-SecureRequest]: Execution failed. reason: JSONThreatProtection[JTP-SecureRequest]: Exceeded object entry name length at line 2", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
故障规则示例
<FaultRule name="JSONThreatProtection Policy Faults">
<Step>
<Name>AM-CustomErrorResponse</Name>
<Condition>(fault.name Matches "ExecutionFailed") </Condition>
</Step>
<Condition>(jsonattack.JPT-SecureRequest.failed = true) </Condition>
</FaultRule>
JSONThreatProtection 政策类型定义了以下错误代码:
JSONtoXML 政策
This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
Fault code | HTTP status | Cause | Fix |
---|---|---|---|
steps.jsontoxml.ExecutionFailed |
500 |
The input payload (JSON) is empty or the input (JSON) passed to JSON to XML policy is invalid or malformed. | build |
steps.jsontoxml.InCompatibleTypes |
500 |
This error occurs if the type of the variable defined in the <Source> element and
the <OutputVariable> element are not the same. It is mandatory that the type of the
variables contained within the <Source> element and the <OutputVariable> element
matches. The valid types are message and string . |
build |
steps.jsontoxml.InvalidSourceType |
500 |
This error occurs if the type of the variable used to define the <Source> element
is invalid. The valid types of variable are message and string . |
build |
steps.jsontoxml.OutputVariableIsNotAvailable |
500 |
This error occurs if the variable specified in the <Source> element of the JSON to
XML Policy is of type string and the <OutputVariable> element is not defined.
The <OutputVariable> element is mandatory when the variable defined in the <Source>
element is of type string. |
build |
steps.jsontoxml.SourceUnavailable |
500 |
This error occurs if the message
variable specified in the <Source> element of the JSON to XML policy is either:
|
build |
Deployment errors
None.
Fault variables
These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors.
Variables | Where | Example |
---|---|---|
fault.name="fault_name" |
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. | fault.name Matches "SourceUnavailable" |
jsontoxml.policy_name.failed |
policy_name is the user-specified name of the policy that threw the fault. | jsontoxml.JSON-to-XML-1.failed = true |
Example error response
{ "fault": { "faultstring": "JSONToXML[JSON-to-XML-1]: Source xyz is not available", "detail": { "errorcode": "steps.json2xml.SourceUnavailable" } } }
Example fault rule
<FaultRule name="JSON To XML Faults"> <Step> <Name>AM-SourceUnavailableMessage</Name> <Condition>(fault.name Matches "SourceUnavailable") </Condition> </Step> <Step> <Name>AM-BadJSON</Name> <Condition>(fault.name = "ExecutionFailed")</Condition> </Step> <Condition>(jsontoxml.JSON-to-XML-1.failed = true) </Condition> </FaultRule>
KeyValueMapOperations 政策
This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
Fault code | HTTP status | Cause | Fix |
---|---|---|---|
steps.keyvaluemapoperations.UnsupportedOperationException |
500 |
This error occurs if the |
build |
Deployment errors
These errors can occur when you deploy a proxy containing this policy.
Error name | Cause | Fix |
---|---|---|
InvalidIndex |
If the index attribute specified in the <Get> element of KeyValueMapOperations policy is
zero or a negative number, then the deployment of the API proxy fails. The index starts from
1 , so an index of zero or negative integer is considered as invalid.
|
build |
KeyIsMissing |
This error occurs if the <Key> element is completely missing or <Parameter> element is
missing within <Key> element underneath the <Entry> of the <InitialEntries> element
of the KeyValueMapOperations policy.
|
build |
ValueIsMissing |
This error occurs if the <Value> element is missing underneath the <Entry> element of
the <InitialEntries> element of the KeyValueMapOperations policy. |
build |
MessageLogging 政策
This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
Fault code | HTTP status | Cause |
---|---|---|
steps.messagelogging.StepDefinitionExecutionFailed |
500 |
See fault string. |
steps.messagelogging.InvalidGoogleCloudLogName |
500 |
This error is thrown when the LogName does not evaluate to the valid
format of projects/{project}/logs/{logid}. |
steps.messagelogging.InvalidJsonMessage |
500 |
This error is thrown when the contentType attributes value has been
chosen as application/json but the actual message value is not a valid
JSON string, |
steps.messagelogging.TooManyPendingLoggingRequest |
500 |
This error is thrown when there are more than 2500 pending requests that are yet to be written to Cloud Logging. The 2500 limit is for each Apigee runtime pod. For example, if the traffic is distributed over two instances of Apigee runtime pods, the effective limit is 5000 requests. |
Deployment errors
These errors can occur when you deploy a proxy containing this policy.
Error name | Cause | Fix |
---|---|---|
InvalidProtocol |
The deployment of the MessageLogging policy can fail with this error if the protocol
specified within the <Protocol> element is not valid. The valid protocols are TCP and UDP.
For sending syslog messages over TLS/SSL, only TCP is supported. |
build |
InvalidPort |
The deployment of the MessageLogging policy can fail with this error if the port number
is not specified within the <Port> element or if it is not valid. The port number must be
an integer greater than zero. |
build |
Fault variables
These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors.
Variables | Where | Example |
---|---|---|
fault.name="fault_name" |
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. | fault.name Matches "StepDefinitionExecutionFailed" |
messagelogging.policy_name.failed |
policy_name is the user-specified name of the policy that threw the fault. | messagelogging.ML-LogMessages.failed = true |
Example error response
{ "fault":{ "detail":{ "errorcode":"steps.messagelogging.StepDefinitionExecutionFailed" }, "faultstring":"Execution failed" } }
Example fault rule
<FaultRule name="MessageLogging"> <Step> <Name>ML-LogMessages</Name> <Condition>(fault.name Matches "StepDefinitionExecutionFailed") </Condition> </Step> <Condition>(messagelogging.ML-LogMessages.failed = true) </Condition> </FaultRule>
OASValidation 政策
本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息和处理故障。
运行时错误
政策执行时可能会发生这些错误。
故障代码 | HTTP 状态 | 原因 |
---|---|---|
steps.oasvalidation.Failed |
400 |
无法根据提供的 OpenAPI 规范验证请求消息正文。 |
steps.oasvalidation.Failed |
500 |
无法根据提供的 OpenAPI 规范验证响应消息正文。 |
steps.oasvalidation.SourceMessageNotAvailable |
500 |
在政策的 |
steps.oasvalidation.NonMessageVariable |
500 |
|
部署错误
在您部署包含此政策的代理时,可能会发生这些错误。
错误名称 | 原因 | |
---|---|---|
ResourceDoesNotExist |
<OASResource> 元素中引用的 OpenAPI 规范不存在。 |
|
ResourceCompileFailed |
部署中包含的 OpenAPI 规范包含会阻止其编译的错误。此错误通常表示该规范不是格式正确的 OpenAPI 规范 3.0。 | |
BadResourceURL |
无法处理 <OASResource> 元素中引用的 OpenAPI 规范。如果文件不是 JSON 或 YAML 文件,或未正确指定文件网址,则会发生这种情况。 |
故障变量
当此政策在运行时触发错误时,将设置这些变量。如需了解详情,请参阅您需要了解的有关政策错误的信息。
变量 | 说明 | 示例 |
---|---|---|
fault.category |
故障的类别。如果政策拒绝请求,此变量将始终保持 Step 。 |
fault.category = "Step" |
fault.name |
故障的名称,如上面的运行时错误表中所列。故障名称是故障代码的最后一部分。 | fault.name Matches "ResourceDoesNotExist" |
fault.reason |
故障的原因。它是人类可读的字符串,说明错误的原因。 | OASValidation OAS-1 with resource "oas://my-spec1.yaml": failed with reason: "[ERROR - POST operation not allowed on path '/persons/13'.: []]" |
fault.subcategory |
故障的子类别。如果政策拒绝请求,此字段将始终保留 OASValidationFailure 。 |
fault.subcategory = "OASValidationFailure" |
OASValidation.policy_name.failed |
policy_name 是抛出故障的政策的用户指定名称。 | OASValidation.myoaspolicy.failed = true |
PopulateCache 政策
本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息和处理故障。
运行时错误
政策执行时可能会发生这些错误。
故障代码 | HTTP Status | 发生的条件 |
---|---|---|
policies.populatecache.EntryCannotBeCached |
500 |
条目无法缓存。要缓存的消息对象不是 Serializable 类的一个实例。 |
部署错误
在您部署包含此政策的代理时,可能会发生这些错误。
错误名称 | 原因 | 修复 |
---|---|---|
InvalidCacheResourceReference |
如果将 PopulateCache 政策中的 <CacheResource> 元素设置为部署 API 代理的环境中不存在的名称,则会出现此错误。 |
build |
CacheNotFound |
<CacheResource> 元素中指定的缓存不存在。 |
build |
故障变量
此政策触发错误时设置这些变量。如需了解详情,请参阅您需要了解的有关政策错误的信息。
变量 | 位置 | 示例 |
---|---|---|
fault.name="fault_name" |
fault_name 是故障名称,如上面的运行时错误表中所列。故障名称是故障代码的最后一部分。 | fault.name = "EntryCannotBeCached" |
populatecache.policy_name.failed |
policy_name 是抛出故障的政策的用户指定名称。 | populatecache.POP-CACHE-1.failed = true |
错误响应示例
{ "fault": { "faultstring": "[entry] can not be cached. Only serializable entries are cached.", "detail": { "errorcode": "steps.populatecache.EntryCannotBeCached" } } }
故障规则示例
<FaultRule name="Populate Cache Fault"> <Step> <Name>AM-EntryCannotBeCached</Name> <Condition>(fault.name Matches "EntryCannotBeCached") </Condition> </Step> <Condition>(populatecache.POP-CACHE-1.failed = true) </Condition> </FaultRule>
LookupCache 政策
本部分介绍当此政策触发错误时所设置的错误消息和流变量。在为代理开发故障规则时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息和处理故障。
错误代码前缀
无
运行时错误
此政策不会抛出任何运行时错误。
部署错误
在您部署包含此政策的代理时,可能会发生这些错误。
错误名称 | 原因 | 修复 |
---|---|---|
InvalidCacheResourceReference |
如果将 <CacheResource> 元素设置为部署 API 代理的环境中不存在的名称,就会发生此错误。 |
build |
InvalidTimeout |
如果 <CacheLookupTimeoutInSeconds> 元素设置为负数,则 API 代理的部署将失败。 |
build |
CacheNotFound |
如果尚未在特定的消息处理器组件上创建错误消息中提及的特定缓存,就会发生此错误。 | build |
故障变量
无
错误响应示例
无
InvalidateCache 政策
This section describes the error messages and flow variables that are set when this policy triggers an error. This information is important to know if you are developing fault rules for a proxy. To learn more, see What you need to know about policy errors and Handling faults.
Error code prefix
N/A
Runtime errors
This policy does not throw any runtime errors.
Deployment errors
These errors can occur when you deploy a proxy containing this policy.
Error name | Cause | Fix |
---|---|---|
InvalidCacheResourceReference |
This error occurs if the <CacheResource> element in the InvalidateCache policy is set
to a name that does not exist in the environment where the API proxy is being deployed. |
build |
CacheNotFound |
This error occurs if the specific cache mentioned in the error message has not been created on a specific Message Processor component. | build |
Fault variables
N/A
Example error response
N/A
ResponseCache 政策
本部分介绍当此政策触发错误时所设置的错误消息和流变量。在为代理开发故障规则时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息和处理故障。
错误代码前缀
不适用
运行时错误
此政策不会抛出任何运行时错误。
部署错误
在您部署包含此政策的代理时,可能会发生这些错误。
错误名称 | 原因 | 修复 |
---|---|---|
InvalidTimeout |
如果 ResponseCache 政策的 <CacheLookupTimeoutInSeconds> 元素设置为负数,则 API 代理的部署将会失败。 |
build |
InvalidCacheResourceReference |
如果将 ResponseCache 政策中的 <CacheResource> 元素设置为部署 API 代理的环境中不存在的名称,则会出现此错误。 |
build |
ResponseCacheStepAttachmentNotAllowedReq |
如果将同一 ResponseCache 政策附加到 API 代理的任何流中的多个请求路径,则会出现此错误。 |
build |
ResponseCacheStepAttachmentNotAllowedResp |
如果将同一 ResponseCache 政策附加到 API 代理的任何流中的多个响应路径,则会出现此错误。 |
build |
InvalidMessagePatternForErrorCode |
如果 ResponseCache 政策中的 <SkipCacheLookup> 或 <SkipCachePopulation> 元素包含无效条件,则会出现此错误。 |
build |
CacheNotFound |
如果尚未在特定的消息处理器组件上创建错误消息中提及的特定缓存,就会发生此错误。 | build |
故障变量
不适用
错误响应示例
不适用
OAuthV2 政策
This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
Fault code | HTTP status | Cause | Thrown by operations |
---|---|---|---|
steps.oauth.v2.access_token_expired |
401 |
The access token is expired. |
|
steps.oauth.v2.access_token_not_approved |
401 |
The access token was revoked. | VerifyAccessToken |
steps.oauth.v2.apiproduct_doesnot_exist |
401 |
The requested API product does not exist in any of the API products associated with the access token. | VerifyAccessToken |
steps.oauth.v2.FailedToResolveAccessToken |
500 |
The policy expected to find an access token in a variable specified in the
<AccessToken> element, but the variable could not be resolved. |
GenerateAccessToken |
steps.oauth.v2.FailedToResolveAuthorizationCode |
500 |
The policy expected to find an authorization code in a variable specified in the
<Code> element, but the variable could not be resolved. |
GenerateAuthorizationCode |
steps.oauth.v2.FailedToResolveClientId |
500 |
The policy expected to find the Client ID in a variable specified in the
<ClientId> element, but the variable could not be resolved. |
GenerateAccessToken GenerateAuthorizationCode GenerateAccessTokenImplicitGrant RefreshAccessToken |
steps.oauth.v2.FailedToResolveRefreshToken |
500 |
The policy expected to find a refresh token in a variable specified in the
<RefreshToken> element, but the variable could not be resolved. |
RefreshAccessToken |
steps.oauth.v2.FailedToResolveToken |
500 |
The policy expected to find a token in a variable specified in the
<Tokens> element, but the variable could not be resolved. |
|
steps.oauth.v2.InsufficientScope |
403 | The access token presented in the request has a scope that does not match the scope specified in the verify access token policy. To learn about scope, see Working with OAuth2 scopes. | VerifyAccessToken |
steps.oauth.v2.invalid_client |
401 |
This error name is returned when the |
GenerateAccessToken RefreshAccessToken |
steps.oauth.v2.InvalidRequest |
400 | This error name is used for multiple different kinds of errors, typically for missing
or incorrect parameters sent in the request. If <GenerateResponse> is
set to false , use fault variables (described below) to retrieve details about
the error, such as the fault name and cause. |
GenerateAccessToken GenerateAuthorizationCode GenerateAccessTokenImplicitGrant RefreshAccessToken |
steps.oauth.v2.InvalidAccessToken |
401 |
The authorization header does not have the word Bearer , which is required. For
example: Authorization: Bearer your_access_token |
VerifyAccessToken |
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound |
401 |
The currently executing API proxy or operation is not in the Product associated with the access token. Tips: Be sure that the product associated with the access token is configured correctly. For example, if you use wildcards in resource paths, be sure the wildcards are being used correctly. See Managing API products for details. See also Oauth2.0 Access Token Verification throws "Invalid API call as no apiproduct match found" error for more guidance on causes for this error. |
VerifyAccessToken |
steps.oauth.v2.InvalidClientIdentifier |
500 |
This error name is returned when the |
|
steps.oauth.v2.InvalidParameter |
500 |
The policy must specify either an access token or an authorization code, but not both. | GenerateAuthorizationCode GenerateAccessTokenImplicitGrant |
steps.oauth.v2.InvalidTokenType |
500 |
The <Tokens>/<Token> element requires you to specify the token
type (for example, refreshtoken ). If the client passes the wrong type, this
error is thrown. |
ValidateToken InvalidateToken |
steps.oauth.v2.MissingParameter |
500 |
The response type is token , but no grant types are specified. |
GenerateAuthorizationCode GenerateAccessTokenImplicitGrant |
steps.oauth.v2.UnSupportedGrantType |
500 |
The client specified a grant type that is unsupported by the policy (not listed in the
|
GenerateAccessToken GenerateAuthorizationCode GenerateAccessTokenImplicitGrant RefreshAccessToken |
JWT token-specific runtime errors
Runtime error codes and descriptions for JWT auth token flows depend on the OAuth2 flow context:
- If the flow context is token generation or refresh, see Error codes for JWT token generation and refresh flows below.
- For the token verification flow, see Error codes for token verification flows below.
Error codes for JWT token generation and refresh flows
For OAuth2 flows that generate or refresh JWT tokens, error responses adhere to the error responses specified in RFC6749. For details, see Section 5.2 Error Response.
Error codes for the token verification flow
The error codes listed in the following table apply to VerifyAccessToken operation only.
Fault code | HTTP status | Cause | Thrown by operations |
---|---|---|---|
oauth.v2.JWTSigningFailed |
401 |
The policy was unable to sign the JWT. |
|
oauth.v2.InvalidValueForJWTAlgorithm |
401 |
This occurs when the algorithm is not present in the JWT access token or when the value is not supported. |
|
oauth.v2.InsufficientKeyLength |
401 |
In Generation of JWT, for a key less than the minimum size for the HS384 or HS512 algorithms |
|
oauth.v2.JWTAlgorithmMismatch |
401 |
The algorithm specified in the Generate policy did not match the one expected in the Verify policy. The algorithms specified must match. |
|
oauth.v2.JWTDecodingFailed |
401 |
The policy was unable to decode the JWT. The JWT is possibly corrupted. |
|
oauth.v2.MissingMandatoryClaimsInJWT |
401 |
Occurs when the required claims are not present in the Jwt Access token |
|
oauth.v2.InvalidJWTSignature |
401 |
This occurs when the signature of JWT access token could not be verified or when the signature is invalid. |
|
oauth.v2.InvalidTypeInJWTHeader |
401 |
Occurs when the JWT's type is not at+Jwt |
|
Deployment errors
These errors can occur when you deploy a proxy containing this policy.
Error name | Cause |
---|---|
InvalidValueForExpiresIn |
For the |
InvalidValueForRefreshTokenExpiresIn |
For the <RefreshTokenExpiresIn> element, valid values are positive
integers. |
InvalidGrantType |
An invalid grant type is specified in the <SupportedGrantTypes>
element. See the policy reference for a list of valid types. |
ExpiresInNotApplicableForOperation |
Be sure that the operations specified in the <Operations> element support
expiration. For example, the VerifyToken operation does not. |
RefreshTokenExpiresInNotApplicableForOperation |
Be sure that the operations specified in the <Operations> element support refresh
token expiration. For example, the VerifyToken operation does not. |
GrantTypesNotApplicableForOperation |
Be sure that the grant types specified in <SupportedGrantTypes> are supported for
the specified operation. |
OperationRequired |
You must specify an operation in this policy using the |
InvalidOperation |
You must specify a valid operation in this policy using the
|
TokenValueRequired |
You must specify a token <Token> value in the
<Tokens> element. |
JWT token-specific deployment errors
These deployment errors are specific to policies that use JWT token operations.
Error name | Cause |
---|---|
InvalidValueForAlgorithm |
The algorithm specified in the <Algorithm> element is not
among the list of available algorithms or is not present. |
MissingKeyConfiguration |
The required <SecretKey> , <PrivateKey> , or
<PublicKey> elements are missing, depending on which algorithm is used. |
EmptyValueElementForKeyConfiguration |
The required child element <Value> is not defined in the
<PrivateKey> , <PublicKey> , or <SecretKey> elements |
InvalidKeyConfiguration |
The <PrivateKey> element is not used with RSA family algorithms or the <SecretKey>
element is not used with HS Family algorithms. |
EmptyRefAttributeForKeyconfiguration |
The ref attribute of the child element <Value> of
the <PrivateKey> , <PublicKey> or <SecretKey> elements is empty. |
InvalidVariableNameForKey |
The flow variable name specified in the ref attribute of the child
element <Value> of the <PrivateKey> ,
<PublicKey> or <SecretKey> elements does not
contain the private prefix. |
Fault variables
These variables are set when this policy triggers an error at runtime.
Variables | Where | Example |
---|---|---|
fault.name="fault_name" |
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. | fault.name = "InvalidRequest" |
oauthV2.policy_name.failed |
policy_name is the user-specified name of the policy that threw the fault. | oauthV2.GenerateAccesstoken.failed = true |
oauthV2.policy_name.fault.name |
policy_name is the user-specified name of the policy that threw the fault. | oauthV2.GenerateAccesstoken.fault.name = InvalidRequest
|
oauthV2.policy_name.fault.cause |
policy_name is the user-specified name of the policy that threw the fault. | oauthV2.GenerateAccesstoken.cause = Required param : grant_type |
Example error response
These responses are sent back to the client if the <GenerateResponse>
element is true.
If <GenerateResponse>
is true, the policy returns errors
in this format for operations that generate tokens and codes. For a complete list, see see
OAuth HTTP error
response reference.
{"ErrorCode" : "invalid_client", "Error" :"ClientId is Invalid"}
If <GenerateResponse>
is true, the policy returns errors
in this format for verify and validate operations. For a complete list, see see OAuth HTTP error
response reference.
{ { "fault":{ "faultstring":"Invalid Access Token", "detail":{ "errorcode":"keymanagement.service.invalid_access_token" } } }
Example fault rule
<FaultRule name="OAuthV2 Faults"> <Step> <Name>AM-InvalidClientResponse</Name> <Condition>(fault.name = "invalid_client") OR (fault.name = "InvalidClientIdentifier")</Condition> </Step> <Step> <Name>AM-InvalidTokenResponse</Name> <Condition>(fault.name = "invalid_access_token")</Condition> </Step> <Condition>(oauthV2.failed = true) </Condition> </FaultRule>
GetOAuthV2Info 政策
This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes. The error names shown below are the strings
that are assigned to the fault.name
variable when an error occurs. See the Fault
variables section below for more details.
Fault code | HTTP status | Cause |
---|---|---|
steps.oauth.v2.access_token_expired |
500 |
The access token sent to the policy is expired. |
steps.oauth.v2.authorization_code_expired |
500 |
The authorization code sent to the policy is expired. |
steps.oauth.v2.invalid_access_token |
500 |
The access token sent to the policy is invalid. |
steps.oauth.v2.invalid_client-invalid_client_id |
500 |
The client ID sent to the policy is invalid. |
steps.oauth.v2.invalid_refresh_token |
500 |
The refresh token sent to the policy is invalid. |
steps.oauth.v2.invalid_request-authorization_code_invalid |
500 |
The authorization code sent to the policy is invalid. |
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound |
401 | Please see Oauth2.0 Access Token Verification throws "Invalid API call as no apiproduct match found" error for information about troubleshooting this error. |
steps.oauth.v2.refresh_token_expired |
500 |
The refresh token sent to the policy is expired. |
Deployment errors
Refer to the message reported in the UI for information about deployment errors.
Fault variables
These variables are set when this policy triggers an error at runtime.
Variables | Where | Example |
---|---|---|
fault.name="fault_name" |
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. | fault.name Matches "IPDeniedAccess" |
oauthV2.policy_name.failed |
policy_name is the user-specified name of the policy that threw the fault. | oauthV2.GetTokenInfo.failed = true |
oauthV2.policy_name.fault.name |
policy_name is the user-specified name of the policy that threw the fault. | oauthV2.GetToKenInfo.fault.name = invalid_client-invalid_client_id |
oauthV2.policy_name.fault.cause |
policy_name is the user-specified name of the policy that threw the fault. | oauthV2.GetTokenInfo.cause = ClientID is Invalid |
Example error response
{ "fault":{ "faultstring":"ClientId is Invalid", "detail":{ "errorcode":"keymanagement.service.invalid_client-invalid_client_id" } } }
Example fault rule
<FaultRule name="OAuthV2 Faults"> <Step> <Name>AM-InvalidClientIdResponse</Name> </Step> <Condition>(fault.name = "invalid_client-invalid_client_id")</Condition> </FaultRule>
SetOAuthV2Info 政策
本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息和处理故障。
运行时错误
政策执行时可能会发生这些错误。
故障代码 | HTTP 状态 | 原因 |
---|---|---|
steps.oauth.v2.access_token_expired |
500 |
发送到该政策的访问令牌已过期。 |
steps.oauth.v2.invalid_access_token |
500 |
发送到该政策的访问令牌无效。 |
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound |
401 |
如需了解有关如何排查此错误的信息,请参阅 Oauth2.0 访问令牌验证抛出的:“由于未找到 apiproduct 匹配项,API 调用无效”的错误。 |
部署错误
如需了解部署错误,请参阅界面中报告的消息。
故障变量
当此政策在运行时触发错误时,将设置这些变量。
变量 | 地点 | 示例 |
---|---|---|
fault.name="fault_name" |
fault_name 是故障名称,如上面的运行时错误表中所列。故障名称是故障代码的最后一部分。 | fault.name = "invalid_access_token" |
oauthV2.policy_name.failed |
policy_name 是抛出故障的政策的用户指定名称。 | oauthV2.SetTokenInfo.failed = true |
oauthV2.policy_name.fault.name |
policy_name 是抛出故障的政策的用户指定名称。 | oauthV2.SetTokenInfo.fault.name = invalid_access_token |
oauthv2.policy_name.fault.cause |
policy_name 是抛出故障的政策的用户指定名称。 | oauthV2.SetTokenInfo.cause = Invalid Access Token |
错误响应示例
{ "fault": { "faultstring": "Invalid Access Token", "detail": { "errorcode": "keymanagement.service.invalid_access_token" } } }
故障规则示例
<FaultRule name=SetOAuthV2Info Faults"> <Step> <Name>AM-InvalidTokenResponse</Name> <Condition>(fault.name = "invalid_access_token")</Condition> </Step> <Condition>(oauthV2.failed = true) </Condition> </FaultRule>
DeleteOAuthV2Info 政策
This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
Fault code | HTTP status | Cause |
---|---|---|
steps.oauth.v2.invalid_access_token |
401 |
The access token sent to the policy is invalid. |
steps.oauth.v2.invalid_request-authorization_code_invalid |
401 |
The authorization code sent to the policy is invalid. |
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound |
401 |
Please see Oauth2.0 Access Token Verification throws "Invalid API call as no apiproduct match found" error for information about troubleshooting this error. |
Deployment errors
Refer to the message reported in the UI for information about deployment errors.
Fault variables
These variables are set when this policy triggers an error at runtime.
Variables | Where | Example |
---|---|---|
fault.name="fault_name" |
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. | fault.name = "invalid_access_token" |
oauthV2.policy_name.failed |
policy_name is the user-specified name of the policy that threw the fault. | oauthV2.DeleteTokenInfo.failed = true |
oauthV2.policy_name.fault.name |
policy_name is the user-specified name of the policy that threw the fault. | oauthV2.DeleteTokenInfo.fault.name = invalid_access_token |
oauthv2.policy_name.fault.cause |
policy_name is the user-specified name of the policy that threw the fault. | oauthV2.DeleteTokenInfo.cause = Invalid Access Token |
Example error response
{ "fault": { "faultstring": "Invalid Access Token", "detail": { "errorcode": "keymanagement.service.invalid_access_token" } } }
Example fault rule
<faultrule name="VariableOfNonMsgType"></faultrule><FaultRule name="DeleteOAuthV2Info_Faults"> <Step> <Name>AM-InvalidTokenResponse</Name> </Step> <Condition>(fault.name = "invalid_access_token")</Condition> </FaultRule>
PythonScript 政策
This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
Fault code | HTTP status | Cause | Fix |
---|---|---|---|
steps.script.ScriptEvaluationFailed |
500 |
The PythonScript policy can throw several different types of ScriptExecutionFailed errors. Commonly seen types of errors include NameError and ZeroDivisionError. | build |
Deployment errors
These errors can occur when you deploy a proxy containing this policy.
Error name | Cause | Fix |
---|---|---|
InvalidResourceUrlFormat |
If the format of the resource URL specified within the <ResourceURL> or
the <IncludeURL> element of the PythonScript policy is invalid, then the deployment of the API proxy fails. |
build |
InvalidResourceUrlReference |
If the <ResourceURL> or the <IncludeURL> elements
refer to a PythonScript file that does not exist, then the deployment of the API proxy fails.
The referenced source file must exist either the API proxy, environment, or organization level. |
build |
Fault variables
These variables are set when this policy triggers an error at runtime. For more information, see What you need to know about policy errors.
Variables | Where | Example |
---|---|---|
fault.name="fault_name" |
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. | fault.name Matches "ScriptExecutionFailed" |
pythonscript.policy_name.failed |
policy_name is the user-specified name of the policy that threw the fault. | pythonscript.PythonScript-1.failed = true |
Example error response
{ "fault": { "faultstring": "Execution of SetResponse failed with error: Pythonscript runtime error: "ReferenceError: "status" is not defined.\"", "detail": { "errorcode": "steps.script.ScriptExecutionFailed" } } }
Example fault rule
<FaultRule name="PythonScript Policy Faults"> <Step> <Name>AM-CustomErrorResponse</Name> <Condition>(fault.name Matches "ScriptExecutionFailed") </Condition> </Step> <Condition>(pythonscript.PythonScript-1.failed = true) </Condition> </FaultRule>
配额政策
本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息和处理故障。
运行时错误
政策执行时可能会发生这些错误。
故障代码 | HTTP 状态 | 原因 | 修复 |
---|---|---|---|
policies.ratelimit.FailedToResolveQuotaIntervalReference |
500 |
如果未在 Quota 政策中定义 <Interval> 元素,就会出现此错误。此元素是必需的,用于指定配额所适用的时间间隔。时间间隔可以是使用 <TimeUnit> 元素定义的分钟、小时、天、周或月。 |
build |
policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference |
500 |
如果未在 Quota 政策中定义 <TimeUnit> 元素,就会出现此错误。此元素是必需的,用于指定配额所适用的时间单位。时间间隔可以是分钟、小时、天、周或月。 |
build |
policies.ratelimit.InvalidMessageWeight |
500 |
如果通过流变量指定的 <MessageWeight> 元素的值无效(非整数值),就会出现此错误。 |
build |
policies.ratelimit.QuotaViolation |
500 |
超过配额限制。 | 不适用 |
部署错误
错误名称 | 原因 | 修复 |
---|---|---|
InvalidQuotaInterval |
如果 <Interval> 元素中指定的配额间隔不是整数,则 API 代理的部署将失败。例如,如果在 <Interval> 元素中指定的配额间隔为 0.1,则 API 代理的部署将失败。 |
build |
InvalidQuotaTimeUnit |
如果 <TimeUnit> 元素中指定的时间单位不受支持,则 API 代理的部署将失败。支持的时间单位包括 minute 、hour 、day 、week 和 month 。 |
build |
InvalidQuotaType |
如果 <Quota> 元素中的 type 属性指定的配额类型无效,则 API 代理的部署将失败。支持的配额类型包括 default 、calendar 、flexi 和 rollingwindow 。 |
build |
InvalidStartTime |
如果 <StartTime> 元素中指定的时间格式无效,则 API 代理的部署将失败。有效格式为 yyyy-MM-dd HH:mm:ss ,这是 ISO 8601 日期和时间格式。例如,如果在 <StartTime> 元素中指定的时间为 7-16-2017 12:00:00 ,则 API 代理的部署将失败。 |
build |
StartTimeNotSupported |
如果指定的 <StartTime> 元素的配额类型不是 calendar 类型,则 API 代理的部署将失败。仅 calendar 配额类型支持 <StartTime> 元素。例如,如果在 <Quota> 元素中将 type 属性设置为 flexi 或 rolling window ,则 API 代理的部署将失败。 |
build |
InvalidTimeUnitForDistributedQuota |
如果将 <Distributed> 元素设置为 true 且将 <TimeUnit> 元素设置为 second ,则 API 代理的部署将失败。时间单位 second 对于分配的配额无效。 |
build |
InvalidSynchronizeIntervalForAsyncConfiguration |
如果在 Quota 政策的 <AsynchronousConfiguration> 元素中为 <SyncIntervalInSeconds> 元素指定的值小于零,则 API 代理的部署将会失败。 |
build |
InvalidAsynchronizeConfigurationForSynchronousQuota |
如果将 Quota 政策中 <AsynchronousConfiguration> 元素的值设置为 true ,该元素还具有使用 <AsynchronousConfiguration> 元素定义的异步配置,则 API 代理的部署将会失败。 |
build |
故障变量
此政策触发错误时设置这些变量。如需了解详情,请参阅您需要了解的有关政策错误的信息。
变量 | 地点 | 示例 |
---|---|---|
fault.name="fault_name" |
fault_name 是故障名称,如上面的运行时错误表中所列。故障名称是故障代码的最后一部分。 | fault.name Matches "QuotaViolation" |
ratelimit.policy_name.failed |
policy_name 是抛出故障的政策的用户指定名称。 | ratelimit.QT-QuotaPolicy.failed = true |
错误响应示例
{ "fault":{ "detail":{ "errorcode":"policies.ratelimit.QuotaViolation" }, "faultstring":"Rate limit quota violation. Quota limit exceeded. Identifier : _default" } }
故障规则示例
<FaultRules> <FaultRule name="Quota Errors"> <Step> <Name>JavaScript-1</Name> <Condition>(fault.name Matches "QuotaViolation") </Condition> </Step> <Condition>ratelimit.Quota-1.failed=true</Condition> </FaultRule> </FaultRules>
ResetQuota 政策
本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息和处理故障。
运行时错误
政策执行时可能会发生这些错误。
故障代码 | HTTP 状态 | 原因 | 修复 |
---|---|---|---|
policies.resetquota.InvalidRLPolicy |
500 |
在 ResetQuota 政策的 <Quota> 元素中指定的 Quota 政策未在 API 代理中定义,因此在流中不可用。<Quota> 元素是必填的,并且识别 Quota 政策(该政策的计数器应通过 ResetQuota 政策来更新)。 |
build |
policies.resetquota.FailedToResolveAllowCountRef |
不适用 | 对政策的 <Allow> 元素中包含允许计数的变量的引用无法解析为值。此元素是必需的,并指定减少配额计数器的数量。 |
build |
policies.resetquota.FailedToResolveRLPolicy |
500 |
无法解析 <Quota> 元素中的 ref 属性引用的变量。 |
build |
部署错误
在您部署包含此政策的代理时,可能会发生这些错误。
错误名称 | 原因 | 修复 |
---|---|---|
InvalidCount |
如果在 ResetQuota 政策的 <Allow> 元素中指定的计数值不是整数,则 API 代理的部署将会失败。 |
build |
RaiseFaultpolicy
This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
Fault code | HTTP status | Cause |
---|---|---|
steps.raisefault.RaiseFault |
500 |
See fault string. |
Deployment errors
None.
Fault variables
These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors.
Variables | Where | Example |
---|---|---|
fault.name="fault_name" |
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. | fault.name = "RaiseFault" |
raisefault.policy_name.failed |
policy_name is the user-specified name of the policy that threw the fault. | raisefault.RF-ThrowError.failed = true |
Example error response
{ "fault":{ "detail":{ "errorcode":"steps.raisefault.RaiseFault" }, "faultstring":"Raising fault. Fault name: [name]" } }
RegularExpressionProtection 政策
This section describes the error codes and messages returned and fault variables
set by Apigee when this policy triggers an error. This information is important to know if
you are developing fault rules to handle faults. If you want to capture an error and raise your own
custom error, set the continueOnError="true"
attribute on the policy root element.
To learn more, see
What you need to know about policy errors and Handling
faults.
Runtime errors
These errors can occur when the policy executes.
Error Code | Message |
---|---|
ExecutionFailed |
Failed to execute the RegularExpressionProtection StepDefinition {0}. Reason: {1} |
InstantiationFailed |
Failed to instantiate the RegularExpressionProtection StepDefinition {0} |
NonMessageVariable |
Variable {0} does not resolve to a Message |
SourceMessageNotAvailable |
{0} message is not available for RegularExpressionProtection StepDefinition {1} |
ThreatDetected |
Regular Expression Threat Detected in {0}: regex: {1} input: {2} |
VariableResolutionFailed |
Failed to resolve variable {0} |
Deployment errors
Error Code | Message | Fix |
---|---|---|
CannotBeConvertedToNodeset |
RegularExpressionProtection {0}: Result of xpath {1} cannot be converted to nodeset.
Context {2} |
build |
DuplicatePrefix |
RegularExpressionProtection {0}: Duplicate prefix {1} |
build |
EmptyJSONPathExpression |
RegularExpressionProtection {0}: Empty JSONPath expression |
build |
EmptyXPathExpression |
RegularExpressionProtection {0}: Empty XPath expression |
build |
InvalidRegularExpression |
RegularExpressionProtection {0}: Invalid Regular Expression {1}, Context {2} |
build |
JSONPathCompilationFailed |
RegularExpressionProtection {0}: Failed to compile jsonpath {1}. Context {2} |
build |
NONEmptyPrefixMappedToEmptyURI |
RegularExpressionProtection {0}: Non-empty prefix {1} cannot be mapped to empty
uri |
build |
NoPatternsToEnforce |
RegularExpressionProtection {0}: No patterns to enforce in {1} |
build |
NothingToEnforce |
RegularExpressionProtection {0}: at least one of URIPath, QueryParam, Header,
FormParam, XMLPayload, JSONPayload is mandatory |
build |
XPathCompilationFailed |
RegularExpressionProtection {0}: Failed to compile xpath {1}. Context {2} |
build |
Fault variables
These variables are set when this policy triggers an error. For more information, see What you need to know about policy errors.
Variables | Where | Example |
---|---|---|
fault.name="fault_name" |
fault_name is the name of the fault, as listed in the table above. | fault.name Matches "ThreatDetected" |
regularexpressionprotection.policy_name.failed |
policy_name is the user-specified name of the policy that threw the fault. | regularexpressionprotection.Regular-Expressions-Protection-1.failed = true |
SAMLAssertion 政策
本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息和处理故障。
部署错误
在您部署包含此政策的代理时,可能会发生这些错误。
错误名称 | 原因 | 修复 |
---|---|---|
SourceNotConfigured |
ValidateSAMLAssertion 政策中的以下一个或多个元素未定义或为空:<Source> 、<XPath> 、<Namespaces> 、<Namespace> 。 |
build |
TrustStoreNotConfigured |
如果 <TrustStore> 元素为空或未在 ValidateSAMLAssertion 政策中指定,则 API 代理的部署将会失败。需要有效的信任库。 |
build |
NullKeyStoreAlias |
如果子元素 <Alias> 为空或未在 GenerateSAMLAssertion 政策的 <Keystore> 元素中指定,则 API 代理的部署将会失败。需要有效的密钥库别名。 |
build |
NullKeyStore |
如果子元素 <Name> 为空或未在 GenerateSAMLAssertion 政策的 <Keystore> 元素中指定,则 API 代理的部署将会失败。需要有效的密钥库名称。 |
build |
NullIssuer |
如果 <Issuer> 元素为空或未在 GenerateSAMLAssertion 政策中指定,则 API 代理的部署将会失败。 需要有效的 <Issuer> 值。 |
build |
故障变量
发生运行时错误时,系统会设置这些变量。如需了解详情,请参阅您需要了解的有关政策错误的信息。
变量 | 地点 | 示例 |
---|---|---|
fault.name="fault_name" |
fault_name 是故障名称。故障名称是故障代码的最后一部分。 | fault.name = "InvalidMediaTpe" |
GenerateSAMLAssertion.failed |
对于验证 SAML 断言政策配置,错误前缀为 ValidateSAMLAssertion 。 |
GenerateSAMLAssertion.failed = true |
错误响应示例
{ "fault": { "faultstring": "GenerateSAMLAssertion[GenSAMLAssert]: Invalid media type", "detail": { "errorcode": "steps.saml.generate.InvalidMediaTpe" } } }
故障规则示例
<FaultRules> <FaultRule name="invalid_saml_rule"> <Step> <Name>invalid-saml</Name> </Step> <Condition>(GenerateSAMLAssertion.failed = "true")</Condition> </FaultRule> </FaultRules>
ServiceCallout 政策
This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
Fault code | HTTP status | Cause | Fix |
---|---|---|---|
steps.servicecallout.ExecutionFailed |
500 |
This error can occur when:
|
build |
steps.servicecallout.RequestVariableNotMessageType |
500 |
The Request variable specified in the policy is not of type Message . For example, if
it's a string or other non-message type, you'll see this error. |
build |
steps.servicecallout.RequestVariableNotRequestMessageType |
500 |
The Request variable specified in the policy is not of type RequestMessage . For
example, if it's a Response type, you'll see this error. |
build |
googletoken.EmptyIDTokenAudience |
500 |
|
|
messaging.adaptors.http.filter.GoogleTokenGenerationFailure |
500 |
This error can happen if the API proxy is configured with the <Authentication>
element. Possible causes include:
<GoogleAccessToken> element is used and one or more
invalid scopes are provided. For example, look for typos or empty scopes.
For Apigee hybrid only, check the runtime container's log and search for
|
Deployment errors
These errors can occur when you deploy a proxy containing this policy.
Error name | Cause | Fix |
---|---|---|
URLMissing |
The <URL> element inside <HTTPTargetConnection>
is missing or empty. |
build |
ConnectionInfoMissing |
This error happens if the policy does not have an
<HTTPTargetConnection> or <LocalTargetConnection>
element. |
build |
InvalidTimeoutValue |
This error happens if the <Timeout> value is negative or zero. |
build |
FAILED_PRECONDITION |
This error happens if the service account is missing when the proxy is
configured with the <Authentication> tag.
For example: Deployment of \"organizations/foo/apis/apiproxy/revisions/1\" requires a service account identity, but one was not provided with the request. |
|
PERMISSION_DENIED |
This error happens if there is a permission problem with the service account if
the proxy is
configured with the <Authentication> tag. Possible causes:
|
Fault variables
These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors.
Variables | Where | Example |
---|---|---|
fault.name="fault_name" |
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. | fault.name = "RequestVariableNotMessageType" |
servicecallout.policy_name.failed |
policy_name is the user-specified name of the policy that threw the fault. | servicecallout.SC-GetUserData.failed = true |
Example error response
{ "fault":{ "detail":{ "errorcode":"steps.servicecallout.RequestVariableNotMessageType" }, "faultstring":"ServiceCallout[ServiceCalloutGetMockResponse]: request variable data_str value is not of type Message" } }
Example fault rule
<FaultRule name="RequestVariableNotMessageType"> <Step> <Name>AM-RequestVariableNotMessageType</Name> </Step> <Condition>(fault.name = "RequestVariableNotMessageType")</Condition> </FaultRule>
SOAPMessageValidation 政策
This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
Fault code | HTTP status | Cause | Fix |
---|---|---|---|
steps.messagevalidation.SourceMessageNotAvailable |
500 |
This error occurs if a variable specified in the
|
build |
steps.messagevalidation.NonMessageVariable |
500 |
This error occurs if the Message type variables represent entire HTTP requests and responses. The built-in Apigee
flow variables |
build |
steps.messagevalidation.Failed |
500 | This error occurs if the SOAPMessageValidation policy fails to validate the input message payload against the XSD schema or WSDL definition. It will also occur if there is malformed JSON or XML in the payload message. | build |
Deployment errors
These errors can occur when you deploy a proxy containing this policy.
Error name | Cause | Fix |
---|---|---|
InvalidResourceType |
The <ResourceURL> element in the SOAPMessageValidation policy is set to a resource type
not supported by the policy.
|
build |
ResourceCompileFailed |
The resource script referenced in the <ResourceURL> element of the SOAPMessageValidation
policy contains an error that prevents it from compiling.
|
build |
RootElementNameUnspecified |
The <Element> element in the SOAPMessageValidation policy does not contain the root
element's name. |
build |
InvalidRootElementName |
The <Element> element in the SOAPMessageValidation policy contains a root element name
that does not adhere to XML rules for valid element naming. |
build |
SpikeArrest 政策
This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
Fault code | HTTP status | Cause | Fix |
---|---|---|---|
policies.ratelimit.FailedToResolveSpikeArrestRate |
500 |
This error occurs if the reference to the variable containing the rate setting
within the <Rate> element cannot be resolved to a value within the SpikeArrest
policy. This element is mandatory and used to specify the spike arrest rate in
the form of intpm or intps . |
build |
policies.ratelimit.InvalidMessageWeight |
500 |
This error occurs if the value specified for the <MessageWeight> element through
a flow variable is invalid (a non-integer value). |
build |
policies.ratelimit.SpikeArrestViolation |
429 |
The rate limit is exceeded. |
Deployment errors
These errors can occur when you deploy a proxy containing this policy.
Error name | Cause | Fix |
---|---|---|
InvalidAllowedRate |
If the spike arrest rate specified in the <Rate> element of the SpikeArrest
policy is not an integer or if the rate does not have ps or pm as a suffix,
then the deployment of the API proxy fails. |
build |
Fault variables
These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors.
Variables | Where | Example |
---|---|---|
fault.name="fault_name" |
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. | fault.name Matches "SpikeArrestViolation" |
ratelimit.policy_name.failed |
policy_name is the user-specified name of the policy that threw the fault. | ratelimit.SA-SpikeArrestPolicy.failed = true |
Example error response
Shown below is an example error response:
{ "fault":{ "detail":{ "errorcode":"policies.ratelimit.SpikeArrestViolation" }, "faultstring":"Spike arrest violation. Allowed rate : 10ps" } }
Example fault rule
Shown below is an example fault rule to handle a SpikeArrestViolation
fault:
<FaultRules> <FaultRule name="Spike Arrest Errors"> <Step> <Name>JavaScript-1</Name> <Condition>(fault.name Matches "SpikeArrestViolation") </Condition> </Step> <Condition>ratelimit.Spike-Arrest-1.failed=true</Condition> </FaultRule> </FaultRules>
VerifyAPIKey 政策
This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
Fault code | HTTP status | Cause |
---|---|---|
keymanagement.service.consumer_key_missing_api_product_association |
400 |
The application credential is missing an API product association. Please associate the key's application with an API product. Note that this applies for all application types, such as developer apps and AppGroup apps. |
keymanagement.service.DeveloperStatusNotActive |
401 |
The developer who created the Developer App that has the API key you are using has an inactive status. When an App Developer's status is set to inactive, any Developer Apps created by that developer are deactivated. An admin user with appropriate permissions (such as Organization Administrator) can change a developer's status in the following ways:
|
keymanagement.service.invalid_client-app_not_approved |
401 |
The Developer App associated with the API key is revoked. A revoked app cannot access any API products and cannot invoke any API managed by Apigee. An org admin can change the status of a Developer App using the Apigee API. See Generate Key Pair or Update Developer App Status. |
oauth.v2.FailedToResolveAPIKey |
401 |
The policy expects to find the API key in a variable that is specified in the policy's <APIKey> element. This error arises when the expected variable does not exist (it cannot be resolved). |
oauth.v2.InvalidApiKey |
401 |
An API key was received by Apigee, but it is invalid. When Apigee looks up the key in its database, it must exactly match the one that was sent in the request. If the API worked previously, make sure the key was not regenerated. If the key was regenerated, you will see this error if you try to use the old key. For details, see Controlling access to your APIs by registering apps. |
oauth.v2.InvalidApiKeyForGivenResource |
401 |
An API key was received by Apigee, and it is valid; however, it does not match an approved key in the Developer App associated with your API proxy through a Product. |
Deployment errors
These errors can occur when you deploy a proxy containing this policy.
Error name | Cause |
---|---|
SpecifyValueOrRefApiKey |
The <APIKey> element does not have a value or key specified. |
Fault variables
These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors.
Variables | Where | Example |
---|---|---|
fault.name="fault_name" |
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. | fault.name Matches "FailedToResolveAPIKey" |
oauthV2.policy_name.failed |
policy_name is the user-specified name of the policy that threw the fault. | oauthV2.VK-VerifyAPIKey.failed = true |
Example error responses
{ "fault":{ "faultstring":"Invalid ApiKey", "detail":{ "errorcode":"oauth.v2.InvalidApiKey" } } }
{ "fault":{ "detail":{ "errorcode":"keymanagement.service.DeveloperStatusNotActive" }, "faultstring":"Developer Status is not Active" } }
Example fault rule
<FaultRule name="FailedToResolveAPIKey"> <Step> <Name>AM-FailedToResolveAPIKey</Name> </Step> <Condition>(fault.name Matches "FailedToResolveAPIKey") </Condition> </FaultRule>
VerifyIAM 政策
This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
Fault code | HTTP status | Cause |
---|---|---|
steps.verifyiam.CredentialSourceRefUnresolved |
400 |
Flow variable provided inside credential source could not be resolved. |
steps.verifyiam.CredentialValueNotProvided |
400 |
Credential not found. If the credential source reference is not provided, we look at the default place like authorization header. |
steps.verifyiam.Forbidden |
403 |
Request could not be forwarded due to lack of sufficient permissions or missing access scopes or any other related issues. |
steps.verifyiam.MiscellaneousAuthorizationConfigurationError |
500 |
An issue with the authentication request to IAM. The API producer needs to fix this error based on details in the error response. |
steps.verifyiam.Unauthorized |
401 |
Problem with the credential, such as the value being invalid or expired. |
steps.verifyiam.UnexpectedAuthorizationInfrastructureError |
500 |
Internal error. |
Deployment errors
This policy does not return any policy-specific deployment errors.
Fault variables
These variables are set when this policy triggers an error at runtime.
Variables | Where | Example |
---|---|---|
fault.name="fault_name" |
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. | fault.name="Unauthorized" |
verifyiam.policy_name.failed |
policy_name is the user-specified name of the policy that threw the fault. | verifyiam.Verify-IAMToken.failed = true |
VerifyJWS 政策
This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
Fault code | HTTP status | Occurs when |
---|---|---|
steps.jws.AlgorithmInTokenNotPresentInConfiguration |
401 |
Occurs when the verification policy has multiple algorithms |
steps.jws.AlgorithmMismatch |
401 |
The algorithm specified in the header by the Generate policy did not match the one expected in the
Verify policy. The algorithms specified must match. |
steps.jws.ContentIsNotDetached |
401 |
<DetachedContent> is specified when the JWS does not contain a
detached content payload. |
steps.jws.FailedToDecode |
401 |
The policy was unable to decode the JWS. The JWS is possibly corrupted. |
steps.jws.InsufficientKeyLength |
401 |
For a key less than 32 bytes for the HS256 algorithm |
steps.jws.InvalidClaim |
401 |
For a missing claim or claim mismatch, or a missing header or header mismatch. |
steps.jws.InvalidCurve |
401 |
The curve specified by the key is not valid for the Elliptic Curve algorithm. |
steps.jws.InvalidJsonFormat |
401 |
Invalid JSON found in the JWS header. |
steps.jws.InvalidJws |
401 |
This error occurs when the JWS signature verification fails. |
steps.jws.InvalidPayload |
401 |
The JWS payload is invalid. |
steps.jws.InvalidSignature |
401 |
<DetachedContent> is omitted and the JWS has a detached content payload. |
steps.jws.KeyIdMissing |
401 |
The Verify policy uses a JWKS as a source for public keys, but the signed JWS does not
include a kid property in the header. |
steps.jws.KeyParsingFailed |
401 |
The public key could not be parsed from the given key information. |
steps.jws.MissingPayload |
401 |
The JWS payload is missing. |
steps.jws.NoAlgorithmFoundInHeader |
401 |
Occurs when the JWS omits the algorithm header. |
steps.jws.NoMatchingPublicKey |
401 |
The Verify policy uses a JWKS as a source for public keys, but the kid
in the signed JWS is not listed in the JWKS. |
steps.jws.UnhandledCriticalHeader |
401 |
A header found by the Verify JWS policy in the crit header is not
listed in KnownHeaders . |
steps.jws.UnknownException |
401 |
An unknown exception occurred. |
steps.jws.WrongKeyType |
401 |
Wrong type of key specified. For example, if you specify an RSA key for an Elliptic Curve algorithm, or a curve key for an RSA algorithm. |
Deployment errors
These errors can occur when you deploy a proxy containing this policy.
Error name | Occurs when |
---|---|
InvalidAlgorithm |
The only valid values are: RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384, ES512,
HS256, HS384, HS512 . |
|
Other possible deployment errors. |
Fault variables
These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors.
Variables | Where | Example |
---|---|---|
fault.name="fault_name" |
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. | fault.name Matches "TokenExpired" |
JWS.failed |
All JWS policies set the same variable in the case of a failure. | jws.JWS-Policy.failed = true |
Example error response
For error handling, the best practice is to trap the errorcode
part of the error
response. Do not rely on the text in the faultstring
, because it could change.
Example fault rule
<FaultRules> <FaultRule name="JWS Policy Errors"> <Step> <Name>JavaScript-1</Name> <Condition>(fault.name Matches "TokenExpired")</Condition> </Step> <Condition>JWS.failed=true</Condition> </FaultRule> </FaultRules>
验证 JWT 政策
本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。 在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息和处理故障。
运行时错误
政策执行时可能会发生这些错误。
故障代码 | HTTP 状态 | 发生的条件 |
---|---|---|
steps.jwt.AlgorithmInTokenNotPresentInConfiguration |
401 |
验证政策包含多个算法时发生。 |
steps.jwt.AlgorithmMismatch |
401 |
在 Generate 政策中指定的算法与在 Verify 政策中指定的算法不匹配。指定的算法必须匹配。 |
steps.jwt.FailedToDecode |
401 |
该政策无法解码 JWT。JWT 可能已损坏。 |
steps.jwt.GenerationFailed |
401 |
该政策无法生成 JWT。 |
steps.jwt.InsufficientKeyLength |
401 |
HS256 算法的密钥小于 32 个字节,HS386 算法的密钥少于 48 个字节,HS512 算法的密钥少于 64 个字节。 |
steps.jwt.InvalidClaim |
401 |
用于缺失声明或声明不匹配,或者缺少标题或标头不匹配的情况。 |
steps.jwt.InvalidConfiguration |
401 |
同时存在 <Algorithm> 和 <Algorithms> 元素。 |
steps.jwt.InvalidCurve |
401 |
密钥指定的曲线对椭圆曲线算法无效。 |
steps.jwt.InvalidIterationCount |
401 |
加密 JWT 中使用的迭代次数不等于 VerifyJWT 政策配置中指定的迭代次数。这仅适用于使用 <PasswordKey> 的 JWT。 |
steps.jwt.InvalidJsonFormat |
401 |
标头或载荷中存在无效的 JSON。 |
steps.jwt.InvalidKeyConfiguration |
401 |
<PublicKey> 元素中的 JWKS 无效。原因可能是无法从 Apigee 实例访问 JWKS URI 端点。通过创建直通式代理并使用 JWKS 端点作为目标来测试与端点的连接。 |
steps.jwt.InvalidSaltLength |
401 |
加密 JWT 中使用的盐长度不等于 VerifyJWT 政策配置中指定的盐长度。这仅适用于使用 <PasswordKey> 的 JWT。 |
steps.jwt.InvalidPasswordKey |
401 |
指定的密钥不符合要求。 |
steps.jwt.InvalidPrivateKey |
401 |
指定的密钥不符合要求。 |
steps.jwt.InvalidPublicKey |
401 |
指定的密钥不符合要求。 |
steps.jwt.InvalidSecretKey |
401 |
指定的密钥不符合要求。 |
steps.jwt.InvalidToken |
401 |
当 JWT 签名验证失败时,会发生此错误。 |
steps.jwt.JwtAudienceMismatch |
401 |
目标对象声明未通过令牌验证。 |
steps.jwt.JwtIssuerMismatch |
401 |
颁发者声明未通过令牌验证。 |
steps.jwt.JwtSubjectMismatch |
401 |
主题声明未通过令牌验证。 |
steps.jwt.KeyIdMissing |
401 |
Verify 政策使用 JWKS 作为公钥的来源,但已签名的 JWT 在标头中不包含的 kid 属性。 |
steps.jwt.KeyParsingFailed |
401 |
无法通过给定密钥信息解析公钥。 |
steps.jwt.NoAlgorithmFoundInHeader |
401 |
JWT 不包含算法标头时发生。 |
steps.jwt.NoMatchingPublicKey |
401 |
Verify 政策使用 JWKS 作为公钥的来源,但已签名的 JWT 中的 kid 未列在 JWKS 中。 |
steps.jwt.SigningFailed |
401 |
在 GenerateJWT 中,HS384 或 HS512 算法的密钥大小小于下限。 |
steps.jwt.TokenExpired |
401 |
该政策尝试验证过期的令牌。 |
steps.jwt.TokenNotYetValid |
401 |
令牌尚未生效。 |
steps.jwt.UnhandledCriticalHeader |
401 |
验证 JWT 政策在 crit 标头中发现的标头未在 KnownHeaders 中列出。 |
steps.jwt.UnknownException |
401 |
发生未知异常。 |
steps.jwt.WrongKeyType |
401 |
指定的密钥类型不正确。例如,为椭圆曲线算法指定 RSA 密钥,或为 RSA 算法指定了曲线密钥。 |
部署错误
在您部署包含此政策的代理时,可能会发生这些错误。
错误名称 | 原因 | 修复 |
---|---|---|
InvalidNameForAdditionalClaim |
如果 <AdditionalClaims> 元素的子元素 <Claim> 中使用的声明是以下注册名称之一,部署将失败:kid 、iss 、sub 、aud 、iat 、exp 、nbf 、jti 。
|
build |
InvalidTypeForAdditionalClaim |
如果 <AdditionalClaims> 元素的子元素 <Claim> 中使用的声明不是 string 、number 、boolean 或 map 之一,部署将失败。 |
build |
MissingNameForAdditionalClaim |
如果未在 <AdditionalClaims> 元素的子元素 <Claim> 中指定声明的名称,部署将失败。 |
build |
InvalidNameForAdditionalHeader |
当 <AdditionalClaims> 元素的子元素 <Claim> 中使用的声明的名称为 alg 或 typ 时会发生此错误。 |
build |
InvalidTypeForAdditionalHeader |
如果 <AdditionalClaims> 元素的子元素 <Claim> 中使用的声明类型不是 string 、number 、boolean 或 map 之一,部署将失败。
|
build |
InvalidValueOfArrayAttribute |
当 <AdditionalClaims> 元素的子元素 <Claim> 中数组特性的值未设置为 true 或 false 时会发生此错误。 |
build |
InvalidValueForElement |
如果 <Algorithm> 元素中指定的值不受支持,部署将失败。 |
build |
MissingConfigurationElement |
如果 <PrivateKey> 元素未与 RSA 系列算法搭配使用,或者 <SecretKey> 元素未与 HS 系列算法搭配使用,则会发生此错误。 |
build |
InvalidKeyConfiguration |
如果未在 <PrivateKey> 或 <SecretKey> 元素中定义子元素 <Value> ,部署将失败。 |
build |
EmptyElementForKeyConfiguration |
如果 <PrivateKey> 或 <SecretKey> 元素的子元素 <Value> 的 ref 特性为空或未指定,部署将失败。 |
build |
InvalidConfigurationForVerify |
如果在 <SecretKey> 元素中定义了 <Id> 元素,则会发生此错误。 |
build |
InvalidEmptyElement |
如果验证 JWT 政策的 <Source> 元素为空,则会发生此错误。如果存在,则必须使用 Apigee 流变量名称定义它。 |
build |
InvalidPublicKeyValue |
如果 <PublicKey> 元素的子元素 <JWKS> 中所用的值未使用 RFC 7517 中说明的有效格式,部署将失败。 |
build |
InvalidConfigurationForActionAndAlgorithm |
如果 <PrivateKey> 元素与 HS 系列算法搭配使用,或者 <SecretKey> 元素与 RSA Family 算法搭配使用,部署将失败。 |
build |
故障变量
发生运行时错误时,系统会设置这些变量。如需了解详情,请参阅您需要了解的有关政策错误的信息。
变量 | 地点 | 示例 |
---|---|---|
fault.name="fault_name" |
fault_name 是故障名称,如上面的运行时错误表中所列。故障名称是故障代码的最后一部分。 | fault.name Matches "InvalidToken" |
JWT.failed |
所有 JWT 政策都将在发生故障时设置同一变量。 | JWT.failed = true |
错误响应示例
处理错误时,最佳做法是捕获错误响应的 errorcode
部分。不要依赖 faultstring
中的文本,因为它可能会发生变化。
故障规则示例
<FaultRules> <FaultRule name="JWT Policy Errors"> <Step> <Name>JavaScript-1</Name> <Condition>(fault.name Matches "InvalidToken")</Condition> </Step> <Condition>JWT.failed=true</Condition> </FaultRule> </FaultRules>
XMLThreatProtection 政策
本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息和处理故障。
运行时错误
政策执行时可能会发生这些错误。
故障代码 | HTTP 状态 | 原因 | 修复 |
---|---|---|---|
steps.xmlthreatprotection.ExecutionFailed |
500 |
XMLThreatProtection 政策可能会抛出许多不同类型的 ExecutionFailed 错误。其中大多数错误会在超出政策中设置的特定阈值时发生。这些类型的错误包括:元素名称长度、子级计数、节点深度、属性计数、属性名称长度,等等。您可以在 XMLThreatProtection 政策运行时错误问题排查主题中查看完整列表。 |
build |
steps.xmlthreatprotection.InvalidXMLPayload |
500 |
如果 XMLThreatProtection 政策的 <Source> 元素指定的输入消息载荷不是有效的 XML 文档,就会出现此错误。 |
build |
steps.xmlthreatprotection.SourceUnavailable |
500 |
如果在 <Source> 元素中指定的消息变量为以下任意一项,就会出现此错误:
|
build |
steps.xmlthreatprotection.NonMessageVariable |
500 |
如果将 <Source> 元素设置为非消息类型的变量,则会发生此错误。
|
build |
部署错误
无。
故障变量
发生运行时错误时,系统会设置这些变量。如需了解详情,请参阅您需要了解的有关政策错误的信息。
变量 | 地点 | 示例 |
---|---|---|
fault.name="fault_name" |
fault_name 是故障名称,如上面的运行时错误表中所列。故障名称是故障代码的最后一部分。 | fault.name Matches "SourceUnavailable" |
xmlattack.policy_name.failed |
policy_name 是抛出故障的政策的用户指定名称。 | xmlattack.XPT-SecureRequest.failed = true |
错误响应示例
{ "fault": { "faultstring": "XMLThreatProtection[XPT-SecureRequest]: Execution failed. reason: XMLThreatProtection[XTP-SecureRequest]: Exceeded object entry name length at line 2", "detail": { "errorcode": "steps.xmlthreatprotection.ExecutionFailed" } } }
故障规则示例
<FaultRule name="XML Threat Protection Policy Faults"> <Step> <Name>AM-CustomErrorResponse</Name> <Condition>(fault.name Matches "ExecutionFailed") </Condition> </Step> <Condition>(xmlattack.XPT-SecureRequest.failed = true) </Condition> </FaultRule>
XMLtoJSON 政策
本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息和处理故障。
运行时错误
政策执行时可能会发生这些错误。
故障代码 | HTTP 状态 | 原因 | 修复 |
---|---|---|---|
steps.xmltojson.ExecutionFailed |
ExecutionFailed |
当输入负载 (XML) 为空或输入 XML 无效或格式有误时,就会出现此错误。 | build |
steps.xmltojson.InCompatibleTypes |
ExecutionFailed |
如果 <Source> 元素中定义的变量类型与 <OutputVariable> 元素不同,则会出现此错误。<Source> 元素中包含的变量类型和 <OutputVariable> 元素必须与此变量完全匹配。 |
build |
steps.xmltojson.InvalidSourceType |
ExecutionFailed |
如果用于定义 <Source> 元素的变量类型无效,则会出现此错误。变量的有效类型为消息和字符串。 |
build |
steps.xmltojson.OutputVariableIsNotAvailable |
ExecutionFailed |
如果 XML 到 JSON 政策 的 <Source> 元素中指定的变量为字符串类型,并且未定义 <OutputVariable> 元素,则会出现此错误。如果 <Source> 元素中定义的变量为字符串类型,则 <OutputVariable> 元素是必填的。 |
build |
steps.xmltojson.SourceUnavailable |
ExecutionFailed |
如果 XML 到 JSON 政策的 <Source> 元素中的 message 变量是以下任一项,便会出现此错误:
|
build |
部署错误
在您部署包含此政策的代理时,可能会发生这些错误。
错误名称 | 原因 | 修复 |
---|---|---|
EitherOptionOrFormat |
如果 XML 到 JSON 政策中未声明 <Options> 或 <Format> 中的一个元素,则 API 代理的部署将失败。
|
build |
UnknownFormat |
如果 XML 到 JSON 政策中的 <Format> 元素定义了未知格式,则 API 代理的部署将失败。预定义格式包括:xml.com 、yahoo 、google 和 badgerFish 。 |
build |
故障变量
发生运行时错误时,系统会设置这些变量。如需了解详情,请参阅您需要了解的有关政策错误的信息。
变量 | 地点 | 示例 |
---|---|---|
fault.name="fault_name" |
fault_name 是故障名称,如上面的运行时错误表中所列。故障名称是故障代码的最后一部分。 | fault.name = "SourceUnavailable" |
xmltojson.policy_name.failed |
policy_name 是抛出故障的政策的用户指定名称。 | xmltojson.XMLtoJSON-1.failed = true |
错误响应示例
{ "fault": { "faultstring": "XMLToJSON[XMLtoJSON-1]: Source xyz is not available", "detail": { "errorcode": "steps.xml2json.SourceUnavailable" } } }
故障规则示例
<faultrule name="VariableOfNonMsgType"></faultrule><FaultRule name="XML to JSON Faults"> <Step> <Name>AM-SourceUnavailableMessage</Name> <Condition>(fault.name Matches "SourceUnavailable") </Condition> </Step> <Step> <Name>AM-BadXML</Name> <Condition>(fault.name = "ExecutionFailed")</Condition> </Step> <Condition>(xmltojson.XMLtoJSON-1.failed = true) </Condition> </FaultRule>
XSLTransform 政策
Runtime errors
These errors can occur when the policy executes.
Fault code | HTTP status | Cause | Fix |
---|---|---|---|
steps.xsl.XSLSourceMessageNotAvailable |
500 |
This error occurs if the message or string variable specified in the <Source> element of the
XSLTransform policy is either out of scope (not available in the specific flow where the
policy is being executed) or can't be resolved (is not defined).
|
build |
steps.xsl.XSLEvaluationFailed |
500 |
This error occurs if the input XML payload is unavailable/malformed or the XSLTransform policy fails/is unable to transform the input XML file based on the transformation rules provided in the XSL file. There could be many different causes for the XSLTransform policy to fail. The reason for failure in the error message will provide more information on the cause. | build |
Deployment errors
These errors can occur when you deploy a proxy containing this policy.
Error name | Cause | Fix |
---|---|---|
XSLEmptyResourceUrl |
If the <ResourceURL> element in the XSLTransform policy is empty, then the
deployment of the API proxy fails. |
build |
XSLInvalidResourceType |
If the resource type specified in the <ResourceURL> element of the XSLTransform
policy is not of type xsl , then the deployment of the API proxy fails. |
build |