您正在查看 Apigee Edge 文档。
前往 Apigee X 文档。 信息
AccessControl 政策
本部分介绍此政策触发错误时返回的错误代码和错误消息,以及 Edge 设置的故障变量。 在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息和处理故障。
运行时错误
政策执行时可能会发生这些错误。
| 故障代码 | HTTP 状态 | 原因 | 修复 |
|---|---|---|---|
accesscontrol.IPDeniedAccess |
403 | 客户端 IP 地址或 API 请求中传递的 IP 地址与在访问权限控制政策的 <MatchRule> 元素内的 <SourceAddress> 元素中指定的 IP 地址匹配,并且 <MatchRule> 元素的 action 属性设置为 DENY。 |
build |
故障变量
发生运行时错误时,系统会设置这些变量。如需了解详情,请参阅特定于政策错误的变量。
| 变量 | 地点 | 示例 |
|---|---|---|
fault.name="fault_name" |
fault_name 是故障名称,如上面的运行时错误表中所列。故障名称是故障代码的最后一部分。 | fault.name Matches "IPDeniedAccess" |
acl.policy_name.failed |
policy_name 是抛出故障的政策的用户指定名称。 | acl.AC-AllowAccess.failed = true |
故障响应示例
{
"fault":{
"faultstring":"Access Denied for client ip : 52.211.243.3"
"detail":{
"errorcode":"accesscontrol.IPDeniedAccess"
}
}
}故障规则示例
<FaultRule name="IPDeniedAccess">
<Step>
<Name>AM-IPDeniedAccess</Name>
<Condition>(fault.name Matches "IPDeniedAccess") </Condition>
</Step>
<Condition>(acl.failed = true) </Condition>
</FaultRule>AccessEntity 政策
For related information, see What you need to know about policy errors and Handling faults.
Runtime errors
None.
Deployment errors
| Error name | Fault string | HTTP status | Occurs when |
|---|---|---|---|
InvalidEntityType |
Invalid type [entity_type] in ACCESSENTITYStepDefinition
[policy_name] |
N/A | The entity type used must be one of the supported types. |
AssignMessage 政策
This section describes the fault codes and error messages that are returned and fault variables that are set by Edge 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 Edge
flow variables |
build |
steps.assignmessage.UnresolvedVariable |
500 |
This error occurs if a variable specified in the Assign Message 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 Assign Message
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 Edge 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 (e.g., 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>ConcurrentRateLimit 政策
This section describes the fault codes and error messages that are returned and fault variables that are set by Edge 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 | Occurs when |
|---|---|---|
policies.concurrentratelimit.ConcurrentRatelimtViolation |
503 |
ConcurrentRatelimit connection exceeded. Connection limit : {0} Note: The Fault code shown on the left is correct, although it contains a misspelling ("limt"). Be sure to use the code exactly as shown here when creating fault rules to trap this error. |
Deployment errors
| Error name | Occurs when |
|---|---|
InvalidCountValue |
ConcurrentRatelimit invalid count value specified. |
ConcurrentRatelimitStepAttachment\ |
Concurrent Ratelimit policy {0} attachment is not allowed at proxy request/response/fault paths. This policy must be placed on the Target Endpoint. |
ConcurrentRatelimitStepAttachment\ |
Concurrent Ratelimit policy {0} attachment is missing at target request/response/fault paths. This policy must be placed in the Target Request Preflow, Target Response Postflow, and DefaultFaultRule. |
InvalidTTLForMessageTimeOut |
ConcurrentRatelimit invalid ttl value specified for message timeout. It must be a positive integer. |
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 "ConcurrentRatelimtViolation"
Note: The Error code shown in the example is correct, although it contains a misspelling ("limt"). Please be sure to use the code exactly as shown here when creating fault rules to trap this error. |
concurrentratelimit.policy_name.failed |
policy_name is the user-specified name of the policy that threw the fault. | concurrentratelimit.CRL-RateLimitPolicy.failed = true |
Example error response
If the rate limit is exceeded, the policy returns only an HTTP status 503 to the client.
Example fault rule
<faultrule name="VariableOfNonMsgType"></faultrule><FaultRules>
<FaultRule name="Quota Errors">
<Step>
<Name>JavaScript-1</Name>
<Condition>(fault.name Matches "ConcurrentRatelimtViolation") </Condition>
</Step>
<Condition>concurrentratelimit.CRL-RateLimitPolicy.failed=true</Condition>
</FaultRule>
</FaultRules>DecodeJWS 政策
This section describes the fault codes and error messages that are returned and fault variables that are set by Edge 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.name="fault_name" |
fault_name 是故障名称,如上面的运行时错误表中所列。故障名称是故障代码的最后一部分。 | fault.name Matches "TokenExpired" |
JWS.failed |
所有 JWT 政策都将在发生故障时设置同一变量。 | jws.JWS-Policy.failed = true |
错误响应示例
处理错误时,最佳做法是捕获错误响应的 errorcode 部分。不要依赖 faultstring 中的文本,因为它可能会发生变化。
故障规则示例
<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 Edge 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 "TokenExpired" |
JWT.failed |
所有 JWT 政策都将在发生故障时设置同一变量。 | JWT.failed = true |
错误响应示例
处理错误时,最佳做法是捕获错误响应的 errorcode 部分。不要依赖 faultstring 中的文本,因为它可能会发生变化。
故障规则示例
<FaultRules>
<FaultRule name="JWT Policy Errors">
<Step>
<Name>JavaScript-1</Name>
<Condition>(fault.name Matches "TokenExpired")</Condition>
</Step>
<Condition>JWT.failed=true</Condition>
</FaultRule>
</FaultRules>
ExtractVariables 政策
This section describes the fault codes and error messages that are returned and fault variables that are set by Edge 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.extractvariables.ExecutionFailed |
500 |
This error occurs when:
|
build |
steps.extractvariables.ImmutableVariable |
500 | A variable used in the policy is immutable. The policy was unable to set this variable. | |
steps.extractvariables.InvalidJSONPath |
500 | This error occurs if an invalid JSON path is used in the JSONPath element of the
policy. For example, if a JSON payload does not have the object Name,
but you specify Name as the path in the policy, then this error occurs. |
build |
steps.extractvariables.JsonPathParsingFailure |
500 | This error occurs when the policy is unable to parse a JSON path and
extract data from the flow variable specified in Source element. Typically this
happens if the flow variable specified in the Source element does not exist in the current
flow. |
build |
steps.extractvariables.SetVariableFailed |
500 | This error occurs if the policy could not set the value to a variable. The error generally happens if you try to assign values to multiple variables whose names start with the same words in a nested dot-separated format. | build |
steps.extractvariables.SourceMessageNotAvailable |
500 | This error occurs if the message
variable specified in the Source element of the policy
is either:
|
build |
steps.extractvariables.UnableToCast |
500 | This error occurs if the policy was unable to cast the extracted value to a variable. Typically this happens if you attempt to set the value of one data type to a variable of another data type. | build |
Deployment errors
These errors can occur when you deploy a proxy containing this policy.
| Error name | Cause | Fix |
|---|---|---|
NothingToExtract |
If the policy does not have any of the elements URIPath, QueryParam,
Header, FormParam, XMLPayload, or JSONPayload,
the deployment of the API Proxy fails, because there's nothing to extract. |
build |
NONEmptyPrefixMappedToEmptyURI |
This error occurs if the policy has a prefix defined in the
Namespace element under the XMLPayload element, but no URI is
defined. |
build |
DuplicatePrefix |
This error occurs if the policy has the same prefix defined more than
once in the Namespace element under the XMLPayload element. |
build |
NoXPathsToEvaluate |
If the policy does not have the XPath element within the
XMLPayload element, then the deployment of the API proxy fails with this error.
|
build |
EmptyXPathExpression |
If the policy has an empty XPath expression within the XMLPayload
element, then the deployment of the API proxy fails. |
build |
NoJSONPathsToEvaluate |
If the policy does not have the JSONPath element within the
JSONPayload element, then the deployment of the API proxy fails with this error. |
build |
EmptyJSONPathExpression |
If the policy has an empty XPath expression within the
XMLPayload element, then the deployment of the API proxy fails. |
build |
MissingName |
If the policy does not have the name attribute in any of the policy
elements like QueryParam, Header, FormParam or
Variable, where it is required, then the deployment of the API proxy fails. |
build |
PatternWithoutVariable |
If the policy does not have a variable specified within the Pattern element,
then the deployment of the API proxy fails. The Pattern element requires the name of
the variable in which extracted data will be stored. |
build |
CannotBeConvertedToNodeset |
If the policy has an XPath expression where the Variable type
is defined as nodeset,
but the expression cannot be converted to nodeset, then the deployment of the API proxy fails. |
build |
JSONPathCompilationFailed |
The policy could not compile a specified JSON Path. | |
InstantiationFailed |
The policy could not be instantiated. | |
XPathCompilationFailed |
If the prefix or the value used in the XPath element is not part of any of the
declared namespaces in the policy, then the deployment of the API proxy
fails. |
build |
InvalidPattern |
If the Pattern element definition is invalid in any of the elements like URIPath,
QueryParam, Header, FormParam, XMLPayload
or JSONPayload within the policy, then the deployment of the
API proxy fails.
|
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 = "SourceMessageNotAvailable" |
extractvariables.policy_name.failed |
policy_name is the user-specified name of the policy that threw the fault. | extractvariables.EV-ParseJsonResponse.failed = true |
Example error response
{ "fault":{ "detail":{ "errorcode":"steps.extractvariables.SourceMessageNotAvailable" }, "faultstring":"request message is not available for ExtractVariable: EV-ParseJsonResponse" } }
Example fault rule
<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 政策
本部分介绍了在此政策触发错误时返回的错误代码和错误消息,以及 Edge 设置的故障变量。 在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息和处理故障。
运行时错误
政策执行时可能会发生这些错误。
| 故障代码 | HTTP 状态 | 发生的条件 |
|---|---|---|
steps.jws.GenerationFailed |
401 | 该政策无法生成 JWS。 |
steps.jws.InsufficientKeyLength |
401 | HS256 算法的密钥小于 32 个字节 |
steps.jws.InvalidClaim |
401 | 用于缺失声明或声明不匹配,或者缺少标题或标头不匹配的情况。 |
steps.jws.InvalidCurve |
401 | 密钥指定的曲线对椭圆曲线算法无效。 |
steps.jws.InvalidJsonFormat |
401 | 可在 JWS 标头中找到无效的 JSON。 |
steps.jws.InvalidPayload |
401 | JWS 负载无效。 |
steps.jws.InvalidSignature |
401 | 省略 <DetachedContent> 并且 JWS 具有分离的内容负载。 |
steps.jws.KeyIdMissing |
401 | 验证政策使用 JWKS 作为公钥的来源,但已签名的 JWS 不包含标头中的 kid 属性。 |
steps.jws.KeyParsingFailed |
401 | 无法通过给定密钥信息解析公钥。 |
steps.jws.MissingPayload |
401 | JWS 负载缺失。 |
steps.jws.NoAlgorithmFoundInHeader |
401 | 在 JWS 省略算法标头时发生。 |
steps.jws.SigningFailed |
401 | 在 GenerateJWS 中,密钥小于 HS384 或 HS512 算法的大小下限。 |
steps.jws.UnknownException |
401 | 发生未知异常。 |
steps.jws.WrongKeyType |
401 | 指定的密钥类型不正确。例如,为椭圆曲线算法指定 RSA 密钥,或为 RSA 算法指定了曲线密钥。 |
部署错误
在您部署包含此政策的代理时,可能会发生这些错误。
| 错误名称 | 发生的条件 |
|---|---|
InvalidAlgorithm |
唯一的有效值为:RS256、RS384、RS512、PS256、PS384、PS512、ES256、ES384、ES512、HS256、HS384、HS512。 |
|
|
其他可能的部署错误。 |
故障变量
发生运行时错误时,系统会设置这些变量。如需了解详情,请参阅您需要了解的有关政策错误的信息。
| 变量 | 其中 | 示例 |
|---|---|---|
fault.name="fault_name" |
fault_name 是故障名称,如上面的运行时错误表中所列。故障名称是故障代码的最后一部分。 | fault.name Matches "TokenExpired" |
JWS.failed |
所有 JWT 政策都将在发生故障时设置同一变量。 | jws.JWS-Policy.failed = true |
错误响应示例
处理错误时,最佳做法是捕获错误响应的 errorcode 部分。不要依赖 faultstring 中的文本,因为它可能会发生变化。
故障规则示例
<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 政策
This section describes the fault codes and error messages that are returned and fault variables that are set by Edge 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.jwt.AlgorithmInTokenNotPresentInConfiguration |
401 | Occurs when the verification policy has multiple algorithms. |
steps.jwt.AlgorithmMismatch |
401 | The algorithm specified in the Generate policy did not match the one expected in the Verify policy. The algorithms specified must match. |
steps.jwt.FailedToDecode |
401 | The policy was unable to decode the JWT. The JWT is possibly corrupted. |
steps.jwt.GenerationFailed |
401 | The policy was unable to generate the JWT. |
steps.jwt.InsufficientKeyLength |
401 | For a key less than 32 bytes for the HS256 algorithm, less than 48 bytes for the HS386 algortithm, and less than 64 bytes for the HS512 algorithm. |
steps.jwt.InvalidClaim |
401 | For a missing claim or claim mismatch, or a missing header or header mismatch. |
steps.jwt.InvalidCurve |
401 | The curve specified by the key is not valid for the Elliptic Curve algorithm. |
steps.jwt.InvalidJsonFormat |
401 | Invalid JSON found in the header or payload. |
steps.jwt.InvalidToken |
401 | This error occurs when the JWT signature verification fails. |
steps.jwt.JwtAudienceMismatch |
401 | The audience claim failed on token verification. |
steps.jwt.JwtIssuerMismatch |
401 | The issuer claim failed on token verification. |
steps.jwt.JwtSubjectMismatch |
401 | The subject claim failed on token verification. |
steps.jwt.KeyIdMissing |
401 | The Verify policy uses a JWKS as a source for public keys, but the signed JWT does not
include a kid property in the header. |
steps.jwt.KeyParsingFailed |
401 | The public key could not be parsed from the given key information. |
steps.jwt.NoAlgorithmFoundInHeader |
401 | Occurs when the JWT contains no algorithm header. |
steps.jwt.NoMatchingPublicKey |
401 | The Verify policy uses a JWKS as a source for public keys, but the kid
in the signed JWT is not listed in the JWKS. |
steps.jwt.SigningFailed |
401 | In GenerateJWT, for a key less than the minimum size for the HS384 or HS512 algorithms |
steps.jwt.TokenExpired |
401 | The policy attempts to verify an expired token. |
steps.jwt.TokenNotYetValid |
401 | The token is not yet valid. |
steps.jwt.UnhandledCriticalHeader |
401 | A header found by the Verify JWT policy in the crit header is not
listed in KnownHeaders. |
steps.jwt.UnknownException |
401 | An unknown exception occurred. |
steps.jwt.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 | Cause | Fix |
|---|---|---|
InvalidNameForAdditionalClaim |
The deployment will fail if the claim used in the child element <Claim>
of the <AdditionalClaims> element is one of the following registered names:
kid, iss, sub, aud, iat,
exp, nbf, or jti.
|
build |
InvalidTypeForAdditionalClaim |
If the claim used in the child element <Claim>
of the <AdditionalClaims> element is not of type string, number,
boolean, or map, the deployment will fail.
|
build |
MissingNameForAdditionalClaim |
If the name of the claim is not specified in the child element <Claim>
of the <AdditionalClaims> element, the deployment will fail.
|
build |
InvalidNameForAdditionalHeader |
This error ccurs when the name of the claim used in the child element <Claim>
of the <AdditionalClaims> element is either alg or typ.
|
build |
InvalidTypeForAdditionalHeader |
If the type of claim used in the child element <Claim>
of the <AdditionalClaims> element is not of type string, number,
boolean, or map, the deployment will fail.
|
build |
InvalidValueOfArrayAttribute |
This error occurs when the value of the array attribute in the child element <Claim>
of the <AdditionalClaims> element is not set to true or false.
|
build |
InvalidConfigurationForActionAndAlgorithm |
If the <PrivateKey> element is used with HS Family algorithms or
the <SecretKey> element is used with RSA Family algorithms, the
deployment will fail.
|
build |
InvalidValueForElement |
If the value specified in the <Algorithm> element is not a supported value,
the deployment will fail.
|
build |
MissingConfigurationElement |
This error will occur if the <PrivateKey> element is not used with
RSA family algorithms or the <SecretKey> element is not used with HS Family
algorithms.
|
build |
InvalidKeyConfiguration |
If the child element <Value> is not defined in the <PrivateKey>
or <SecretKey> elements, the deployment will fail.
|
build |
EmptyElementForKeyConfiguration |
If the ref attribute of the child element <Value> of the <PrivateKey>
or <SecretKey> elements is empty or unspecified, the deployment will fail.
|
build |
InvalidVariableNameForSecret |
This error occurs if the flow variable name specified in the ref attribute of the child
element <Value> of the <PrivateKey>
or <SecretKey> elements does not contain the private prefix (private.).
|
build |
InvalidSecretInConfig |
This error occurs if the child element <Value> of the <PrivateKey>
or <SecretKey> elements does not contain the private prefix (private.).
|
build |
InvalidTimeFormat |
If the value specified in the<NotBefore> element does not use a
supported format, the deployment will fail.
|
build |
故障变量
发生运行时错误时,系统会设置这些变量。如需了解详情,请参阅您需要了解的有关政策错误的信息。
| 变量 | 地点 | 示例 |
|---|---|---|
fault.name="fault_name" |
fault_name 是故障名称,如上面的运行时错误表中所列。故障名称是故障代码的最后一部分。 | fault.name Matches "TokenExpired" |
JWT.failed |
所有 JWT 政策都将在发生故障时设置同一变量。 | JWT.failed = true |
错误响应示例
处理错误时,最佳做法是捕获错误响应的 errorcode 部分。不要依赖 faultstring 中的文本,因为它可能会发生变化。
故障规则示例
<FaultRules>
<FaultRule name="JWT Policy Errors">
<Step>
<Name>JavaScript-1</Name>
<Condition>(fault.name Matches "TokenExpired")</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 Edge 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. See also Supported software and supported versions. |
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 Edge 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 政策
本部分介绍此政策触发错误时返回的错误代码和错误消息,以及 Edge 设置的故障变量。 在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息和处理故障。
运行时错误
政策执行时可能会发生这些错误。
| 故障代码 | 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 Edge 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 政策
本部分介绍了在此政策触发错误时返回的错误代码和错误消息,以及 Edge 设置的故障变量。 在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息和处理故障。
运行时错误
政策执行时可能会发生这些错误。
| 故障代码 | HTTP 状态 | 原因 | 修复 |
|---|---|---|---|
steps.keyvaluemapoperations.SetVariableFailed |
500 |
如果您尝试从已加密的键值对映射中检索值,并将该值设置为名称没有前缀 |
build |
steps.keyvaluemapoperations.UnsupportedOperationException |
500 |
如果在键值对映射操作政策中将 |
build |
部署错误
在您部署包含此政策的代理时,可能会发生这些错误。
| 错误名称 | 原因 | 修复 |
|---|---|---|
InvalidIndex |
如果在键值对映射操作政策的 <Get> 元素中指定的 index 特性为零或负数,则 API 代理的部署将失败。索引从 1 开始,因此零或负整数的索引被视为无效。 |
build |
KeyIsMissing |
如果 <Key> 元素完全缺失,或 <Parameter> 元素在键值对映射操作政策的 <InitialEntries> 元素的 <Entry> 下的 <Key> 元素中缺失,则会发生此错误。
|
build |
ValueIsMissing |
如果在键值对映射操作政策的 <InitialEntries> 元素的 <Entry> 元素下缺少 <Value> 元素,就会出现此错误。 |
build |
LDAP 政策
This policy uses the following error codes:
| Error Code | Message |
|---|---|
InvalidAttributeName |
Invalid attribute name {0}. |
InvalidSearchBase |
Search base can not be empty. |
InvalidValueForPassword |
Invalid value for password field. It can not be empty. |
InvalidSearchScope |
Invalid scope {0}. Allowed scopes are {1}. |
InvalidUserCredentials |
Invalid user credentials. |
InvalidExternalLdapReference |
Invalid external ldap reference {0}. |
LdapResourceNotFound |
Ldap resource {0} not found. |
BaseDNRequired |
Base DN required. |
OnlyReferenceOrValueIsAllowed |
Only value or reference is allowed for {0}. |
AttributesRequired |
At least one attribute required for search action. |
UserNameIsNull |
User name is null. |
SearchQueryAndUserNameCannotBePresent |
Both search query and username can not be present in the authentication action.
Please specify either one of them. |
MessageLogging 政策
本部分介绍此政策触发错误时返回的错误代码和错误消息,以及 Edge 设置的故障变量。 在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息和处理故障。
运行时错误
政策执行时可能会发生这些错误。
| 故障代码 | HTTP 状态 | 原因 |
|---|---|---|
steps.messagelogging.StepDefinitionExecutionFailed |
500 | 请参阅故障字符串。 |
部署错误
在您部署包含此政策的代理时,可能会发生这些错误。
| 错误名称 | 原因 | 修复 |
|---|---|---|
InvalidProtocol |
如果在 <Protocol> 元素中指定的协议无效,则 MessageLogging 政策的部署可能会失败,并出现此错误。有效协议为 TCP 和 UDP。对于通过 TLS/SSL 发送 syslog 消息,系统仅支持 TCP。 |
build |
InvalidPort |
如果未在 <Port> 元素中指定端口号或者此端口无效,则 MessageLogging 政策的部署可能会失败,并出现此错误。端口号必须是大于零的整数。 |
build |
故障变量
发生运行时错误时,系统会设置这些变量。如需了解详情,请参阅您需要了解的有关政策错误的信息。
| 变量 | 地点 | 示例 |
|---|---|---|
fault.name="fault_name" |
fault_name 是故障名称,如上面的运行时错误表中所列。故障名称是故障代码的最后一部分。 | fault.name Matches "StepDefinitionExecutionFailed" |
messagelogging.policy_name.failed |
policy_name 是抛出故障的政策的用户指定名称。 | messagelogging.ML-LogMessages.failed = true |
错误响应示例
{
"fault":{
"detail":{
"errorcode":"steps.messagelogging.StepDefinitionExecutionFailed"
},
"faultstring":"Execution failed"
}
}故障规则示例
<FaultRule name="MessageLogging">
<Step>
<Name>ML-LogMessages</Name>
<Condition>(fault.name Matches "StepDefinitionExecutionFailed") </Condition>
</Step>
<Condition>(messagelogging.ML-LogMessages.failed = true) </Condition>
</FaultRule>OASValidation 政策
This section describes the fault codes and error messages that are returned and fault variables that are set by Edge 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.oasvalidation.Failed |
500 | Request message body cannot be validated against the provided OpenAPI Specification. | |
steps.oasvalidation.SourceMessageNotAvailable |
500 |
Variable specified in the |
|
steps.oasvalidation.NotMessageVariable |
500 |
|
build |
Deployment errors
These errors can occur when you deploy a proxy containing this policy.
| Error name | Cause | |
|---|---|---|
ResourceDoesNotExist |
OpenAPI Specification referenced in the <OASResource> element does not exist.
|
|
ResourceCompileFailed |
OpenAPI Specification that is included in the deployment contains errors that prevent it from being compiled. This generally indicates that the specification is not a well-formed OpenAPI Specification 3.0. | |
BadResourceURL |
OpenAPI Specification referenced in the <OASResource> element cannot be processed. This can occur if the file is not a JSON or YAML file or the
file URL is not specified correctly.
|
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 "ResourceDoesNotExist" |
oasvalidation.policy_name.failed |
policy_name is the user-specified name of the policy that threw the fault. | oasvalidation.myoaspolicy.failed = true |
PopulateCache 政策
This section describes the fault codes and error messages that are returned and fault variables that are set by Edge 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 |
|---|---|---|
policies.populatecache.EntryCannotBeCached |
500 | An entry cannot be cached. The message object being cached is not an instance of a class that is Serializable. |
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 PopulateCache policy is set to
a name that does not exist in the environment where the API proxy is being deployed. |
build |
CacheNotFound |
The cache specified in the <CacheResource> element does not
exist. |
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 Runtime errors table above. The fault name is the last part of the fault code. | fault.name = "EntryCannotBeCached" |
populatecache.policy_name.failed |
policy_name is the user-specified name of the policy that threw the fault. | populatecache.POP-CACHE-1.failed = true |
Example error response
{ "fault": { "faultstring": "[entry] can not be cached. Only serializable entries are cached.", "detail": { "errorcode": "steps.populatecache.EntryCannotBeCached" } } }
Example fault rule
<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 政策
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 is set to a
name which does not exist in the environment where the API proxy is being deployed. |
build |
InvalidTimeout |
If the <CacheLookupTimeoutInSeconds> element is set to
a negative number, then the deployment of the API proxy fails. |
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
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 政策
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 |
|---|---|---|
InvalidTimeout |
If the
<CacheLookupTimeoutInSeconds> element of the ResponseCache policy is set to a negative number,
then the deployment of the API proxy fails. |
build |
InvalidCacheResourceReference |
This error occurs if the <CacheResource> element in a ResponseCache policy is set to a
name that does not exist in the environment where the API proxy is being deployed. |
build |
ResponseCacheStepAttachmentNotAllowedReq |
This error occurs if the same ResponseCache policy is attached to multiple request paths within any flows of an API proxy. | build |
ResponseCacheStepAttachmentNotAllowedResp |
This error occurs if the same ResponseCache policy is attached to multiple response paths within any flows of an API proxy. | build |
InvalidMessagePatternForErrorCode |
This error occurs if either the <SkipCacheLookup> or the <SkipCachePopulation>
element in a ResponseCache policy contains an invalid condition. |
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
OAuthV2 政策
本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Edge 设置的故障变量。 在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息和处理故障。
运行时错误
政策执行时可能会发生这些错误。
| 故障代码 | HTTP 状态 | 原因 | 由操作抛出 |
|---|---|---|---|
steps.oauth.v2.access_token_expired |
401 | 访问令牌已过期。 |
VerifyAccessToken |
steps.oauth.v2.access_token_not_approved |
401 | 访问令牌已被撤消。 | VerifyAccessToken |
steps.oauth.v2.apiresource_doesnot_exist |
401 | 所请求的资源不存在与访问令牌关联的任何 API 产品。 | VerifyAccessToken |
steps.oauth.v2.FailedToResolveAccessToken |
500 | 政策应在 <AccessToken> 元素中指定的变量中找到访问令牌,但无法解析该变量。 |
GenerateAccessToken |
steps.oauth.v2.FailedToResolveAuthorizationCode |
500 | 政策应在 <Code> 元素中指定的变量中找到授权代码,但无法解析该变量。 |
GenerateAuthorizationCode |
steps.oauth.v2.FailedToResolveClientId |
500 | 政策应在 <ClientId> 元素中指定的变量中找到客户端 ID,但无法解析该变量。 |
GenerateAccessToken GenerateAuthorizationCode GenerateAccessTokenImplicitGrant RefreshAccessToken |
steps.oauth.v2.FailedToResolveRefreshToken |
500 | 政策应在 <RefreshToken> 元素中指定的变量中找到刷新令牌,但无法解析该变量。 |
RefreshAccessToken |
steps.oauth.v2.FailedToResolveToken |
500 | 政策应在 <Tokens> 元素中指定的变量中找到令牌,但无法解析该变量。 |
ValidateToken |
steps.oauth.v2.InsufficientScope |
403 | 请求中提供的访问令牌的范围与验证访问令牌政策中指定的范围不匹配。要了解范围,请参阅使用 OAuth2 范围。 | VerifyAccessToken |
steps.oauth.v2.invalid_access_token |
401 | 从客户端发送的访问令牌无效。 | VerifyAccessToken |
steps.oauth.v2.invalid_client |
401 |
将政策的 注意:建议您更改现有故障规则条件,以捕获 |
GenerateAccessToken RefreshAccessToken |
steps.oauth.v2.InvalidRequest |
400 | 此错误名称用于多种不同类型的错误,通常适用于在请求中发送的丢失或不正确参数。如果将 <GenerateResponse> 设置为 false,则使用故障变量(如下所述)来检索错误的详细信息,例如故障名称和原因。 |
GenerateAccessToken GenerateAuthorizationCode GenerateAccessTokenImplicitGrant RefreshAccessToken |
steps.oauth.v2.InvalidAccessToken |
401 | 授权标头不包含“Bearer”一词,而这是必需的。例如:Authorization: Bearer your_access_token |
VerifyAccessToken |
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound |
401 |
API 代理不在与访问令牌相关联的产品中。 提示:确保与访问令牌关联的产品已正确配置。例如,如果在资源路径中使用通配符,请确保正确使用通配符。如需了解详情,请参阅创建 API 产品。 另请参阅这篇 Apigee 社区博文,详细了解造成此错误的原因。 |
VerifyAccessToken |
steps.oauth.v2.InvalidClientIdentifier |
500 |
将政策的 |
GenerateAccessToken |
steps.oauth.v2.InvalidParameter |
500 | 政策必须指定访问令牌或授权代码,但不能同时指定这两者。 | GenerateAuthorizationCode GenerateAccessTokenImplicitGrant |
steps.oauth.v2.InvalidTokenType |
500 | <Tokens>/<Token> 元素要求您指定令牌类型(例如 refreshtoken)。如果客户端传递的类型不正确,则会抛出此错误。 |
ValidateToken InvalidateToken |
steps.oauth.v2.MissingParameter |
500 | 响应类型为 token,但未指定授权类型。 |
GenerateAuthorizationCode GenerateAccessTokenImplicitGrant |
steps.oauth.v2.UnSupportedGrantType |
500 |
客户端指定的授权类型不受政策支持(未在 <SupportedGrantTypes> 元素中列出)。 注意:当前存在一个错误,即未正确抛出不支持的授权类型错误。如果发生不受支持的授权类型错误,则代理不会按预期进入错误流。 |
GenerateAccessToken GenerateAuthorizationCode GenerateAccessTokenImplicitGrant RefreshAccessToken |
部署错误
在您部署包含此政策的代理时,可能会发生这些错误。
| 错误名称 | 原因 |
|---|---|
InvalidValueForExpiresIn |
对于 |
InvalidValueForRefreshTokenExpiresIn |
对于 <RefreshTokenExpiresIn> 元素,有效值为正整数和 -1。 |
InvalidGrantType |
在 <SupportedGrantTypes> 元素中指定的授权类型无效。请参阅政策参考,获取有效类型的列表。 |
ExpiresInNotApplicableForOperation |
确保在 <Operations> 元素中指定的操作支持到期。例如,VerifyToken 操作不支持。 |
RefreshTokenExpiresInNotApplicableForOperation |
确保在 <Operations> 元素中指定的操作支持刷新令牌到期。例如,VerifyToken 操作不支持。 |
GrantTypesNotApplicableForOperation |
确保指定操作支持在 <SupportedGrantTypes> 中指定的授权类型。 |
OperationRequired |
您必须使用 注意:如果缺少 |
InvalidOperation |
您必须使用 注意:如果 |
TokenValueRequired |
您必须在 <Tokens> 元素中指定一个令牌 <Token> 值。 |
故障变量
当此政策在运行时触发错误时,将设置这些变量。
| 变量 | 地点 | 示例 |
|---|---|---|
fault.name="fault_name" |
fault_name 是故障名称,如上面的运行时错误表中所列。故障名称是故障代码的最后一部分。 | fault.name = "InvalidRequest" |
oauthV2.policy_name.failed |
policy_name 是抛出故障的政策的用户指定名称。 | oauthV2.GenerateAccesstoken.failed = true |
oauthV2.policy_name.fault.name |
policy_name 是抛出故障的政策的用户指定名称。 | oauthV2.GenerateAccesstoken.fault.name = InvalidRequest
注意:对于 VerifyAccessToken 操作,故障名称包括此后缀: |
oauthV2.policy_name.fault.cause |
policy_name 是抛出故障的政策的用户指定名称。 | oauthV2.GenerateAccesstoken.cause = Required param : grant_type |
错误响应示例
如果 <GenerateResponse> 元素为 true,则会将这些响应发送回客户端。
如果 <GenerateResponse> 为 true,则政策会针对生成令牌和代码的操作返回此格式的错误。如需完整列表,请参阅 OAuth HTTP 错误响应参考。
{"ErrorCode" : "invalid_client", "Error" :"ClientId is Invalid"}如果 <GenerateResponse> 为 true,则政策会针对验证和验证操作返回此格式的错误。如需完整列表,请参阅 OAuth HTTP 错误响应参考。
{ { "fault":{ "faultstring":"Invalid Access Token", "detail":{ "errorcode":"keymanagement.service.invalid_access_token" } } }
故障规则示例
<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 政策
本部分介绍此政策触发错误时返回的错误代码和错误消息,以及 Edge 设置的故障变量。 在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息和处理故障。
运行时错误
政策执行时可能会发生这些错误。 下面显示的错误名称是在发生错误时分配给 fault.name 变量的字符串。如需了解详情,请参阅下面的故障变量部分。
| 故障代码 | HTTP 状态 | 原因 |
|---|---|---|
steps.oauth.v2.access_token_expired |
500 | 发送到该政策的访问令牌已过期。 |
steps.oauth.v2.authorization_code_expired |
500 | 发送到该政策的授权代码已过期。 |
steps.oauth.v2.invalid_access_token |
500 | 发送到该政策的访问令牌无效。 |
steps.oauth.v2.invalid_client-invalid_client_id |
500 | 发送到该政策的客户 ID 无效。 |
steps.oauth.v2.invalid_refresh_token |
500 | 发送到该政策的刷新令牌无效。 |
steps.oauth.v2.invalid_request-authorization_code_invalid |
500 | 发送到该政策的授权代码无效。 |
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound |
401 | 如需了解如何排查此错误,请参阅此 Apigee 社区帖子。 |
steps.oauth.v2.refresh_token_expired |
500 | 发送到该政策的刷新令牌已过期。 |
部署错误
如需了解部署错误,请参阅界面中报告的消息。
故障变量
当此政策在运行时触发错误时,将设置这些变量。
| 变量 | 地点 | 示例 |
|---|---|---|
fault.name="fault_name" |
fault_name 是故障名称,如上面的运行时错误表中所列。故障名称是故障代码的最后一部分。 | fault.name Matches "IPDeniedAccess" |
oauthV2.policy_name.failed |
policy_name 是抛出故障的政策的用户指定名称。 | oauthV2.GetTokenInfo.failed = true |
oauthV2.policy_name.fault.name |
policy_name 是抛出故障的政策的用户指定名称。 | oauthV2.GetToKenInfo.fault.name = invalid_client-invalid_client_id |
oauthV2.policy_name.fault.cause |
policy_name 是抛出故障的政策的用户指定名称。 | oauthV2.GetTokenInfo.cause = ClientID is Invalid |
错误响应示例
{ "fault":{ "faultstring":"ClientId is Invalid", "detail":{ "errorcode":"keymanagement.service.invalid_client-invalid_client_id" } } }
故障规则示例
<FaultRule name="OAuthV2 Faults">
<Step>
<Name>AM-InvalidClientIdResponse</Name>
</Step>
<Condition>(fault.name = "invalid_client-invalid_client_id")</Condition>
</FaultRule>SetOAuthV2Info 政策
本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Edge 设置的故障变量。 在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息和处理故障。
运行时错误
政策执行时可能会发生这些错误。
| 故障代码 | HTTP 状态 | 原因 |
|---|---|---|
steps.oauth.v2.access_token_expired |
500 | 发送到该政策的访问令牌已过期。 |
steps.oauth.v2.invalid_access_token |
500 | 发送到该政策的访问令牌无效。 |
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound |
401 | 如需了解如何排查此错误,请参阅此 Apigee 社区帖子。 |
部署错误
如需了解部署错误,请参阅界面中报告的消息。
故障变量
当此政策在运行时触发错误时,将设置这些变量。
| 变量 | 其中 | 示例 |
|---|---|---|
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 Edge 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 this Apigee Community post 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>OAuthv1.0a 政策
The OAuthV1 Policy type defines the following error codes.
For OAuth-related HTTP error codes, see OAuth HTTP error response reference.
| Error Code | Message |
|---|---|
AppKeyNotResolved |
Could not resolve the app key with variable {0} |
ConsumerKeyNotResolved |
Could not resolve the consumer key with variable {0} |
RequestTokenNotResolved |
Could not resolve the request token with the variable {0} |
AccessTokenNotResolved |
Could not resolve the access token with the variable {0} |
ResponseGenerationError |
Error while generating response : {0} |
UnableToDetermineOperation |
Unable to determine an operation for stepDefinition {0} |
UnableToResolveOAuthConfig |
Unable to resolve the OAuth configuration for {0} |
AtLeastOneParamRequired |
At least one of AccessToken, RequestToken or ConsumerKey must be specified in
stepDefinition {0} |
SpecifyValueOrRefReqToken |
Specify Request Token as value or ref in stepDefinition {0} |
SpecifyValueOrRefAccToken |
Specify Access Token as value or ref in stepDefinition {0} |
SpecifyValueOrRefConKey |
Specify Consumer Key as value or ref in stepDefinition {0} |
SpecifyValueOrRefAppKey |
Specify App Key as value or ref in stepDefinition {0} |
ExpiresInNotApplicableForOperation |
ExpiresIn element is not valid for operation {0} |
InvalidValueForExpiresIn |
Invalid value for ExpiresIn element for operation {0} |
FailedToFetchApiProduct |
Failed to fetch api product for key {0} |
InvalidTokenType |
Valid token types : {0}, Invalid toke type {1} in stepDefinition {2} |
TokenValueRequired |
Token value is required in stepDefinition {0} |
FailedToResolveRealm |
Failed to resolve realm {0} |
GetOAuthV1Info 政策
No error codes are specified for the Get OAuth v1.0a Info policy.
DeleteOAuthV1Info 政策
On success, the policy returns a 200 status.
On failure, the policy returns 404 and output similar to the following (depending on whether you are deleting an access token, request token, or verifier.):
HTTP/1.1 404 Not Found Content-Type: application/json Content-Length: 144 Connection: keep-alive {"fault":{"faultstring":"Invalid Access Token","detail":{"errorcode":"keymanagement.service.invalid_request-access_token_invalid"}}}
PythonScript 政策
本部分介绍返回的错误代码、错误消息以及故障变量 在此政策触发错误时由 Edge 设置的值。在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息和处理故障。
运行时错误
政策执行时可能会发生这些错误。
| 故障代码 | HTTP 状态 | 原因 | 修复 |
|---|---|---|---|
steps.script.ScriptEvaluationFailed |
500 | PythonScript 政策可能会引发几种不同的 ScriptExecutionFailed 错误。经常 错误的类型包括 NameError 和 ZeroDivisionError。 | build |
部署错误
在您部署包含此政策的代理时,可能会发生这些错误。
| 错误名称 | 原因 | 修复 |
|---|---|---|
InvalidResourceUrlFormat |
如果 PythonScript 政策的 <ResourceURL> 或 <IncludeURL> 元素中指定的资源网址格式无效,则 API 代理的部署将失败。 |
build |
InvalidResourceUrlReference |
如果 <ResourceURL> 或 <IncludeURL> 元素引用了不存在的 PythonScript 文件,则 API 代理的部署将失败。引用的源文件必须存在于 API 代理、环境或组织级别。 |
build |
故障变量
当此政策在运行时触发错误时,将设置这些变量。如需了解详情,请参阅您需要了解的有关政策错误的信息。
| 变量 | 地点 | 示例 |
|---|---|---|
fault.name="fault_name" |
fault_name 是故障名称,如上面的运行时错误表中所列。 故障名称是故障代码的最后一部分。 | fault.name Matches "ScriptExecutionFailed" |
pythonscript.policy_name.failed |
policy_name 是抛出故障的政策的用户指定名称。 | pythonscript.PythonScript-1.failed = true |
错误响应示例
{ "fault": { "faultstring": "Execution of SetResponse failed with error: Pythonscript runtime error: "ReferenceError: "status" is not defined.\"", "detail": { "errorcode": "steps.script.ScriptExecutionFailed" } } }
故障规则示例
<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>
配额政策
本部分介绍此政策触发错误时返回的错误代码和错误消息,以及 Edge 设置的故障变量。 在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息和处理故障。
运行时错误
政策执行时可能会发生这些错误。
| 故障代码 | HTTP 状态 | 原因 | 修复 |
|---|---|---|---|
policies.ratelimit.FailedToResolveQuotaIntervalReference |
500 | 如果未在配额政策中定义 <Interval> 元素,就会出现此错误。此元素是必需的,用于指定配额所适用的时间间隔。时间间隔可以是使用 <TimeUnit> 元素定义的分钟、小时、天、周或月。 |
build |
policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference |
500 | 如果未在配额政策中定义 <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 |
如果在配额政策的 <AsynchronousConfiguration> 元素中为 <SyncIntervalInSeconds> 元素指定的值小于 0,则 API 代理的部署将失败。 |
build |
InvalidAsynchronizeConfigurationForSynchronousQuota |
如果在配额政策中将 <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 政策
本部分介绍了在此政策触发错误时返回的错误代码和错误消息,以及 Edge 设置的故障变量。 在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息和处理故障。
运行时错误
政策执行时可能会发生这些错误。
| 故障代码 | HTTP 状态 | 原因 | 修复 |
|---|---|---|---|
policies.resetquota.InvalidRLPolicy |
500 | 重置配额政策的 <Quota> 元素中指定的配额政策未在 API 代理中定义,因此在流中不可用。<Quota> 元素是必需的,用于标识如何通过重置配额政策更新计数器的目标配额政策。 |
build |
policies.resetquota.FailedToResolveAllowCountRef |
不适用 | 对政策的 <Allow> 元素中包含允许计数的变量的引用无法解析为值。此元素是必需的,并指定减少配额计数器的数量。 |
build |
policies.resetquota.FailedToResolveRLPolicy |
500 | 无法解析 <Quota> 元素中的 ref 属性引用的变量。 |
build |
部署错误
在您部署包含此政策的代理时,可能会发生这些错误。
| 错误名称 | 原因 | 修复 |
|---|---|---|
InvalidCount |
如果重置配额政策的 <Allow> 元素中指定的计数值不是整数,则表示 API 代理的部署会失败。
|
build |
RaiseFault 政策
This section describes the fault codes and error messages that are returned and fault variables that are set by Edge 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 Edge 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.
Errors returned from Edge policies follow a consistent format as described in the Error code reference.
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 |
SOAPMessageValidation 政策
This section describes the fault codes and error messages that are returned and fault variables that are set by Edge 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 Edge
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 |
SAMLAssertion 政策
本部分介绍返回的错误代码和错误消息 此政策触发错误时 Edge 设置的故障变量。 在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息和处理故障。
部署错误
在您部署包含此政策的代理时,可能会发生这些错误。
| 错误名称 | 原因 | 修复 |
|---|---|---|
SourceNotConfigured |
验证 SAML 断言政策的以下一个或多个元素未定义或为空:<Source>、<XPath>、<Namespaces>、<Namespace>。 |
build |
TrustStoreNotConfigured |
如果 <TrustStore> 元素为空或未在 ValidateSAMLAssertion 政策中指定,则 API 代理部署将失败。需要有效的信任库。 |
build |
NullKeyStoreAlias |
如果子元素 <Alias> 为空或未在生成 SAML 断言政策的 <Keystore> 元素中指定,则 API 代理部署将失败。需要有效的密钥库别名。 |
build |
NullKeyStore |
如果子元素 <Name> 为空或未在 GenerateSAMLAssertion 政策的 <Keystore> 元素中指定,则 API 代理部署将失败。需要有效的密钥库名称。 |
build |
NullIssuer |
如果 <Issuer> 元素为空或未在生成 SAML 断言政策中指定,则 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 政策
本部分介绍此政策触发错误时返回的错误代码和错误消息,以及 Edge 设置的故障变量。 在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息和处理故障。
运行时错误
政策执行时可能会发生这些错误。
| 故障代码 | HTTP 状态 | 原因 | 修复 |
|---|---|---|---|
steps.servicecallout.ExecutionFailed |
500 |
在以下情况下可能会发生此错误:
|
build |
steps.servicecallout.RequestVariableNotMessageType |
500 | 政策中指定的 Request 变量不是 Message 类型。例如,如果是字符串或其他非消息类型,您将看到此错误。 | build |
steps.servicecallout.RequestVariableNotRequestMessageType |
500 | 政策中指定的 Request 变量不是 Request Message 类型。例如,如果是 Response 类型,您将看到此错误。 | build |
部署错误
在您部署包含此政策的代理时,可能会发生这些错误。
| 错误名称 | 原因 | 修复 |
|---|---|---|
URLMissing |
<HTTPTargetConnection> 中的 <URL> 元素缺失或为空。 |
build |
ConnectionInfoMissing |
如果政策没有 <HTTPTargetConnection> 或 <LocalTargetConnection>元素,则会发生此错误。 |
build |
InvalidTimeoutValue |
如果 <Timeout> 值为负或为零,则会发生此错误。 |
build |
故障变量
发生运行时错误时,系统会设置这些变量。如需了解详情,请参阅您需要了解的有关政策错误的信息。
| 变量 | 地点 | 示例 |
|---|---|---|
fault.name="fault_name" |
fault_name 是故障名称,如上面的运行时错误表中所列。故障名称是故障代码的最后一部分。 | fault.name = "RequestVariableNotMessageType" |
servicecallout.policy_name.failed |
policy_name 是抛出故障的政策的用户指定名称。 | servicecallout.SC-GetUserData.failed = true |
错误响应示例
{ "fault":{ "detail":{ "errorcode":"steps.servicecallout.RequestVariableNotMessageType" }, "faultstring":"ServiceCallout[ServiceCalloutGetMockResponse]: request variable data_str value is not of type Message" } }
故障规则示例
<faultrule name="VariableOfNonMsgType"></faultrule><FaultRule name="RequestVariableNotMessageType">
<Step>
<Name>AM-RequestVariableNotMessageType</Name>
</Step>
<Condition>(fault.name = "RequestVariableNotMessageType")</Condition>
</FaultRule>SpikeArrest 政策
This section describes the fault codes and error messages that are returned and fault variables that are set by Edge 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 Spike Arrest
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 was 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 Spike Arrest
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>StatisticsCollector 政策
本部分介绍当此政策触发错误时所设置的错误消息和流变量。在为代理开发故障规则时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息和处理故障。
运行时错误
无。
部署错误
| 错误名称 | 原因 | 修复 |
|---|---|---|
UnsupportedDatatype |
如果 Statistics Collector 政策的 <Statistic> 元素中的 ref 属性指定的变量类型不受支持,则 API 代理的部署将失败。支持的数据类型有 string、integer、float、long、double 和 boolean。 |
build |
InvalidName |
如果用于引用为在 Statistics Collector 政策的 <Statistic> 元素中定义的指定变量收集的数据的名称与系统定义的变量冲突,则 API 代理的部署将失败。一些已知的系统定义的变量有 organization 和 environment。 |
build |
DatatypeMissing |
如果缺少 Statistics Collector 政策的 <Statistic> 元素中的 ref 属性指定的变量类型,则 API 代理的部署将失败。 |
build |
故障变量
无。
VerifyAPIKey 政策
This section describes the fault codes and error messages that are returned and fault variables that are set by Edge 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.CompanyStatusNotActive |
401 | The Company associated with the Developer App that has the API key you are using has an inactive status. When a Company's status is set to inactive, you cannot access the developers or apps associated with that Company. An org admin can change a Company's status using the management API. See Set the Status of a Company. |
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 Edge. An org admin can change the status of a Developer App using the management API. See Approve or Revoke Developer App. |
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 Edge, but it is invalid. When Edge looks up the key in its database, it must exactly match the on 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 Register apps and manage API keys. |
oauth.v2.InvalidApiKeyForGivenResource |
401 | An API key was received by Edge, 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>VerifyJWS 政策
This section describes the fault codes and error messages that are returned and fault variables that are set by Edge 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.name="fault_name" |
fault_name 是故障名称,如上面的运行时错误表中所列。故障名称是故障代码的最后一部分。 | fault.name Matches "TokenExpired" |
JWS.failed |
所有 JWT 政策都将在发生故障时设置同一变量。 | jws.JWS-Policy.failed = true |
错误响应示例
处理错误时,最佳做法是捕获错误响应的 errorcode 部分。不要依赖 faultstring 中的文本,因为它可能会发生变化。
故障规则示例
<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 政策
本部分介绍了在此政策触发错误时返回的错误代码和错误消息,以及 Edge 设置的故障变量。 在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息和处理故障。
运行时错误
政策执行时可能会发生这些错误。
| 故障代码 | HTTP 状态 | 发生的条件 |
|---|---|---|
steps.jwt.AlgorithmInTokenNotPresentInConfiguration |
401 | 验证政策包含多个算法时发生。 |
steps.jwt.AlgorithmMismatch |
401 | 生成政策中指定的算法与验证政策中要求的算法不匹配。指定的算法必须匹配。 |
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.InvalidCurve |
401 | 密钥指定的曲线对椭圆曲线算法无效。 |
steps.jwt.InvalidJsonFormat |
401 | 标头或载荷中存在无效的 JSON。 |
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 |
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> 元素为空,则会发生此错误。如果存在,必须使用 Edge 流变量名称对其进行定义。 |
build |
InvalidPublicKeyValue |
如果 <PublicKey> 元素的子元素 <JWKS> 中所用的值未使用 RFC 7517 中说明的有效格式,部署将失败。 |
build |
InvalidConfigurationForActionAndAlgorithm |
如果 <PrivateKey> 元素与 HS 系列算法搭配使用,或者 <SecretKey> 元素与 RSA Family 算法搭配使用,部署将失败。 |
build |
故障变量
发生运行时错误时,系统会设置这些变量。如需了解详情,请参阅您需要了解的有关政策错误的信息。
| 变量 | 地点 | 示例 |
|---|---|---|
fault.name="fault_name" |
fault_name 是故障名称,如上面的运行时错误表中所列。故障名称是故障代码的最后一部分。 | fault.name Matches "TokenExpired" |
JWT.failed |
所有 JWT 政策都将在发生故障时设置同一变量。 | JWT.failed = true |
错误响应示例
处理错误时,最佳做法是捕获错误响应的 errorcode 部分。不要依赖 faultstring 中的文本,因为它可能会发生变化。
故障规则示例
<FaultRules>
<FaultRule name="JWT Policy Errors">
<Step>
<Name>JavaScript-1</Name>
<Condition>(fault.name Matches "TokenExpired")</Condition>
</Step>
<Condition>JWT.failed=true</Condition>
</FaultRule>
</FaultRules>
XMLThreatProtection 政策
本部分介绍此政策触发错误时返回的错误代码和错误消息,以及 Edge 设置的故障变量。 在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息和处理故障。
运行时错误
政策执行时可能会发生这些错误。
| 故障代码 | 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 |
注意:
- 错误名称 ExecutionFailed 是默认错误名称,无论检测到何种错误类型,都将返回此错误;但是,可以通过设置组织级属性来更改此默认值。设置此属性后,错误名称将反映实际错误。例如,“TextExceeded”或“AttrValueExceeded”。如需了解详情,请参阅使用说明。
- 500 HTTP 状态是默认值;但是,您可以通过设置组织级属性将 HTTP 状态更改为 400(对于请求流故障)。如需了解详情,请参阅使用说明。
部署错误
无。
故障变量
发生运行时错误时,系统会设置这些变量。如需了解详情,请参阅您需要了解的有关政策错误的信息。
| 变量 | 地点 | 示例 |
|---|---|---|
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 政策
本部分介绍此政策触发错误时返回的错误代码和错误消息,以及 Edge 设置的故障变量。 在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息和处理故障。
运行时错误
政策执行时可能会发生这些错误。
| 故障代码 | HTTP 状态 | 原因 | 修复 |
|---|---|---|---|
steps.xmltojson.ExecutionFailed |
500 | 当输入负载 (XML) 为空或输入 XML 无效或格式有误时,就会出现此错误。 | build |
steps.xmltojson.InCompatibleType |
500 | 如果 <Source> 元素中定义的变量类型与 <OutputVariable> 元素不同,则会出现此错误。<Source> 元素中包含的变量类型和 <OutputVariable> 元素必须与此变量完全匹配。 |
build |
steps.xmltojson.InvalidSourceType |
500 | 如果用于定义 <Source> 元素的变量类型无效,则会出现此错误。变量的有效类型为消息和字符串。 |
build |
steps.xmltojson.OutputVariableIsNotAvailable |
500 | 如果 XML 到 JSON 政策 的 <Source> 元素中指定的变量为字符串类型,并且未定义 <OutputVariable> 元素,则会出现此错误。如果 <Source> 元素中定义的变量为字符串类型,则 <OutputVariable> 元素是必填的。 |
build |
steps.xmltojson.SourceUnavailable |
500 |
如果 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
XSL Transform 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 XSL Transform policy is empty, then the
deployment of the API proxy fails. |
build |
XSLInvalidResourceType |
If the resource type specified in the <ResourceURL> element of the XSL Transform
policy is not of type xsl, then the deployment of the API proxy fails. |
build |