政策错误参考文档

本页面适用于 ApigeeApigee Hybrid

查看 Apigee Edge 文档。

AccessControl 政策

本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息处理故障

运行时错误

政策执行时可能会发生这些错误。

故障代码 HTTP 状态 原因 修复
accesscontrol.IPDeniedAccess 403 客户端 IP 地址或 API 请求中传递的 IP 地址与在访问权限控制政策的 <MatchRule> 元素内的 <SourceAddress> 元素中指定的 IP 地址匹配,并且 <MatchRule> 元素的 action 属性设置为 DENY
accesscontrol.InvalidIPAddressInVariable 500 <ClientIPVariable> 中的流变量包含无效的 IP 地址。

故障变量

发生运行时错误时,系统会设置这些变量。如需了解详情,请参阅特定于政策错误的变量

变量 其中 示例
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":"steps.accesscontrol.IPDeniedAccess"
      }
   }
}

故障规则示例

<FaultRule name="IPDeniedAccess">
    <Step>
        <Name>AM-IPDeniedAccess</Name>
        <Condition>(fault.name Matches "IPDeniedAccess") </Condition>
    </Step>
    <Condition>(acl.failed = true) </Condition>
</FaultRule>

AccessEntity 政策

如需了解相关信息,请参阅有关政策错误的注意事项处理故障

运行时错误

无。

部署错误

错误名称 故障字符串 HTTP 状态 发生的条件
InvalidEntityType Invalid type [entity_type] in ACCESSENTITYStepDefinition [policy_name] 不适用 使用的实体类型必须是受支持的类型之一。

AssignMessage 政策

本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息处理故障

运行时错误

政策执行时可能会发生这些错误。

故障代码 HTTP 状态 原因 修复
steps.assignmessage.SetVariableFailed 500 该政策无法设置变量。请参阅故障字符串,查看未解析变量的名称。
steps.assignmessage.VariableOfNonMsgType 500

如果 <Copy> 元素中的 source 属性类型不是消息类型,则会出现此错误。

消息类型变量表示整个 HTTP 请求和响应。内置 Apigee 流变量 requestresponsemessage 都属于消息类型。如需详细了解消息变量,请参阅变量参考

steps.assignmessage.UnresolvedVariable 500

如果 AssignMessage 政策中指定的变量为以下任一项,就会出现此错误:

  • 超出范围(在执行政策的特定流中不可用)
  • 无法解析(未定义)

部署错误

在您部署包含此政策的代理时,可能会发生这些错误。

错误名称 原因 修复
InvalidIndex 如果 AssignMessage 政策的 <Copy> 和/或 <Remove> 元素中指定的索引为 0 或负数,则 API 代理的部署将失败。
InvalidVariableName 如果子元素 <Name> 为空或未在 <AssignVariable> 元素中指定,则 API 代理的部署将失败,因为没有向其分配值的有效变量名称。必须提供有效的变量名称。
InvalidPayload 政策中指定的负载无效。

故障变量

当此政策在运行时触发错误时,将设置这些变量。如需了解详情,请参阅您需要了解的有关政策错误的信息

变量 其中 示例
fault.name="FAULT_NAME" FAULT_NAME 是故障名称,如上面的运行时错误表中所列。故障名称是故障代码的最后一部分。 fault.name Matches "UnresolvedVariable"
assignmessage.POLICY_NAME.failed POLICY_NAME 是抛出故障的政策的用户指定名称。 assignmessage.AM-SetResponse.failed = true

错误响应示例

{
   "fault":{
      "detail":{
         "errorcode":"steps.assignmessage.VariableOfNonMsgType"
      },
      "faultstring":"AssignMessage[AM-SetResponse]: value of variable is not of type Message"
   }
}

故障规则示例

<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>

基本身份验证政策

本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。在开发故障规则以处理错误时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息处理故障

运行时错误

政策执行时可能会发生这些错误。

故障代码 HTTP 状态 原因 修复
steps.basicauthentication.InvalidBasicAuthenticationSource 500 如果采用 Base64 编码的传入字符串不包含有效值或标头格式不正确(例如,不以 Basic 开头),系统会进行解码。
steps.basicauthentication.UnresolvedVariable 500 解码或编码所需的源变量不存在。仅当 IgnoreUnresolvedVariables 为 false 时才会发生此错误。

部署错误

在您部署包含此政策的代理时,可能会发生这些错误。

错误名称 发生的条件 修复
UserNameRequired 已命名的操作必须存在 <User> 元素。
PasswordRequired 已命名的操作必须存在 <Password> 元素。
AssignToRequired 已命名的操作必须存在 <AssignTo> 元素。
SourceRequired 已命名的操作必须存在 <Source> 元素。

故障变量

发生运行时错误时,系统会设置这些变量。如需了解详情,请参阅您需要了解的有关政策错误的信息

变量 其中 示例
fault.name="fault_name" fault_name 是故障名称,如上面的运行时错误表中所列。故障名称是故障代码的最后一部分。 fault.name Matches "UnresolvedVariable"
BasicAuthentication.policy_name.failed policy_name 是抛出故障的政策的用户指定名称。 BasicAuthentication.BA-Authenticate.failed = true

错误响应示例

{
   "fault":{
      "detail":{
         "errorcode":"steps.basicauthentication.UnresolvedVariable"
      },
      "faultstring":"Unresolved variable : request.queryparam.password"
   }
}

故障规则示例

<FaultRule name="Basic Authentication Faults">
    <Step>
        <Name>AM-UnresolvedVariable</Name>
        <Condition>(fault.name Matches "UnresolvedVariable") </Condition>
    </Step>
    <Step>
        <Name>AM-AuthFailedResponse</Name>
        <Condition>(fault.name = "InvalidBasicAuthenticationSource")</Condition>
    </Step>
    <Condition>(BasicAuthentication.BA-Authentication.failed = true) </Condition>
</FaultRule>

DecodeJWS 政策

This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Occurs when
steps.jws.FailedToDecode 401 The policy was unable to decode the JWS. The JWS is possibly corrupted.
steps.jws.FailedToResolveVariable 401 Occurs when the flow variable specified in the <Source> element of the policy does not exist.
steps.jws.InvalidClaim 401 For a missing claim or claim mismatch, or a missing header or header mismatch.
steps.jws.InvalidJsonFormat 401 Invalid JSON found in the JWS header.
steps.jws.InvalidJws 401 This error occurs when the JWS signature verification fails.
steps.jws.InvalidPayload 401 The JWS payload is invalid.
steps.jws.InvalidSignature 401 <DetachedContent> is omitted and the JWS has a detached content payload.
steps.jws.MissingPayload 401 The JWS payload is missing.
steps.jws.NoAlgorithmFoundInHeader 401 Occurs when the JWS omits the algorithm header.
steps.jws.UnknownException 401 An unknown exception occurred.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Occurs when
InvalidAlgorithm The only valid values are: RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384, ES512, HS256, HS384, HS512.

EmptyElementForKeyConfiguration

FailedToResolveVariable

InvalidConfigurationForActionAndAlgorithmFamily

InvalidConfigurationForVerify

InvalidEmptyElement

InvalidFamiliesForAlgorithm

InvalidKeyConfiguration

InvalidNameForAdditionalClaim

InvalidNameForAdditionalHeader

InvalidPublicKeyId

InvalidPublicKeyValue

InvalidSecretInConfig

InvalidTypeForAdditionalClaim

InvalidTypeForAdditionalHeader

InvalidValueForElement

InvalidValueOfArrayAttribute

InvalidVariableNameForSecret

MissingConfigurationElement

MissingElementForKeyConfiguration

MissingNameForAdditionalClaim

MissingNameForAdditionalHeader

Other possible deployment errors.

Fault variables

These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors.

Variables Where Example
fault.name="fault_name" fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "TokenExpired"
JWS.failed All JWS policies set the same variable in the case of a failure. jws.JWS-Policy.failed = true

Example error response

For error handling, the best practice is to trap the errorcode part of the error response. Do not rely on the text in the faultstring, because it could change.

Example fault rule

<FaultRules>
    <FaultRule name="JWS Policy Errors">
        <Step>
            <Name>JavaScript-1</Name>
            <Condition>(fault.name Matches "TokenExpired")</Condition>
        </Step>
        <Condition>JWS.failed=true</Condition>
    </FaultRule>
</FaultRules>

DecodeJWT 政策

本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。 在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息处理故障

运行时错误

政策执行时可能会发生这些错误。

故障代码 HTTP 状态 原因 修复
steps.jwt.FailedToDecode 401 在政策无法解码 JWT 时发生。JWT 格式可能格式不正确、无效或不可解码。
steps.jwt.FailedToResolveVariable 401 在政策的 <Source> 元素中指定的流变量不存在时发生。
steps.jwt.InvalidToken 401 如果政策的 <Source> 元素中指定的流变量超出范围或无法解析,则会发生此错误。

部署错误

在您部署包含此政策的代理时,可能会发生这些错误。

错误名称 原因 修复
InvalidEmptyElement 在政策的 <Source> 元素中未指定包含要解码的 JWT 的流变量时发生。

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 "InvalidToken"
JWT.failed All JWT policies set the same variable in the case of a failure. JWT.failed = true

Example error response

JWT Policy Fault Codes

For error handling, the best practice is to trap the errorcode part of the error response. Do not rely on the text in the faultstring, because it could change.

Example fault rule

    <FaultRules>
        <FaultRule name="JWT Policy Errors">
            <Step>
                <Name>JavaScript-1</Name>
                <Condition>(fault.name Matches "InvalidToken")</Condition>
            </Step>
            <Condition>JWT.failed=true</Condition>
        </FaultRule>
    </FaultRules>
    

ExtractVariables 政策

本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息处理故障

运行时错误

政策执行时可能会发生这些错误。

故障代码 HTTP 状态 原因 修复
steps.extractvariables.ExecutionFailed 500

在以下情况下,会发生此错误:

  • 输入载荷(JSON、XML)为空。
  • 传递给政策的输入(JSON、XML 等)无效或格式不正确。
steps.extractvariables.ImmutableVariable 500 政策中使用的变量不可变。政策无法设置此变量。 不适用
steps.extractvariables.InvalidJSONPath 500 如果在政策的 JSONPath 元素中使用了无效的 JSON 路径,则会出现此错误。例如,如果 JSON 载荷没有对象 Name,但您在政策中指定 Name 作为路径,则会出现此错误。
steps.extractvariables.JsonPathParsingFailure 500 当政策无法解析 JSON 路径并从 Source 元素中指定的流变量提取数据时,会发生此错误。如果当前流中不存在 Source 元素中指定的流变量,通常就会发生这种情况。
steps.extractvariables.SetVariableFailed 500 如果政策无法为变量设置值,则会出现此错误。如果您尝试将值分配给多个名称以采用嵌套点分隔格式的相同字词开头的变量,通常会发生此错误。
steps.extractvariables.SourceMessageNotAvailable 500 如果政策的 Source 元素中指定的消息变量为以下任意一项,就会出现此错误:
  • 超出范围(在执行政策的特定流中不可用)
  • 无法解析(未定义)
steps.extractvariables.UnableToCast 500 如果政策无法将提取的值转换为变量,就会出现此错误。如果您尝试将一种数据类型的值设置为另一种数据类型的变量,通常就会发生这种情况。

部署错误

在您部署包含此政策的代理时,可能会发生这些错误。

错误名称 原因 修复
NothingToExtract 如果政策没有元素 URIPathQueryParamHeaderFormParamXMLPayloadJSONPayload 中的任一个,则 API 代理部署将失败,因为没有要提取的内容。
NONEmptyPrefixMappedToEmptyURI 如果政策在 XMLPayload 元素下的 Namespace 元素中定义了一个前缀,但未定义 URI,则会出现此错误。
DuplicatePrefix 如果政策在 XMLPayload 元素下的 Namespace 元素中多次定义了相同的前缀,就会出现此错误。
NoXPathsToEvaluate 如果政策在 XMLPayload 元素中没有 XPath 元素,则 API 代理的部署将失败并显示此错误。
EmptyXPathExpression 如果政策在 XMLPayload 元素内包含空的 XPath 表达式,则 API 代理部署将失败。
NoJSONPathsToEvaluate 如果政策在 JSONPayload 元素中没有 JSONPath 元素,则 API 代理的部署将失败并显示此错误。
EmptyJSONPathExpression 如果政策在 XMLPayload 元素内包含空的 XPath 表达式,则 API 代理部署将失败。
MissingName 如果政策在 QueryParamHeaderFormParamVariable等任何政策元素中没有 name 属性,则 API 代理部署将失败。
PatternWithoutVariable 如果政策未在 Pattern 元素中指定变量,则 API 代理部署将失败。Pattern 元素需要存储所提取数据的变量的名称。
CannotBeConvertedToNodeset 如果政策具有 XPath 表达式(其中将 Variable 类型定义为 nodeset),但无法将表达式转换为 nodeset,则 API 代理部署将失败。
JSONPathCompilationFailed 政策无法编译指定的 JSON 路径。 不适用
InstantiationFailed 无法实例化此政策。 不适用
XPathCompilationFailed 如果 XPath 元素中使用的前缀或值不是政策中声明的任何命名空间的一部分,则 API 代理部署将失败。
InvalidPattern 如果政策中的任何元素(如 URIPathQueryParamHeaderFormParamXMLPayloadJSONPayload)中的 Pattern 元素定义无效,则 API 代理部署将失败。

故障变量

当此政策在运行时触发错误时,将设置这些变量。如需了解详情,请参阅您需要了解的有关政策错误的信息

变量 其中 示例
fault.name="fault_name" fault_name 是故障名称,如上面的运行时错误表中所列。故障名称是故障代码的最后一部分。 fault.name = "SourceMessageNotAvailable"
extractvariables.policy_name.failed policy_name 是抛出故障的政策的用户指定名称。 extractvariables.EV-ParseJsonResponse.failed = true

错误响应示例

{
   "fault":{
      "detail":{
         "errorcode":"steps.extractvariables.SourceMessageNotAvailable"
      },
      "faultstring":"request message is not available for ExtractVariable: EV-ParseJsonResponse"
   }
}

故障规则示例

<FaultRule name="Extract Variable Faults">
    <Step>
        <Name>AM-CustomErrorMessage</Name>
        <Condition>(fault.name = "SourceMessageNotAvailable") </Condition>
    </Step>
    <Condition>(extractvariables.EM-ParseJsonResponse.failed = true) </Condition>
</FaultRule>

GenerateJWS 政策

本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息处理故障

运行时错误

政策执行时可能会发生这些错误。

故障代码 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

EmptyElementForKeyConfiguration

FailedToResolveVariable

InvalidConfigurationForActionAndAlgorithmFamily

InvalidConfigurationForVerify

InvalidEmptyElement

InvalidFamiliesForAlgorithm

InvalidKeyConfiguration

InvalidNameForAdditionalClaim

InvalidNameForAdditionalHeader

InvalidPublicKeyId

InvalidPublicKeyValue

InvalidSecretInConfig

InvalidTypeForAdditionalClaim

InvalidTypeForAdditionalHeader

InvalidValueForElement

InvalidValueOfArrayAttribute

InvalidVariableNameForSecret

MissingConfigurationElement

MissingElementForKeyConfiguration

MissingNameForAdditionalClaim

MissingNameForAdditionalHeader

其他可能的部署错误。

Fault variables

These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors.

Variables Where Example
fault.name="fault_name" fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "TokenExpired"
JWS.failed All JWS policies set the same variable in the case of a failure. jws.JWS-Policy.failed = true

Example error response

For error handling, the best practice is to trap the errorcode part of the error response. Do not rely on the text in the faultstring, because it could change.

Example fault rule

<FaultRules>
    <FaultRule name="JWS Policy Errors">
        <Step>
            <Name>JavaScript-1</Name>
            <Condition>(fault.name Matches "TokenExpired")</Condition>
        </Step>
        <Condition>JWS.failed=true</Condition>
    </FaultRule>
</FaultRules>

GenerateJWT 政策

本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。 在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息处理故障

运行时错误

政策执行时可能会发生这些错误。

故障代码 HTTP 状态 发生的条件
steps.jwt.AlgorithmInTokenNotPresentInConfiguration 401 验证政策包含多个算法时发生。
steps.jwt.AlgorithmMismatch 401 生成政策中指定的算法与验证政策中要求的算法不匹配。指定的算法必须匹配。
steps.jwt.EncryptionFailed 401 创建加密 JWT 失败且原因不明
steps.jwt.FailedToDecode 401 该政策无法解码 JWT。JWT 可能已损坏。
steps.jwt.GenerationFailed 401 该政策无法生成 JWT。
steps.jwt.InsufficientKeyLength 401 HS256 算法的密钥小于 32 个字节,HS386 算法的密钥少于 48 个字节,HS512 算法的密钥少于 64 个字节。
steps.jwt.InvalidClaim 401 用于缺失声明或声明不匹配,或者缺少标题或标头不匹配的情况。
steps.jwt.InvalidConfiguration 401 同时存在 <Algorithm><Algorithms> 元素。
steps.jwt.InvalidCurve 401 密钥指定的曲线对椭圆曲线算法无效。
steps.jwt.InvalidJsonFormat 401 标头或载荷中存在无效的 JSON。
steps.jwt.InvalidPasswordKey 401 指定的密钥不符合要求。
steps.jwt.InvalidPrivateKey 401 指定的密钥不符合要求。
steps.jwt.InvalidPublicKey 401 指定的密钥不符合要求。
steps.jwt.InvalidSecretKey 401 指定的密钥不符合要求。
steps.jwt.InvalidToken 401 当 JWT 签名验证失败时,会发生此错误。
steps.jwt.JwtAudienceMismatch 401 目标对象声明未通过令牌验证。
steps.jwt.JwtIssuerMismatch 401 颁发者声明未通过令牌验证。
steps.jwt.JwtSubjectMismatch 401 主题声明未通过令牌验证。
steps.jwt.KeyIdMissing 401 验证政策使用 JWKS 作为公钥的来源,但已签名的 JWT 在标头中不包含的 kid 属性。
steps.jwt.KeyParsingFailed 401 无法通过给定密钥信息解析公钥。
steps.jwt.NoAlgorithmFoundInHeader 401 JWT 不包含算法标头时发生。
steps.jwt.NoMatchingPublicKey 401 验证政策使用 JWKS 作为公钥的来源,但已签名的 JWT 中的 kid 未列在 JWKS 中。
steps.jwt.SigningFailed 401 GenerateJWT 中,HS384 或 HS512 算法的密钥大小小于下限。
steps.jwt.TokenExpired 401 该政策尝试验证过期的令牌。
steps.jwt.TokenNotYetValid 401 令牌尚未生效。
steps.jwt.UnhandledCriticalHeader 401 验证 JWT 政策在 crit 标头中发现的标头未在 KnownHeaders 中列出。
steps.jwt.UnknownException 401 发生未知异常。
steps.jwt.WrongKeyType 401 指定的密钥类型不正确。例如,为椭圆曲线算法指定 RSA 密钥,或为 RSA 算法指定了曲线密钥。

部署错误

在您部署包含此政策的代理时,可能会发生这些错误。

错误名称 原因 修复
InvalidNameForAdditionalClaim 如果 <AdditionalClaims> 元素的子元素 <Claim> 中使用的声明是以下注册名称之一,部署将失败:kidisssubaudiatexpnbfjti
InvalidTypeForAdditionalClaim 如果 <AdditionalClaims> 元素的子元素 <Claim> 中使用的声明不是 stringnumberbooleanmap 之一,部署将失败。
MissingNameForAdditionalClaim 如果未在 <AdditionalClaims> 元素的子元素 <Claim> 中指定声明的名称,部署将失败。
InvalidNameForAdditionalHeader <AdditionalClaims> 元素的子元素 <Claim> 中使用的声明的名称为 algtyp 时会发生此错误。
InvalidTypeForAdditionalHeader 如果 <AdditionalClaims> 元素的子元素 <Claim> 中使用的声明类型不是 stringnumberbooleanmap 之一,部署将失败。
InvalidValueOfArrayAttribute <AdditionalClaims> 元素的子元素 <Claim> 中数组特性的值未设置为 truefalse 时会发生此错误。
InvalidConfigurationForActionAndAlgorithm 如果 <PrivateKey> 元素与 HS 系列算法搭配使用,或者 <SecretKey> 元素与 RSA Family 算法搭配使用,部署将失败。
InvalidValueForElement 如果 <Algorithm> 元素中指定的值不受支持,部署将失败。
MissingConfigurationElement 如果 <PrivateKey> 元素未与 RSA 系列算法搭配使用,或者 <SecretKey> 元素未与 HS 系列算法搭配使用,则会发生此错误。
InvalidKeyConfiguration 如果未在 <PrivateKey><SecretKey> 元素中定义子元素 <Value>,部署将失败。
EmptyElementForKeyConfiguration 如果 <PrivateKey><SecretKey> 元素的子元素 <Value> 的 ref 特性为空或未指定,部署将失败。
InvalidVariableNameForSecret 如果在 <PrivateKey><SecretKey> 元素的子元素 <Value> 的 ref 特性中指定的流变量名称不包含专用前缀 (private.),则会出现此错误。
InvalidSecretInConfig 如果 <PrivateKey><SecretKey> 元素的子元素 <Value> 不包含专用前缀 (private.),则会出现此错误。
InvalidTimeFormat 如果 <NotBefore> 元素中指定的值未使用支持的格式,则部署将失败。

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 "InvalidToken"
JWT.failed All JWT policies set the same variable in the case of a failure. JWT.failed = true

Example error response

JWT Policy Fault Codes

For error handling, the best practice is to trap the errorcode part of the error response. Do not rely on the text in the faultstring, because it could change.

Example fault rule

    <FaultRules>
        <FaultRule name="JWT Policy Errors">
            <Step>
                <Name>JavaScript-1</Name>
                <Condition>(fault.name Matches "InvalidToken")</Condition>
            </Step>
            <Condition>JWT.failed=true</Condition>
        </FaultRule>
    </FaultRules>
    

JavaCallout 政策

本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息处理故障

运行时错误

政策执行时可能会发生这些错误。

故障代码 HTTP 状态 原因 修复
steps.javacallout.ExecutionError 500 当 Java 代码执行 JavaCallout policy 时抛出异常或返回 null 时发生。

部署错误

部署包含政策的代理时,可能会出现此类错误。

错误名称 故障字符串 HTTP 状态 发生的条件
ResourceDoesNotExist Resource with name [name] and type [type] does not exist 不适用 <ResourceURL> 元素中指定的文件不存在。
JavaCalloutInstantiationFailed Failed to instantiate the JavaCallout Class [classname] 不适用 <ClassName> 元素中指定的类文件不在 jar 中。
IncompatibleJavaVersion Failed to load java class [classname] definition due to - [reason] 不适用 请参阅故障字符串。支持的 Java 版本包括:Oracle JDK 7/8 和 OpenJDK 7/8
JavaClassNotFoundInJavaResource Failed to find the ClassName in java resource [jar_name] - [class_name] 不适用 请参阅故障字符串。
JavaClassDefinitionNotFound Failed to load java class [class_name] definition due to - [reason] 不适用 请参阅故障字符串。
NoAppropriateConstructor No appropriate constructor found in JavaCallout class [class_name] 不适用 请参阅故障字符串。
NoResourceForURL Could not locate a resource with URL [string] 不适用 请参阅故障字符串。

故障变量

此政策触发错误时设置这些变量。如需了解详情,请参阅您需要了解的有关政策错误的信息

变量 其中 示例
fault.name="fault_name" fault_name 是故障名称,如上面的运行时错误表中所列。故障名称是故障代码的最后一部分。 fault.name Matches "ExecutionError"
javacallout.policy_name.failed policy_name 是抛出故障的政策的用户指定名称。 javacallout.JC-GetUserData.failed = true

错误响应示例

{
   "fault":{
      "faultstring":"Failed to execute JavaCallout. [policy_name]",
      "detail":{
         "errorcode":"javacallout.ExecutionError"
      }
   }
}

故障规则示例

<FaultRule name="JavaCalloutFailed">
    <Step>
        <Name>AM-JavaCalloutError</Name>
    </Step>
    <Condition>(fault.name Matches "ExecutionError") </Condition>
</FaultRule>

JavaScript 政策

本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息处理故障

运行时错误

政策执行时可能会发生这些错误。

故障代码 HTTP 状态 原因 修复
steps.javascript.ScriptExecutionFailed 500 JavaScript 政策可能会抛出许多不同类型的 ScriptExecutionFailed 错误。 常见的错误类型包括:RangeErrorReferenceErrorSyntaxErrorTypeErrorURIError
steps.javascript.ScriptExecutionFailedLineNumber 500 JavaScript 代码中出现错误。请参阅故障字符串了解详情。 不适用
steps.javascript.ScriptSecurityError 500 JavaScript 执行时出现安全错误。请参阅故障字符串了解详情。

部署错误

在您部署包含此政策的代理时,可能会发生这些错误。

错误名称 原因 修复
InvalidResourceUrlFormat 如果 JavaScript 政策的 <ResourceURL><IncludeURL> 元素中指定的资源网址格式无效,则 API 代理的部署将失败。
InvalidResourceUrlReference 如果 <ResourceURL><IncludeURL> 元素引用了不存在的 JavaScript 文件,则 API 代理的部署将失败。引用的源文件必须存在于 API 代理、环境或组织级别。
WrongResourceType 如果 JavaScript 政策的 <ResourceURL><IncludeURL> 元素引用除 jscJavaScript 文件)以外的任何资源类型,则会在部署期间出现此错误。
NoResourceURLOrSource 如果未声明 <ResourceURL> 元素或此元素内未定义资源网址,则 JavaScript 政策的部署可能会失败,并显示此错误。<ResourceURL> 元素是必需元素。或者,声明了 <IncludeURL> 元素,但未在此元素中定义资源网址。<IncludeURL> 元素是可选的,但如果声明,则必须在 <IncludeURL> 元素中指定资源网址。

故障变量

当此政策在运行时触发错误时,将设置这些变量。如需了解详情,请参阅您需要了解的有关政策错误的信息

变量 其中 示例
fault.name="fault_name" fault_name 是故障名称,如上面的运行时错误表中所列。故障名称是故障代码的最后一部分。 fault.name Matches "ScriptExecutionFailed"
javascript.policy_name.failed policy_name 是抛出故障的政策的用户指定名称。 javascript.JavaScript-1.failed = true

错误响应示例

{
  "fault": {
    "faultstring": "Execution of SetResponse failed with error: Javascript runtime error: "ReferenceError: "status" is not defined. (setresponse.js:6)\"",
    "detail": {
      "errorcode": "steps.javascript.ScriptExecutionFailed"
    }
  }
}

故障规则示例

<FaultRule name="JavaScript Policy Faults">
    <Step>
        <Name>AM-CustomErrorResponse</Name>
        <Condition>(fault.name Matches "ScriptExecutionFailed") </Condition>
    </Step>
    <Condition>(javascript.JavaScript-1.failed = true) </Condition>
</FaultRule>

JSONThreatProtection 政策

本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。 在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息处理故障

运行时错误

政策执行时可能会发生这些错误。

故障代码 HTTP 状态 原因 修复
steps.jsonthreatprotection.ExecutionFailed 500 JSONThreatProtection 政策可能会抛出许多不同类型的 ExecutionFailed 错误。其中大多数错误会在超出政策中设置的特定阈值时发生。这些类型的错误包括:对象条目名称长度对象条目计数数组元素计数容器深度字符串字符串值长度。当载荷包含无效的 JSON 对象时,也会发生此错误。
steps.jsonthreatprotection.SourceUnavailable 500 如果在 <Source> 元素中指定的消息变量为以下任意一项,就会出现此错误:
  • 超出范围(在执行政策的特定流中不可用)
  • 不是 requestresponsemessage 有效值之一
steps.jsonthreatprotection.NonMessageVariable 500 如果将 <Source> 元素设置为非消息类型的变量,则会发生此错误。

部署错误

无。

故障变量

此政策触发错误时设置这些变量。如需了解详情,请参阅您需要了解的有关政策错误的信息

变量 其中 示例
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 政策

本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息处理故障

运行时错误

政策执行时可能会发生这些错误。

故障代码 HTTP 状态 原因 修复
steps.jsontoxml.ExecutionFailed 500 输入负载 (JSON) 为空,或传递给 JSON 到 XML 政策的输入 (JSON) 无效或格式错误。
steps.jsontoxml.InCompatibleTypes 500 如果 <Source> 元素和 <OutputVariable> 元素中定义的变量类型不同,则会发生此错误。<Source> 元素中包含的变量类型和 <OutputVariable> 元素必须完全匹配。有效类型为 messagestring
steps.jsontoxml.InvalidSourceType 500 如果用于定义 <Source> 元素的变量类型无效,则会发生此错误。变量的有效类型为 messagestring
steps.jsontoxml.OutputVariableIsNotAvailable 500 如果 JSON 到 XML 政策 的 <Source> 元素中指定的变量为字符串类型,且未定义 <OutputVariable> 元素,则会发生此错误。如果 <Source> 元素中定义的变量为字符串类型,则 <OutputVariable> 元素是必填的。
steps.jsontoxml.SourceUnavailable 500 如果 JSON 到 XML 政策的 <Source> 元素中指定的消息变量是以下情况之一,则会发生此错误:
  • 超出范围(在执行政策的特定流中不可用)
  • 无法解析(未定义)

部署错误

无。

故障变量

发生运行时错误时,系统会设置这些变量。如需了解详情,请参阅您需要了解的有关政策错误的信息

变量 其中 示例
fault.name="fault_name" fault_name 是故障名称,如上面的运行时错误表中所列。故障名称是故障代码的最后一部分。 fault.name Matches "SourceUnavailable"
jsontoxml.policy_name.failed policy_name 是抛出故障的政策的用户指定名称。 jsontoxml.JSON-to-XML-1.failed = true

错误响应示例

{
  "fault": {
    "faultstring": "JSONToXML[JSON-to-XML-1]: Source xyz is not available",
    "detail": {
      "errorcode": "steps.json2xml.SourceUnavailable"
    }
  }
}

故障规则示例

<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 政策

本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息处理故障

运行时错误

政策执行时可能会发生这些错误。

故障代码 HTTP 状态 原因 修复
steps.keyvaluemapoperations.UnsupportedOperationException 500

如果在 KeyValueMapOperations 政策中将 mapIdentifier 属性设置为空字符串,则会出现此错误。

部署错误

在您部署包含此政策的代理时,可能会发生这些错误。

错误名称 原因 修复
InvalidIndex 如果 KeyValueMapOperations 政策的 <Get> 元素中指定的 index 属性为零或负数,则 API 代理的部署将失败。索引从 1 开始,因此零或负整数的索引被视为无效。
KeyIsMissing 如果 <Key> 元素缺失或 KeyValueMapOperations 政策的 <InitialEntries> 元素的 <Entry> 下的 <Key>元素中缺失 <Parameter> 元素,则会发生此错误。
ValueIsMissing 如果在 KeyValueMapOperations 政策的 <InitialEntries> 元素的 <Entry> 元素下缺少 <Value> 元素,便会出现此错误。

MessageLogging 政策

本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息处理故障

运行时错误

政策执行时可能会发生这些错误。

故障代码 HTTP 状态 原因
steps.messagelogging.StepDefinitionExecutionFailed 500 请参阅故障字符串。
steps.messagelogging.InvalidGoogleCloudLogName 500 LogName 计算结果不是 projects/{project}/logs/{logid} 的有效格式时,会抛出此错误。
steps.messagelogging.InvalidJsonMessage 500 contentType 属性值被选为 application/json 但实际消息值不是有效的 JSON 字符串时,会抛出此错误。
steps.messagelogging.TooManyPendingLoggingRequest 500 当尚未写入 Cloud Logging 的待处理请求超过 2500 个时,会抛出此错误。2500 限制适用于每个 Apigee 运行时 pod。例如,如果流量分布在 Apigee 运行时 pod 的两个实例上,则有效限制为 5000 个请求。
-

部署错误

在您部署包含此政策的代理时,可能会发生这些错误。

错误名称 原因 修复
InvalidProtocol 如果 <Protocol> 元素中指定的协议无效,则 MessageLogging 政策的部署会失败,并显示此错误。有效协议为 TCP 和 UDP。对于通过 TLS/SSL 发送 syslog 消息,系统仅支持 TCP。
InvalidPort 如果未在 <Port> 元素中指定端口号或者此端口无效,则 MessageLogging 政策的部署会失败,并显示此错误。端口号必须是大于零的整数。

故障变量

发生运行时错误时,系统会设置这些变量。如需了解详情,请参阅您需要了解的有关政策错误的信息

变量 其中 示例
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 政策

本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息处理故障

运行时错误

政策执行时可能会发生这些错误。

故障代码 HTTP 状态 原因
steps.oasvalidation.Failed 400 无法根据提供的 OpenAPI 规范验证请求消息正文。
steps.oasvalidation.Failed 500 无法根据提供的 OpenAPI 规范验证响应消息正文。
steps.oasvalidation.SourceMessageNotAvailable 500

在政策的 <Source> 元素中指定的变量超出范围或无法解析。

steps.oasvalidation.NonMessageVariable 500

<Source> 元素设置为非消息类型的变量。

部署错误

在您部署包含此政策的代理时,可能会发生这些错误。

错误名称 原因
ResourceDoesNotExist <OASResource> 元素中引用的 OpenAPI 规范不存在。
ResourceCompileFailed 部署中包含的 OpenAPI 规范包含会阻止其编译的错误。此错误通常表示该规范不是格式正确的 OpenAPI 规范 3.0。
BadResourceURL 无法处理 <OASResource> 元素中引用的 OpenAPI 规范。如果文件不是 JSON 或 YAML 文件,或未正确指定文件网址,则会发生这种情况。

故障变量

当此政策在运行时触发错误时,将设置这些变量。如需了解详情,请参阅您需要了解的有关政策错误的信息

变量 说明 示例
fault.category 故障的类别。如果政策拒绝请求,此变量将始终保持 Step fault.category = "Step"
fault.name 故障的名称,如上面的运行时错误表中所列。故障名称是故障代码的最后一部分。 fault.name Matches "ResourceDoesNotExist"
fault.reason 故障的原因。它是人类可读的字符串,说明错误的原因。 OASValidation OAS-1 with resource "oas://my-spec1.yaml": failed with reason: "[ERROR - POST operation not allowed on path '/persons/13'.: []]"
fault.subcategory 故障的子类别。如果政策拒绝请求,此字段将始终保留 OASValidationFailure fault.subcategory = "OASValidationFailure"
OASValidation.policy_name.failed policy_name 是抛出故障的政策的用户指定名称。 OASValidation.myoaspolicy.failed = true

PopulateCache 政策

本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息处理故障

运行时错误

政策执行时可能会发生这些错误。

故障代码 HTTP Status 发生的条件
policies.populatecache.EntryCannotBeCached 500 条目无法缓存。要缓存的消息对象不是 Serializable 类的一个实例。

部署错误

在您部署包含此政策的代理时,可能会发生这些错误。

错误名称 原因 修复
InvalidCacheResourceReference 如果将 PopulateCache 政策中的 <CacheResource> 元素设置为部署 API 代理的环境中不存在的名称,则会出现此错误。
CacheNotFound <CacheResource> 元素中指定的缓存不存在。

故障变量

此政策触发错误时设置这些变量。如需了解详情,请参阅您需要了解的有关政策错误的信息

变量 其中 示例
fault.name="fault_name" fault_name 是故障名称,如上面的运行时错误表中所列。故障名称是故障代码的最后一部分。 fault.name = "EntryCannotBeCached"
populatecache.policy_name.failed policy_name 是抛出故障的政策的用户指定名称。 populatecache.POP-CACHE-1.failed = true

错误响应示例

{
  "fault": {
    "faultstring": "[entry] can not be cached. Only serializable entries are cached.",
    "detail": {
      "errorcode": "steps.populatecache.EntryCannotBeCached"
    }
  }
}

故障规则示例

<FaultRule name="Populate Cache Fault">
    <Step>
        <Name>AM-EntryCannotBeCached</Name>
        <Condition>(fault.name Matches "EntryCannotBeCached") </Condition>
    </Step>
    <Condition>(populatecache.POP-CACHE-1.failed = true) </Condition>
</FaultRule>

LookupCache 政策

本部分介绍当此政策触发错误时所设置的错误消息和流变量。在为代理开发故障规则时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息处理故障

错误代码前缀

运行时错误

此政策不会抛出任何运行时错误。

部署错误

在您部署包含此政策的代理时,可能会发生这些错误。

错误名称 原因 修复
InvalidCacheResourceReference 如果将 <CacheResource> 元素设置为部署 API 代理的环境中不存在的名称,就会发生此错误。
InvalidTimeout 如果 <CacheLookupTimeoutInSeconds> 元素设置为负数,则 API 代理的部署将失败。
CacheNotFound 如果尚未在特定的消息处理器组件上创建错误消息中提及的特定缓存,就会发生此错误。

故障变量

错误响应示例

InvalidateCache 政策

本部分介绍当此政策触发错误时所设置的错误消息和流变量。在为代理开发故障规则时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息处理故障

错误代码前缀

运行时错误

此政策不会抛出任何运行时错误。

部署错误

在您部署包含此政策的代理时,可能会发生这些错误。

错误名称 原因 修复
InvalidCacheResourceReference 如果将 InvalidateCache 政策中的 <CacheResource> 元素设置为部署 API 代理的环境中不存在的名称,则会出现此错误。
CacheNotFound 如果尚未在特定的消息处理器组件上创建错误消息中提及的特定缓存,就会发生此错误。

故障变量

错误响应示例

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.
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.
ResponseCacheStepAttachmentNotAllowedReq This error occurs if the same ResponseCache policy is attached to multiple request paths within any flows of an API proxy.
ResponseCacheStepAttachmentNotAllowedResp This error occurs if the same ResponseCache policy is attached to multiple response paths within any flows of an API proxy.
InvalidMessagePatternForErrorCode This error occurs if either the <SkipCacheLookup> or the <SkipCachePopulation> element in a ResponseCache policy contains an invalid condition.
CacheNotFound This error occurs if the specific cache mentioned in the error message has not been created on a specific Message Processor component.

Fault variables

N/A

Example error response

N/A

OAuthV2 政策

本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息处理故障

运行时错误

政策执行时可能会发生这些错误。

故障代码 HTTP 状态 原因 由操作抛出
steps.oauth.v2.access_token_expired 401 访问令牌已过期。

VerifyAccessToken
InvalidateToken

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
InvalidateToken

steps.oauth.v2.InsufficientScope 403 请求中提供的访问令牌的范围与验证访问令牌政策中指定的范围不匹配。要了解范围,请参阅使用 OAuth2 范围 VerifyAccessToken
steps.oauth.v2.invalid_access_token 401 从客户端发送的访问令牌无效。 VerifyAccessToken
steps.oauth.v2.invalid_client 401

将政策的 <GenerateResponse> 属性设置为 true,且在请求中发送的客户端 ID 无效时,系统会返回此错误名称。检查确保您在使用与代理关联的开发者应用的正确客户端密钥和密钥值。这些值通常作为 Base64 编码的基本授权标头发送。

GenerateAccessToken
RefreshAccessToken
steps.oauth.v2.invalid_request 400 此错误名称用于多种不同类型的错误,通常适用于在请求中发送的丢失或不正确参数。如果将 <GenerateResponse> 设置为 false,则使用故障变量(如下所述)来检索错误的详细信息,例如故障名称和原因。 GenerateAccessToken
GenerateAuthorizationCode
GenerateAccessTokenImplicitGrant
RefreshAccessToken
steps.oauth.v2.InvalidAccessToken 401 授权标头没有必须的单词 Bearer。例如:Authorization: Bearer your_access_token VerifyAccessToken
steps.oauth.v2.InvalidAPICallAsNo\
ApiProductMatchFound
401

当前正在执行的 API 代理或操作不在与访问令牌相关联的产品中。

提示:确保与访问令牌关联的产品已正确配置。例如,如果在资源路径中使用通配符,请确保正确使用通配符。如需了解详情,请参阅管理 API 产品

有关此错误原因的更多说明,另请参阅 Oauth2.0 Access Token Verification 抛出的“由于未找到 apiproduct 匹配项,API 调用无效”的错误

VerifyAccessToken
steps.oauth.v2.InvalidClientIdentifier 500

将政策的 <GenerateResponse> 属性设置为 false,且在请求中发送的客户端 ID 无效时,系统会返回此错误名称。检查确保您在使用与代理关联的开发者应用的正确客户端密钥和密钥值。这些值通常作为 Base64 编码的基本授权标头发送。

GenerateAccessToken
RefreshAccessToken

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

特定于 JWT 令牌的运行时错误

JWT 身份验证令牌流的运行时错误代码和说明取决于 OAuth2 流上下文:

JWT 令牌生成和刷新流的错误代码

对于生成或刷新 JWT 令牌的 OAuth2 流程,错误响应遵循 RFC6749 中指定的错误响应。如需了解详情,请参阅第 5.2 节错误响应

令牌验证流程的错误代码

下表列出的错误代码仅适用于 VerifyAccessToken 操作。

故障代码 HTTP 状态 原因 由操作抛出
oauth.v2.JWTSigningFailed 401 该政策无法签署 JWT。

GenerateJWTAccessToken

oauth.v2.InvalidValueForJWTAlgorithm 401 如果 JWT 访问令牌中不存在该算法,或者该值不受支持,就会发生这种情况。

GenerateJWTAccessToken
VerifyJWTAccessToken

oauth.v2.InsufficientKeyLength 401 生成 JWT 时,HS384 或 HS512 算法的密钥大小小于下限。

GenerateJWTAccessToken
VerifyJWTAccessToken

oauth.v2.JWTAlgorithmMismatch 401 生成政策中指定的算法与验证政策中要求的算法不匹配。指定的算法必须匹配。

VerifyJWTAccessToken

oauth.v2.JWTDecodingFailed 401 该政策无法解码 JWT。JWT 可能已损坏。

VerifyJWTAccessToken

oauth.v2.MissingMandatoryClaimsInJWT 401 当 JWT 访问令牌中不存在必需的声明时出现。

VerifyJWTAccessToken

oauth.v2.InvalidJWTSignature 401 如果无法验证 JWT 访问令牌的签名,或者签名无效,就会发生这种情况。

VerifyJWTAccessToken

oauth.v2.InvalidTypeInJWTHeader 401 在 JWT 的类型不是 at+Jwt 时出现。

VerifyJWTAccessToken

部署错误

在您部署包含此政策的代理时,可能会发生这些错误。

错误名称 原因
InvalidValueForExpiresIn

对于 <ExpiresIn> 元素,有效值为正整数和 -1

InvalidValueForRefreshTokenExpiresIn 对于 <RefreshTokenExpiresIn> 元素,有效值为正整数和 -1
InvalidGrantType <SupportedGrantTypes> 元素中指定的授权类型无效。请参阅政策参考,获取有效类型的列表。
ExpiresInNotApplicableForOperation 确保在 <Operations> 元素中指定的操作支持到期。例如,VerifyToken 操作不支持。
RefreshTokenExpiresInNotApplicableForOperation 确保在 <Operations> 元素中指定的操作支持刷新令牌到期。例如,VerifyToken 操作不支持。
GrantTypesNotApplicableForOperation 请确保指定的操作支持在 <SupportedGrantTypes> 中指定的授权类型。
OperationRequired

您必须使用 <Operation> 元素在此政策中指定操作。

InvalidOperation

您必须使用 <Operation> 元素在此政策中指定有效的操作。

TokenValueRequired 您必须在 <Tokens> 元素中指定一个令牌 <Token> 值。

特定于 JWT 令牌的部署错误

这些部署错误特定于使用 JWT 令牌操作的政策。

错误名称 原因
InvalidValueForAlgorithm <Algorithm> 元素中指定的算法不在可用算法列表中或者不存在。
MissingKeyConfiguration 缺少必需的 <SecretKey><PrivateKey><PublicKey> 元素,具体取决于所使用的算法。
EmptyValueElementForKeyConfiguration 未在 <PrivateKey><PublicKey><SecretKey> 元素中定义所需的子元素 <Value>
InvalidKeyConfiguration <PrivateKey> 元素未与 RSA 系列算法搭配使用,或者 <SecretKey> 元素未与 HS 系列算法搭配使用。
EmptyRefAttributeForKeyconfiguration <PrivateKey><PublicKey><SecretKey> 元素的子元素 <Value>ref 属性为空。
InvalidVariableNameForKey <PrivateKey><PublicKey><SecretKey> 元素的子元素 <Value>ref 属性中指定的流变量名称不包含 private 前缀。

故障变量

当此政策在运行时触发错误时,将设置这些变量。

变量 地点 示例
fault.name="fault_name" fault_name 是故障名称,如上面的运行时错误表中所列。故障名称是故障代码的最后一部分。 fault.name = "invalid_request"
oauthV2.policy_name.failed policy_name 是抛出故障的政策的用户指定名称。 oauthV2.GenerateAccesstoken.failed = true
oauthV2.policy_name.fault.name policy_name 是抛出故障的政策的用户指定名称。 oauthV2.GenerateAccesstoken.fault.name = invalid_request
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 政策

本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息处理故障

运行时错误

政策执行时可能会发生这些错误。 下面显示的错误名称是在发生错误时分配给 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 如需了解有关如何排查此错误的信息,请参阅 Oauth2.0 访问令牌验证抛出的:“由于未找到 apiproduct 匹配项,API 调用无效”的错误
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 政策

本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息处理故障

运行时错误

政策执行时可能会发生这些错误。

故障代码 HTTP 状态 原因
steps.oauth.v2.access_token_expired 500 发送到该政策的访问令牌已过期。
steps.oauth.v2.invalid_access_token 500 发送到该政策的访问令牌无效。
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound 401 如需了解有关如何排查此错误的信息,请参阅 Oauth2.0 访问令牌验证抛出的:“由于未找到 apiproduct 匹配项,API 调用无效”的错误

部署错误

如需了解部署错误,请参阅界面中报告的消息。

故障变量

当此政策在运行时触发错误时,将设置这些变量。

变量 其中 示例
fault.name="fault_name" fault_name 是故障名称,如上面的运行时错误表中所列。故障名称是故障代码的最后一部分。 fault.name = "invalid_access_token"
oauthV2.policy_name.failed policy_name 是抛出故障的政策的用户指定名称。 oauthV2.SetTokenInfo.failed = true
oauthV2.policy_name.fault.name policy_name 是抛出故障的政策的用户指定名称。 oauthV2.SetTokenInfo.fault.name = invalid_access_token
oauthv2.policy_name.fault.cause policy_name 是抛出故障的政策的用户指定名称。 oauthV2.SetTokenInfo.cause = Invalid Access Token

错误响应示例

{
  "fault": {
    "faultstring": "Invalid Access Token",
    "detail": {
      "errorcode": "keymanagement.service.invalid_access_token"
    }
  }
}

故障规则示例

<FaultRule name=SetOAuthV2Info Faults">
    <Step>
        <Name>AM-InvalidTokenResponse</Name>
        <Condition>(fault.name = "invalid_access_token")</Condition>
    </Step>
    <Condition>(oauthV2.failed = true) </Condition>
</FaultRule>

DeleteOAuthV2Info 政策

本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息处理故障

运行时错误

政策执行时可能会发生这些错误。

故障代码 HTTP 状态 原因
steps.oauth.v2.invalid_access_token 401 发送到该政策的访问令牌无效。
steps.oauth.v2.invalid_request-authorization_code_invalid 401 发送到该政策的授权代码无效。
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound 401 如需了解有关如何排查此错误的信息,请参阅 Oauth2.0 访问令牌验证抛出的:“由于未找到 apiproduct 匹配项,API 调用无效”的错误

部署错误

如需了解部署错误,请参阅界面中报告的消息。

故障变量

当此政策在运行时触发错误时,将设置这些变量。

变量 其中 示例
fault.name="fault_name" fault_name 是故障名称,如上面的运行时错误表中所列。故障名称是故障代码的最后一部分。 fault.name = "invalid_access_token"
oauthV2.policy_name.failed policy_name 是抛出故障的政策的用户指定名称。 oauthV2.DeleteTokenInfo.failed = true
oauthV2.policy_name.fault.name policy_name 是抛出故障的政策的用户指定名称。 oauthV2.DeleteTokenInfo.fault.name = invalid_access_token
oauthv2.policy_name.fault.cause policy_name 是抛出故障的政策的用户指定名称。 oauthV2.DeleteTokenInfo.cause = Invalid Access Token

错误响应示例

{
  "fault": {
    "faultstring": "Invalid Access Token",
    "detail": {
      "errorcode": "keymanagement.service.invalid_access_token"
    }
  }
}

故障规则示例

<faultrule name="VariableOfNonMsgType"></faultrule><FaultRule name="DeleteOAuthV2Info_Faults">
    <Step>
        <Name>AM-InvalidTokenResponse</Name>
    </Step>
    <Condition>(fault.name = "invalid_access_token")</Condition>
</FaultRule>

PythonScript 政策

本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息处理故障

运行时错误

政策执行时可能会发生这些错误。

故障代码 HTTP 状态 原因 修复
steps.script.ScriptEvaluationFailed 500 PythonScript 政策可能会引发几种不同的 ScriptExecutionFailed 错误。常见的错误类型包括 NameErrorZeroDivisionError

部署错误

在您部署包含此政策的代理时,可能会发生这些错误。

错误名称 原因 修复
InvalidResourceUrlFormat 如果 PythonScript 政策的 <ResourceURL><IncludeURL> 元素中指定的资源网址格式无效,则 API 代理的部署将失败。
InvalidResourceUrlReference 如果 <ResourceURL><IncludeURL> 元素引用了不存在的 PythonScript 文件,则 API 代理的部署将失败。引用的源文件必须存在于 API 代理、环境或组织级别。

故障变量

当此政策在运行时触发错误时,将设置这些变量。如需了解详情,请参阅您需要了解的有关政策错误的信息

变量 其中 示例
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>

配额政策

This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause Fix
policies.ratelimit.FailedToResolveQuotaIntervalReference 500 Occurs if the <Interval> element is not defined within the Quota policy. This element is mandatory and used to specify the interval of time applicable to the quota. The time interval can be minutes, hours, days, weeks, or months as defined with the <TimeUnit> element.
policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference 500 Occurs if the <TimeUnit> element is not defined within the Quota policy. This element is mandatory and used to specify the unit of time applicable to the quota. The time interval can be in minutes, hours, days, weeks, or months.
policies.ratelimit.InvalidMessageWeight 500 Occurs if the value of the <MessageWeight> element specified through a flow variable is invalid (a non-integer value).
policies.ratelimit.QuotaViolation 500 The quota limit was exceeded. N/A

Deployment errors

Error name Cause Fix
InvalidQuotaInterval If the quota interval specified in the <Interval> element is not an integer, then the deployment of the API proxy fails. For example, if the quota interval specified is 0.1 in the <Interval> element, then the deployment of the API proxy fails.
InvalidQuotaTimeUnit If the time unit specified in the <TimeUnit> element is unsupported, then the deployment of the API proxy fails. The supported time units are minute, hour, day, week, and month.
InvalidQuotaType If the type of the quota specified by the type attribute in the <Quota> element is invalid, then the deployment of the API proxy fails. The supported quota types are default, calendar, flexi, and rollingwindow.
InvalidStartTime If the format of the time specified in the <StartTime> element is invalid, then the deployment of the API proxy fails. The valid format is yyyy-MM-dd HH:mm:ss, which is the ISO 8601 date and time format. For example, if the time specified in the <StartTime> element is 7-16-2017 12:00:00 then the deployment of the API proxy fails.
StartTimeNotSupported If the <StartTime> element is specified whose quota type is not calendar type, then the deployment of the API proxy fails. The <StartTime> element is supported only for the calendar quota type. For example, if the type attribute is set to flexi or rolling window in the <Quota> element, then the deployment of the API proxy fails.
InvalidTimeUnitForDistributedQuota If the <Distributed> element is set to true and the <TimeUnit> element is set to second then the deployment of the API proxy fails. The timeunit second is invalid for a distributed quota.
InvalidSynchronizeIntervalForAsyncConfiguration If the value specified for the <SyncIntervalInSeconds> element within the <AsynchronousConfiguration> element in a Quota policy is less than zero, then the deployment of the API proxy fails.
InvalidAsynchronizeConfigurationForSynchronousQuota If the value of the <AsynchronousConfiguration> element is set to true in a Quota policy, which also has asynchronous configuration defined using the <AsynchronousConfiguration> element, then the deployment of the API proxy fails.

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 "QuotaViolation"
ratelimit.policy_name.failed policy_name is the user-specified name of the policy that threw the fault. ratelimit.QT-QuotaPolicy.failed = true

Example error response

{  
   "fault":{  
      "detail":{  
         "errorcode":"policies.ratelimit.QuotaViolation"
      },
      "faultstring":"Rate limit quota violation. Quota limit  exceeded. Identifier : _default"
   }
}

Example fault rule

<FaultRules>
    <FaultRule name="Quota Errors">
        <Step>
            <Name>JavaScript-1</Name>
            <Condition>(fault.name Matches "QuotaViolation") </Condition>
        </Step>
        <Condition>ratelimit.Quota-1.failed=true</Condition>
    </FaultRule>
</FaultRules>

ResetQuota 政策

本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息处理故障

运行时错误

政策执行时可能会发生这些错误。

故障代码 HTTP 状态 原因 修复
policies.resetquota.InvalidRLPolicy 500 ResetQuota 政策的 <Quota> 元素中指定的 Quota 政策未在 API 代理中定义,因此在流中不可用。<Quota> 元素是必填的,并且识别 Quota 政策(该政策的计数器应通过 ResetQuota 政策来更新)。
policies.resetquota.FailedToResolveAllowCountRef 不适用 对政策的 <Allow> 元素中包含允许计数的变量的引用无法解析为值。此元素是必需的,并指定减少配额计数器的数量。
policies.resetquota.FailedToResolveRLPolicy 500 无法解析 <Quota> 元素中的 ref 属性引用的变量。

部署错误

在您部署包含此政策的代理时,可能会发生这些错误。

错误名称 原因 修复
InvalidCount 如果在 ResetQuota 政策的 <Allow> 元素中指定的计数值不是整数,则 API 代理的部署将会失败。

RaiseFault 政策

本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。 在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息处理故障

运行时错误

政策执行时可能会发生这些错误。

故障代码 HTTP 状态 原因
steps.raisefault.RaiseFault 500 请参阅故障字符串。

部署错误

无。

故障变量

发生运行时错误时,系统会设置这些变量。如需了解详情,请参阅您需要了解的有关政策错误的信息

变量 其中 示例
fault.name="fault_name" fault_name 是故障名称,如上面的运行时错误表中所列。故障名称是故障代码的最后一部分。 fault.name = "RaiseFault"
raisefault.policy_name.failed policy_name 是抛出故障的政策的用户指定名称。 raisefault.RF-ThrowError.failed = true

错误响应示例

{
   "fault":{
      "detail":{
         "errorcode":"steps.raisefault.RaiseFault"
      },
      "faultstring":"Raising fault. Fault name: [name]"
   }
}

RegularExpressionProtection 政策

本部分介绍当此政策触发错误时返回的错误代码和错误消息,以及由 Apigee 设置的故障变量。在开发故障规则以处理故障时,请务必了解此信息。如果要捕获错误并引发自定义错误,请在政策根元素上设置 continueOnError="true" 属性。如需了解详情,请参阅您需要了解的有关政策错误的信息处理故障

运行时错误

政策执行时可能会发生这些错误。

错误代码 消息
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}

部署错误

错误代码 消息 修复
CannotBeConvertedToNodeset RegularExpressionProtection {0}: Result of xpath {1} cannot be converted to nodeset. Context {2}
DuplicatePrefix RegularExpressionProtection {0}: Duplicate prefix {1}
EmptyJSONPathExpression RegularExpressionProtection {0}: Empty JSONPath expression
EmptyXPathExpression RegularExpressionProtection {0}: Empty XPath expression
InvalidRegularExpression RegularExpressionProtection {0}: Invalid Regular Expression {1}, Context {2}
JSONPathCompilationFailed RegularExpressionProtection {0}: Failed to compile jsonpath {1}. Context {2}
NONEmptyPrefixMappedToEmptyURI RegularExpressionProtection {0}: Non-empty prefix {1} cannot be mapped to empty uri
NoPatternsToEnforce RegularExpressionProtection {0}: No patterns to enforce in {1}
NothingToEnforce RegularExpressionProtection {0}: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory
XPathCompilationFailed RegularExpressionProtection {0}: Failed to compile xpath {1}. Context {2}

故障变量

此政策触发错误时设置这些变量。如需了解详情,请参阅您需要了解的有关政策错误的信息

变量 其中 示例
fault.name="fault_name" fault_name 是上表中列出的故障的名称。 fault.name Matches "ThreatDetected"
regularexpressionprotection.policy_name.failed policy_name 是抛出故障的政策的用户指定名称。 regularexpressionprotection.Regular-Expressions-Protection-1.failed = true

SAMLAssertion 政策

本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息处理故障

部署错误

在您部署包含此政策的代理时,可能会发生这些错误。

错误名称 原因 修复
SourceNotConfigured ValidateSAMLAssertion 政策中的以下一个或多个元素未定义或为空:<Source><XPath><Namespaces><Namespace>
TrustStoreNotConfigured 如果 <TrustStore> 元素为空或未在 ValidateSAMLAssertion 政策中指定,则 API 代理的部署将会失败。需要有效的信任库。
NullKeyStoreAlias 如果子元素 <Alias> 为空或未在 GenerateSAMLAssertion 政策的 <Keystore> 元素中指定,则 API 代理的部署将会失败。需要有效的密钥库别名。
NullKeyStore 如果子元素 <Name> 为空或未在 GenerateSAMLAssertion 政策的 <Keystore> 元素中指定,则 API 代理的部署将会失败。需要有效的密钥库名称。
NullIssuer 如果 <Issuer> 元素为空或未在 GenerateSAMLAssertion 政策中指定,则 API 代理的部署将会失败。 需要有效的 <Issuer> 值。

故障变量

发生运行时错误时,系统会设置这些变量。如需了解详情,请参阅您需要了解的有关政策错误的信息

变量 其中 示例
fault.name="fault_name" fault_name 是故障名称。故障名称是故障代码的最后一部分。 fault.name = "InvalidMediaTpe"
GenerateSAMLAssertion.failed 对于验证 SAML 断言政策配置,错误前缀为 ValidateSAMLAssertion GenerateSAMLAssertion.failed = true

错误响应示例

{
  "fault": {
    "faultstring": "GenerateSAMLAssertion[GenSAMLAssert]: Invalid media type",
    "detail": {
      "errorcode": "steps.saml.generate.InvalidMediaTpe"
    }
  }
}

故障规则示例

<FaultRules>
    <FaultRule name="invalid_saml_rule">
        <Step>
            <Name>invalid-saml</Name>
        </Step>
        <Condition>(GenerateSAMLAssertion.failed = "true")</Condition>
    </FaultRule>
</FaultRules>

ServiceCallout 政策

This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause Fix
steps.servicecallout.ExecutionFailed 500

This error can occur when:

  • The policy is asked to handle input that is malformed or otherwise invalid.
  • The backend target service returns an error status (by default, 4xx or 5xx).
steps.servicecallout.RequestVariableNotMessageType 500 The Request variable specified in the policy is not of type Message. For example, if it's a string or other non-message type, you'll see this error.
steps.servicecallout.RequestVariableNotRequestMessageType 500 The Request variable specified in the policy is not of type RequestMessage. For example, if it's a Response type, you'll see this error.
googletoken.EmptyIDTokenAudience 500

<GoogleIDToken> is enabled but useTargetUrl is set to false and no value is provided to <Audience> either directly or through reference at the time of error.

messaging.adaptors.http.filter.GoogleTokenGenerationFailure 500 This error can happen if the API proxy is configured with the <Authentication> element. Possible causes include:
  • The service account deployed with the proxy:
    • does not exist in your project
    • has been disabled
    • (Apigee hybrid only) has not granted the roles/iam.serviceAccountTokenCreator role on the apigee-runtime service account.
  • The IAMCredentials API is disabled in the source project of the apigee-runtime service account.
  • The <GoogleAccessToken> element is used and one or more invalid scopes are provided. For example, look for typos or empty scopes.
  • For Apigee hybrid only, check the runtime container's log and search for GoogleTokenGenerationFailure to find more detailed error messages that may help with debugging the problem.

    Deployment errors

    These errors can occur when you deploy a proxy containing this policy.

    Error name Cause Fix
    URLMissing The <URL> element inside <HTTPTargetConnection> is missing or empty.
    ConnectionInfoMissing This error happens if the policy does not have an <HTTPTargetConnection> or <LocalTargetConnection> element.
    InvalidTimeoutValue This error happens if the <Timeout> value is negative or zero.
    FAILED_PRECONDITION This error happens if the service account is missing when the proxy is configured with the <Authentication> tag.

    For example:

    Deployment of \"organizations/foo/apis/apiproxy/revisions/1\" requires a service
              account identity, but one was not provided with the request.
    PERMISSION_DENIED This error happens if there is a permission problem with the service account if the proxy is configured with the <Authentication> tag. Possible causes:
    • The service account does not exist.
    • The service account was not created in the same Google Cloud project as the Apigee organization.
    • The deployer does have iam.serviceAccounts.actAs permission on the service account. For details, see About service account permissions.

    Fault variables

    These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors.

    Variables Where Example
    fault.name="fault_name" fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name = "RequestVariableNotMessageType"
    servicecallout.policy_name.failed policy_name is the user-specified name of the policy that threw the fault. servicecallout.SC-GetUserData.failed = true

    Example error response

    {
       "fault":{
          "detail":{
             "errorcode":"steps.servicecallout.RequestVariableNotMessageType"
          },
          "faultstring":"ServiceCallout[ServiceCalloutGetMockResponse]:
                request variable data_str value is not of type Message"
       }
    }
    

    Example fault rule

    <FaultRule name="RequestVariableNotMessageType">
        <Step>
            <Name>AM-RequestVariableNotMessageType</Name>
        </Step>
        <Condition>(fault.name = "RequestVariableNotMessageType")</Condition>
    </FaultRule>
    

    SOAPMessageValidation 政策

    本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。 在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息处理故障

    运行时错误

    政策执行时可能会发生这些错误。

    故障代码 HTTP 状态 原因 修复
    steps.messagevalidation.SourceMessageNotAvailable 500

    如果政策的 <Source> 元素中指定的变量为以下任一项,就会出现此错误:

    • 超出范围(在执行政策的特定流中不可用)
    • 无法解析(未定义)
    steps.messagevalidation.NonMessageVariable 500

    如果将 SOAPMessageValidation 政策中的 <Source> 元素设为不是 Message 类型的变量,则会发生此错误。

    消息类型变量表示整个 HTTP 请求和响应。内置 Apigee 流变量 requestresponsemessage 都属于消息类型。如需详细了解消息变量,请参阅变量参考

    steps.messagevalidation.Failed 500 如果 SOAPMessageValidation 政策未能根据 XSD 架构或 WSDL 定义验证输入消息载荷,则会发生此错误。如果载荷消息中存在格式不正确的 JSON 或 XML 格式,也会发生此错误。

    部署错误

    在您部署包含此政策的代理时,可能会发生这些错误。

    错误名称 原因 修复
    InvalidResourceType SOAPMessageValidation 政策中的 <ResourceURL> 元素被设置为该政策不支持的资源类型。
    ResourceCompileFailed SOAPMessageValidation 政策的 <ResourceURL> 元素中引用的资源脚本包含错误,导致其无法编译。
    RootElementNameUnspecified SOAPMessageValidation 政策中的 <Element> 元素不包含根元素的名称。
    InvalidRootElementName SOAPMessageValidation 政策中的 <Element> 元素包含的根元素名称未遵循有效元素命名的 XML 规则。

    SpikeArrest 政策

    本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息处理故障

    运行时错误

    政策执行时可能会发生这些错误。

    故障代码 HTTP 状态 原因 修复
    policies.ratelimit.FailedToResolveSpikeArrestRate 500 如果对包含在 <Rate> 元素中设置的速率的变量的引用无法解析为 SpikeArrest 政策中的值,则会出现此错误。此元素是必需的,以 intpmintps 的形式指定 Spike Arrest 速率。
    policies.ratelimit.InvalidMessageWeight 500 如果通过流变量为 <MessageWeight> 元素指定的值无效(非整数值),就会出现此错误。
    policies.ratelimit.SpikeArrestViolation 429 超出速率限制。

    部署错误

    在您部署包含此政策的代理时,可能会发生这些错误。

    错误名称 原因 修复
    InvalidAllowedRate 如果在 SpikeArrest 政策的 <Rate> 元素中指定的 Sprike Arrest 速率不是整数,或者该速率不是 pspm,则 API 代理的部署将会失败。

    故障变量

    发生运行时错误时,系统会设置这些变量。如需了解详情,请参阅您需要了解的有关政策错误的信息

    变量 其中 示例
    fault.name="fault_name" fault_name 是故障名称,如上面的运行时错误表中所列。故障名称是故障代码的最后一部分。 fault.name Matches "SpikeArrestViolation"
    ratelimit.policy_name.failed policy_name 是抛出故障的政策的用户指定名称。 ratelimit.SA-SpikeArrestPolicy.failed = true

    错误响应示例

    错误响应的示例如下所示:

    {  
       "fault":{  
          "detail":{  
             "errorcode":"policies.ratelimit.SpikeArrestViolation"
          },
          "faultstring":"Spike arrest violation. Allowed rate : 10ps"
       }
    }
    

    故障规则示例

    下面显示了用于处理 SpikeArrestViolation 故障的故障规则示例:

    <FaultRules>
        <FaultRule name="Spike Arrest Errors">
            <Step>
                <Name>JavaScript-1</Name>
                <Condition>(fault.name Matches "SpikeArrestViolation") </Condition>
            </Step>
            <Condition>ratelimit.Spike-Arrest-1.failed=true</Condition>
        </FaultRule>
    </FaultRules>
    

    VerifyAPIKey 政策

    本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息处理故障

    运行时错误

    政策执行时可能会发生这些错误。

    故障代码 HTTP 状态 原因
    keymanagement.service.consumer_key_missing_api_product_association 400

    应用凭据缺少 API 产品关联。请将密钥的应用与 API 产品相关联。请注意,这适用于所有应用类型,例如开发者应用和 AppGroup 应用。

    keymanagement.service.DeveloperStatusNotActive 401

    创建具有您所用 API 密钥的开发者应用的开发者具有无效状态。将应用开发者的状态设置为无效时,将停用该开发者创建的所有开发者应用。具有适当权限的管理员用户(例如组织管理员)可以通过以下方式更改开发者的状态:

    keymanagement.service.invalid_client-app_not_approved 401 与 API 密钥关联的开发者应用已被撤消。撤消的应用无法访问任何 API 产品,也无法调用由 Apigee 管理的任何 API。组织管理员可以使用 Apigee API 更改开发者应用的状态。请参阅生成密钥对或更新开发者应用状态
    oauth.v2.FailedToResolveAPIKey 401 该政策要求在政策的 <APIKey> 元素中指定的变量中找到 API 密钥。 当预期变量不存在(无法解析)时,会发生此错误。
    oauth.v2.InvalidApiKey 401 Apigee 已收到 API 密钥,但该密钥无效。当 Apigee 在其数据库中查找密钥时,它必须与请求中发送的密钥完全匹配。如果 API 之前有效,请确保未重新生成密钥。如果重新生成密钥,且您尝试使用旧密钥,则会看到此错误。如需了解详情,请参阅 通过注册应用来控制对 API 的访问权限
    oauth.v2.InvalidApiKeyForGivenResource 401 Apigee 已收到 API 密钥,且该密钥有效;但是,它与通过产品与 API 代理关联的开发者应用中的已批准密钥不匹配。

    部署错误

    在您部署包含此政策的代理时,可能会发生这些错误。

    错误名称 原因
    SpecifyValueOrRefApiKey <APIKey> 元素未指定值或密钥。

    故障变量

    发生运行时错误时,系统会设置这些变量。如需了解详情,请参阅您需要了解的有关政策错误的信息

    变量 其中 示例
    fault.name="fault_name" fault_name 是故障名称,如上面的运行时错误表中所列。故障名称是故障代码的最后一部分。 fault.name Matches "FailedToResolveAPIKey"
    oauthV2.policy_name.failed policy_name 是抛出故障的政策的用户指定名称。 oauthV2.VK-VerifyAPIKey.failed = true

    错误响应示例

    {
       "fault":{
          "faultstring":"Invalid ApiKey",
          "detail":{
             "errorcode":"oauth.v2.InvalidApiKey"
          }
       }
    }
    
    {
       "fault":{
          "detail":{
             "errorcode":"keymanagement.service.DeveloperStatusNotActive"
          },
          "faultstring":"Developer Status is not Active"
       }
    }
    

    故障规则示例

    <FaultRule name="FailedToResolveAPIKey">
        <Step>
            <Name>AM-FailedToResolveAPIKey</Name>
        </Step>
        <Condition>(fault.name Matches "FailedToResolveAPIKey") </Condition>
    </FaultRule>
    

    VerifyJWS 政策

    本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息处理故障

    运行时错误

    政策执行时可能会发生这些错误。

    故障代码 HTTP 状态 发生的条件
    steps.jws.AlgorithmInTokenNotPresentInConfiguration 401 验证政策包含多个算法时发生。
    steps.jws.AlgorithmMismatch 401 Generate 政策在标头中指定的算法与 Verify 政策中要求的算法不匹配。指定的算法必须匹配。
    steps.jws.ContentIsNotDetached 401 当 JWS 不包含分离的内容载荷时,系统会指定 <DetachedContent>
    steps.jws.FailedToDecode 401 该政策无法解码 JWS。JWS 可能已损坏。
    steps.jws.InsufficientKeyLength 401 HS256 算法的密钥小于 32 个字节
    steps.jws.InvalidClaim 401 用于缺失声明或声明不匹配,或者缺少标题或标头不匹配的情况。
    steps.jws.InvalidCurve 401 密钥指定的曲线对椭圆曲线算法无效。
    steps.jws.InvalidJsonFormat 401 可在 JWS 标头中找到无效的 JSON。
    steps.jws.InvalidJws 401 当 JWS 签名验证失败时,会发生此错误。
    steps.jws.InvalidPayload 401 JWS 负载无效。
    steps.jws.InvalidSignature 401 省略 <DetachedContent> 并且 JWS 具有分离的内容负载。
    steps.jws.KeyIdMissing 401 Verify 政策使用 JWKS 作为公钥的来源,但已签名的 JWS 不包含标头中的 kid 属性。
    steps.jws.KeyParsingFailed 401 无法通过给定密钥信息解析公钥。
    steps.jws.MissingPayload 401 JWS 负载缺失。
    steps.jws.NoAlgorithmFoundInHeader 401 在 JWS 省略算法标头时发生。
    steps.jws.NoMatchingPublicKey 401 Verify 政策使用 JWKS 作为公钥的来源,但已签名的 JWS 中的 kid 未列在 JWKS 中。
    steps.jws.UnhandledCriticalHeader 401 验证 JWS 政策在 crit 标头中发现的标头未在 KnownHeaders 中列出。
    steps.jws.UnknownException 401 发生未知异常。
    steps.jws.WrongKeyType 401 指定的密钥类型不正确。例如,为椭圆曲线算法指定 RSA 密钥,或为 RSA 算法指定了曲线密钥。

    部署错误

    在您部署包含此政策的代理时,可能会发生这些错误。

    错误名称 发生的条件
    InvalidAlgorithm 唯一的有效值为:RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384, ES512, HS256, HS384, HS512

    EmptyElementForKeyConfiguration

    FailedToResolveVariable

    InvalidConfigurationForActionAndAlgorithmFamily

    InvalidConfigurationForVerify

    InvalidEmptyElement

    InvalidFamiliesForAlgorithm

    InvalidKeyConfiguration

    InvalidNameForAdditionalClaim

    InvalidNameForAdditionalHeader

    InvalidPublicKeyId

    InvalidPublicKeyValue

    InvalidSecretInConfig

    InvalidTypeForAdditionalClaim

    InvalidTypeForAdditionalHeader

    InvalidValueForElement

    InvalidValueOfArrayAttribute

    InvalidVariableNameForSecret

    MissingConfigurationElement

    MissingElementForKeyConfiguration

    MissingNameForAdditionalClaim

    MissingNameForAdditionalHeader

    其他可能的部署错误。

    Fault variables

    These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors.

    Variables Where Example
    fault.name="fault_name" fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "TokenExpired"
    JWS.failed All JWS policies set the same variable in the case of a failure. jws.JWS-Policy.failed = true

    Example error response

    For error handling, the best practice is to trap the errorcode part of the error response. Do not rely on the text in the faultstring, because it could change.

    Example fault rule

    <FaultRules>
        <FaultRule name="JWS Policy Errors">
            <Step>
                <Name>JavaScript-1</Name>
                <Condition>(fault.name Matches "TokenExpired")</Condition>
            </Step>
            <Condition>JWS.failed=true</Condition>
        </FaultRule>
    </FaultRules>
    

    验证 JWT 政策

    本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。 在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息处理故障

    运行时错误

    政策执行时可能会发生这些错误。

    故障代码 HTTP 状态 发生的条件
    steps.jwt.AlgorithmInTokenNotPresentInConfiguration 401 验证政策包含多个算法时发生。
    steps.jwt.AlgorithmMismatch 401 Generate 政策中指定的算法与在 Verify 政策中指定的算法不匹配。指定的算法必须匹配。
    steps.jwt.FailedToDecode 401 该政策无法解码 JWT。JWT 可能已损坏。
    steps.jwt.GenerationFailed 401 该政策无法生成 JWT。
    steps.jwt.InsufficientKeyLength 401 HS256 算法的密钥小于 32 个字节,HS386 算法的密钥少于 48 个字节,HS512 算法的密钥少于 64 个字节。
    steps.jwt.InvalidClaim 401 用于缺失声明或声明不匹配,或者缺少标题或标头不匹配的情况。
    steps.jwt.InvalidConfiguration 401 同时存在 <Algorithm><Algorithms> 元素。
    steps.jwt.InvalidCurve 401 密钥指定的曲线对椭圆曲线算法无效。
    steps.jwt.InvalidIterationCount 401 加密 JWT 中使用的迭代次数不等于 VerifyJWT 政策配置中指定的迭代次数。这仅适用于使用 <PasswordKey> 的 JWT。
    steps.jwt.InvalidJsonFormat 401 标头或载荷中存在无效的 JSON。
    steps.jwt.InvalidKeyConfiguration 401 <PublicKey> 元素中的 JWKS 无效。这可能是因为无法从 Apigee 实例访问 JWKS URI 端点。通过创建直通式代理并使用 JWKS 端点作为目标来测试与端点的连接。
    steps.jwt.InvalidSaltLength 401 加密 JWT 中使用的盐长度不等于 VerifyJWT 政策配置中指定的盐长度。这仅适用于使用 <PasswordKey> 的 JWT。
    steps.jwt.InvalidPasswordKey 401 指定的密钥不符合要求。
    steps.jwt.InvalidPrivateKey 401 指定的密钥不符合要求。
    steps.jwt.InvalidPublicKey 401 指定的密钥不符合要求。
    steps.jwt.InvalidSecretKey 401 指定的密钥不符合要求。
    steps.jwt.InvalidToken 401 当 JWT 签名验证失败时,会发生此错误。
    steps.jwt.JwtAudienceMismatch 401 目标对象声明未通过令牌验证。
    steps.jwt.JwtIssuerMismatch 401 颁发者声明未通过令牌验证。
    steps.jwt.JwtSubjectMismatch 401 主题声明未通过令牌验证。
    steps.jwt.KeyIdMissing 401 Verify 政策使用 JWKS 作为公钥的来源,但已签名的 JWT 在标头中不包含的 kid 属性。
    steps.jwt.KeyParsingFailed 401 无法通过给定密钥信息解析公钥。
    steps.jwt.NoAlgorithmFoundInHeader 401 JWT 不包含算法标头时发生。
    steps.jwt.NoMatchingPublicKey 401 Verify 政策使用 JWKS 作为公钥的来源,但已签名的 JWT 中的 kid 未列在 JWKS 中。
    steps.jwt.SigningFailed 401 在 GenerateJWT 中,HS384 或 HS512 算法的密钥大小小于下限。
    steps.jwt.TokenExpired 401 该政策尝试验证过期的令牌。
    steps.jwt.TokenNotYetValid 401 令牌尚未生效。
    steps.jwt.UnhandledCriticalHeader 401 验证 JWT 政策在 crit 标头中发现的标头未在 KnownHeaders 中列出。
    steps.jwt.UnknownException 401 发生未知异常。
    steps.jwt.WrongKeyType 401 指定的密钥类型不正确。例如,为椭圆曲线算法指定 RSA 密钥,或为 RSA 算法指定了曲线密钥。

    部署错误

    在您部署包含此政策的代理时,可能会发生这些错误。

    错误名称 原因 修复
    InvalidNameForAdditionalClaim 如果 <AdditionalClaims> 元素的子元素 <Claim> 中使用的声明是以下注册名称之一,部署将失败:kidisssubaudiatexpnbfjti
    InvalidTypeForAdditionalClaim 如果 <AdditionalClaims> 元素的子元素 <Claim> 中使用的声明不是 stringnumberbooleanmap 之一,部署将失败。
    MissingNameForAdditionalClaim 如果未在 <AdditionalClaims> 元素的子元素 <Claim> 中指定声明的名称,部署将失败。
    InvalidNameForAdditionalHeader <AdditionalClaims> 元素的子元素 <Claim> 中使用的声明的名称为 algtyp 时会发生此错误。
    InvalidTypeForAdditionalHeader 如果 <AdditionalClaims> 元素的子元素 <Claim> 中使用的声明类型不是 stringnumberbooleanmap 之一,部署将失败。
    InvalidValueOfArrayAttribute <AdditionalClaims> 元素的子元素 <Claim> 中数组特性的值未设置为 truefalse 时会发生此错误。
    InvalidValueForElement 如果 <Algorithm> 元素中指定的值不受支持,部署将失败。
    MissingConfigurationElement 如果 <PrivateKey> 元素未与 RSA 系列算法搭配使用,或者 <SecretKey> 元素未与 HS 系列算法搭配使用,则会发生此错误。
    InvalidKeyConfiguration 如果未在 <PrivateKey><SecretKey> 元素中定义子元素 <Value>,部署将失败。
    EmptyElementForKeyConfiguration 如果 <PrivateKey><SecretKey> 元素的子元素 <Value> 的 ref 特性为空或未指定,部署将失败。
    InvalidConfigurationForVerify 如果在 <SecretKey> 元素中定义了 <Id> 元素,则会发生此错误。
    InvalidEmptyElement 如果验证 JWT 政策的 <Source> 元素为空,则会发生此错误。如果存在,则必须使用 Apigee 流变量名称定义它。
    InvalidPublicKeyValue 如果 <PublicKey> 元素的子元素 <JWKS> 中所用的值未使用 RFC 7517 中说明的有效格式,部署将失败。
    InvalidConfigurationForActionAndAlgorithm 如果 <PrivateKey> 元素与 HS 系列算法搭配使用,或者 <SecretKey> 元素与 RSA Family 算法搭配使用,部署将失败。

    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 "InvalidToken"
    JWT.failed All JWT policies set the same variable in the case of a failure. JWT.failed = true

    Example error response

    JWT Policy Fault Codes

    For error handling, the best practice is to trap the errorcode part of the error response. Do not rely on the text in the faultstring, because it could change.

    Example fault rule

        <FaultRules>
            <FaultRule name="JWT Policy Errors">
                <Step>
                    <Name>JavaScript-1</Name>
                    <Condition>(fault.name Matches "InvalidToken")</Condition>
                </Step>
                <Condition>JWT.failed=true</Condition>
            </FaultRule>
        </FaultRules>
        

    XMLThreatProtection 政策

    本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息处理故障

    运行时错误

    政策执行时可能会发生这些错误。

    故障代码 HTTP 状态 原因 修复
    steps.xmlthreatprotection.ExecutionFailed 500 XMLThreatProtection 政策可能会抛出许多不同类型的 ExecutionFailed 错误。其中大多数错误会在超出政策中设置的特定阈值时发生。这些类型的错误包括:元素名称长度子级计数节点深度属性计数属性名称长度,等等。您可以在 XMLThreatProtection 政策运行时错误问题排查主题中查看完整列表。
    steps.xmlthreatprotection.InvalidXMLPayload 500 如果 XMLThreatProtection 政策的 <Source> 元素指定的输入消息载荷不是有效的 XML 文档,就会出现此错误。
    steps.xmlthreatprotection.SourceUnavailable 500 如果在 <Source> 元素中指定的消息变量为以下任意一项,就会出现此错误:
    • 超出范围(在执行政策的特定流中不可用)
    • 不是 requestresponsemessage 有效值之一
    steps.xmlthreatprotection.NonMessageVariable 500 如果将 <Source> 元素设置为非消息类型的变量,则会发生此错误。

    部署错误

    无。

    故障变量

    发生运行时错误时,系统会设置这些变量。如需了解详情,请参阅您需要了解的有关政策错误的信息

    变量 其中 示例
    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 政策

    This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.

    Runtime errors

    These errors can occur when the policy executes.

    Fault code HTTP status Cause Fix
    steps.xmltojson.ExecutionFailed ExecutionFailed This error occurs when the input payload (XML) is empty or the input XML is invalid or malformed.
    steps.xmltojson.InCompatibleTypes ExecutionFailed 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.
    steps.xmltojson.InvalidSourceType ExecutionFailed 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.
    steps.xmltojson.OutputVariableIsNotAvailable ExecutionFailed This error occurs if the variable specified in the <Source> element of the XML to JSON 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.
    steps.xmltojson.SourceUnavailable ExecutionFailed This error occurs if the message variable specified in the <Source> element of the XML to JSON 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)

    Deployment errors

    These errors can occur when you deploy a proxy containing this policy.

    Error name Cause Fix
    EitherOptionOrFormat If one of the elements <Options> or <Format> is not declared in the XML to JSON Policy, then the deployment of the API proxy fails.
    UnknownFormat If the <Format> element within the XML to JSON policy has an unknown format defined, then the deployment of the API proxy fails. Predefined formats include: xml.com, yahoo, google, and badgerFish.

    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 = "SourceUnavailable"
    xmltojson.policy_name.failed policy_name is the user-specified name of the policy that threw the fault. xmltojson.XMLtoJSON-1.failed = true

    Example error response

    {
      "fault": {
        "faultstring": "XMLToJSON[XMLtoJSON-1]: Source xyz is not available",
        "detail": {
          "errorcode": "steps.xml2json.SourceUnavailable"
        }
      }
    }
    

    Example fault rule

    <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 政策

    运行时错误

    政策执行时可能会发生这些错误。

    故障代码 HTTP 状态 原因 修复
    steps.xsl.XSLSourceMessageNotAvailable 500 如果在 XSLTransform 政策的 <Source> 元素中指定的消息或字符串变量超出范围(在执行政策的特定流程中不可用)或无法解决(未定义),则会发生此错误。
    steps.xsl.XSLEvaluationFailed 500 如果输入 XML 载荷不可用/格式不正确,或者 XSLTransform 政策失败/无法根据 XSL 文件提供的转换规则转换输入 XML 文件,就会出现此错误。很多不同的原因可能会导致 XSLTransform 政策失败。错误消息中的失败原因提供了有关原因的更多信息。

    部署错误

    在您部署包含此政策的代理时,可能会发生这些错误。

    错误名称 原因 修复
    XSLEmptyResourceUrl 如果 XSLTransform 政策中的 <ResourceURL> 元素为空,则 API 代理的部署将会失败。
    XSLInvalidResourceType 如果在 XSLTransform 政策的 <ResourceURL> 元素中指定的资源类型不是 xsl 类型,则该 API 代理的部署将会失败。