政策錯誤參考資料

您正在查看 Apigee Edge 說明文件。
查看 Apigee X 說明文件
資訊

AccessControl 政策

本節說明當這項政策觸發錯誤時,傳回的錯誤代碼和錯誤訊息,以及 Edge 設定的錯誤變數。 如果您正在開發錯誤規則來處理錯誤,請務必瞭解這項資訊。詳情請參閱「政策錯誤須知」和「處理錯誤」。

執行階段錯誤

執行政策時,可能會發生這些錯誤。

錯誤代碼 HTTP 狀態 原因 修正
accesscontrol.IPDeniedAccess 403 用戶端 IP 位址或 API 要求中傳遞的 IP 位址,與存取權控管政策的 <MatchRule> 元素中指定的 IP 位址相符,且 <MatchRule> 元素的 action 屬性設為 DENY<SourceAddress>

錯誤變數

這些變數是在執行階段錯誤發生時設定。詳情請參閱「政策錯誤特有的變數」。

Variables 地點 範例
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 政策

如需相關資訊,請參閱政策錯誤須知處理錯誤

執行階段錯誤

無。

部署錯誤

錯誤名稱 錯誤字串 HTTP 狀態 發生時機
InvalidEntityType Invalid type [entity_type] in ACCESSENTITYStepDefinition [policy_name] 不適用 使用的實體類型必須是支援的類型之一。

AssignMessage 政策

本節說明當這項政策觸發錯誤時,傳回的錯誤代碼和錯誤訊息,以及 Edge 設定的錯誤變數。 如果您正在開發錯誤規則來處理錯誤,請務必瞭解這項資訊。詳情請參閱「政策錯誤須知」和「處理錯誤」。

執行階段錯誤

執行政策時,可能會發生這些錯誤。

錯誤代碼 HTTP 狀態 原因 修正
steps.assignmessage.SetVariableFailed 500 這項政策無法設定變數。請參閱未解析變數名稱的錯誤字串。
steps.assignmessage.VariableOfNonMsgType 500

如果 <Copy> 元素中的 source 屬性設為不屬於 message 類型的變數,就會發生這個錯誤。

訊息類型變數代表整個 HTTP 要求和回應。內建 Edge 流程變數 requestresponsemessage 屬於訊息類型。如要進一步瞭解訊息變數,請參閱「變數參考資料」。

steps.assignmessage.UnresolvedVariable 500

如果 Assign Message 政策中指定的變數符合下列任一條件,就會發生這個錯誤:

  • 超出範圍 (不適用於執行政策的特定流程)
  • 無法解析 (未定義)

部署錯誤

若您部署包含這項政策的 Proxy,就可能會發生這些錯誤。

錯誤名稱 原因 修正
InvalidIndex 如果 Assign Message 政策的 <Copy> 和/或 <Remove> 元素中指定的索引為 0 或負數,API Proxy 部署就會失敗。
InvalidVariableName 如果子項元素 <Name> 為空白,或是在 <AssignVariable> 元素中未指定,API Proxy 的部署就會失敗,因為沒有可指派值的有效變數名稱。必須提供有效的變數名稱。
InvalidPayload 政策中指定的酬載無效。

錯誤變數

當這項政策在執行階段觸發錯誤時,系統會設定這些變數。詳情請參閱「政策錯誤須知」。

Variables 地點 範例
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="VariableOfNonMsgType"></faultrule><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>

基本驗證政策

本節說明當這項政策觸發錯誤時,傳回的錯誤代碼和錯誤訊息,以及 Edge 設定的錯誤變數。如果您開發的錯誤規則來處理錯誤,請務必瞭解這些資訊。詳情請參閱「政策錯誤須知」和「處理錯誤」。

執行階段錯誤

執行政策時,可能會發生這些錯誤。

錯誤代碼 HTTP 狀態 原因 修正
steps.basicauthentication.InvalidBasicAuthenticationSource 500 當傳入的 Base64 編碼字串不含有效值,或是標頭格式錯誤 (例如不是以「Basic」開頭) 時,您進行的解碼。
steps.basicauthentication.UnresolvedVariable 500 解碼或編碼所需的來源變數不存在。只有在 IgnoreUnresolvedVariables 為 false 時,才會發生這個錯誤。

部署錯誤

若您部署包含這項政策的 Proxy,就可能會發生這些錯誤。

錯誤名稱 發生時機 修正
UserNameRequired 已命名作業必須有 <User> 元素。
PasswordRequired 已命名作業必須有 <Password> 元素。
AssignToRequired 已命名作業必須有 <AssignTo> 元素。
SourceRequired 已命名作業必須有 <Source> 元素。

錯誤變數

這些變數是在執行階段錯誤發生時設定。詳情請參閱「政策錯誤的注意事項」。

Variables 地點 範例
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>

ConcurrentRateLimit 政策

本節說明當這項政策觸發錯誤時,傳回的錯誤代碼和錯誤訊息,以及 Edge 設定的錯誤變數。 如果您開發的錯誤規則來處理錯誤,請務必瞭解這些資訊。詳情請參閱「政策錯誤須知」和「處理錯誤」。

執行階段錯誤

執行政策時,可能會發生這些錯誤。

錯誤代碼 HTTP 狀態 發生時機
policies.concurrentratelimit.ConcurrentRatelimtViolation 503

ConcurrentRatelimit 連線數量超過上限。連線限制:{0}

注意:左側顯示的錯誤程式碼正確無誤,但含有拼寫錯誤 (「limt」)。為了包裝這個錯誤,請務必使用此處所示的程式碼。

部署錯誤

錯誤名稱 發生時機
InvalidCountValue ConcurrentRatelimit 指定的無效計數值無效。
ConcurrentRatelimitStepAttachment\
NotAllowedAtProxyEndpoint
不得在 Proxy 要求/回應/錯誤路徑中使用並行速率限制政策 {0} 連結。這項政策必須放在目標端點上。
ConcurrentRatelimitStepAttachment\
MissingAtTargetEndpoint
目標要求/回應/錯誤的路徑缺少並行速率限制政策 {0} 連結。這項政策必須放置在「目標要求預先流程」、「目標回應 Postflow」和「DefaultFaultRule」中。
InvalidTTLForMessageTimeOut 為訊息逾時指定的 ConcurrentRatelimit 無效 ttl 值。必須是正整數。

錯誤變數

系統會在這項政策觸發錯誤時設定這些變數。詳情請參閱「政策錯誤的注意事項」。

Variables 地點 範例
fault.name="fault_name" fault_name 是錯誤的名稱,如上方的「執行階段錯誤」表格所示。錯誤名稱是錯誤碼的最後一個部分。 fault.name Matches "ConcurrentRatelimtViolation"

注意:範例中顯示的錯誤代碼正確無誤,但包含錯字 (「limt」)。為了妥善處理這個錯誤,請務必使用此處所示的程式碼。

concurrentratelimit.policy_name.failed policy_name 是擲回錯誤的政策使用者指定的名稱。 concurrentratelimit.CRL-RateLimitPolicy.failed = true

錯誤回應範例

如果超過頻率限制,政策只會將 HTTP 狀態 503 傳回給用戶端。

故障規則示例

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

本節說明當這項政策觸發錯誤時,傳回的錯誤代碼和錯誤訊息,以及 Edge 設定的錯誤變數。 如果您正在開發錯誤規則來處理錯誤,請務必瞭解這項資訊。詳情請參閱「政策錯誤須知」和「處理錯誤」。

執行階段錯誤

執行政策時,可能會發生這些錯誤。

錯誤代碼 HTTP 狀態 發生時機
steps.jws.FailedToDecode 401 政策無法解碼 JWS。JWS 可能已損毀。
steps.jws.FailedToResolveVariable 401 發生於政策 <Source> 元素中指定的資料流變數不存在時產生的。
steps.jws.InvalidClaim 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.MissingPayload 401 缺少 JWS 酬載。
steps.jws.NoAlgorithmFoundInHeader 401 JWS 省略演算法標頭時發生。
steps.jws.UnknownException 401 發生不明例外狀況。

部署錯誤

若您部署包含這項政策的 Proxy,就可能會發生這些錯誤。

錯誤名稱 發生時機
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

其他可能的部署錯誤。

錯誤變數

這些變數是在執行階段錯誤發生時設定。詳情請參閱「政策錯誤的注意事項」。

Variables 地點 範例
fault.name="fault_name" fault_name 是錯誤的名稱,如上方的「執行階段錯誤」表格所示。錯誤名稱是錯誤碼的最後一個部分。 fault.name Matches "TokenExpired"
JWS.failed 當測試失敗時,所有 JWS 政策都會設定相同的變數。 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 政策

本節說明當這項政策觸發錯誤時,傳回的錯誤代碼和錯誤訊息,以及 Edge 設定的錯誤變數。 如果您正在開發錯誤規則來處理錯誤,請務必瞭解這項資訊。詳情請參閱「政策錯誤須知」和「處理錯誤」。

執行階段錯誤

執行政策時,可能會發生這些錯誤。

錯誤代碼 HTTP 狀態 原因 修正
steps.jwt.FailedToDecode 401 當政策無法解碼 JWT 時發生。JWT 可能格式錯誤、無效或無法解密。
steps.jwt.FailedToResolveVariable 401 發生於政策 <Source> 元素中指定的資料流變數不存在時產生的。
steps.jwt.InvalidToken 401 當政策的 <Source> 元素中指定的流程變數超出範圍,或是無法解析時,就會發生這個錯誤。

部署錯誤

若您部署包含這項政策的 Proxy,就可能會發生這些錯誤。

錯誤名稱 原因 修正
InvalidEmptyElement 系統會在政策的 <Source> 元素中未指定包含要解碼的 JWT 的流程變數。

錯誤變數

這些變數是在執行階段錯誤發生時設定。詳情請參閱「政策錯誤的注意事項」。

Variables 地點 範例
fault.name="fault_name" fault_name 是錯誤的名稱,如上方的「執行階段錯誤」表格所示。錯誤名稱是錯誤碼的最後一個部分。 fault.name Matches "TokenExpired"
JWT.failed 所有 JWT 政策設定失敗時,都會設定相同的變數。 JWT.failed = true

錯誤回應範例

JWT 政策錯誤程式碼

如要處理錯誤,最佳做法是納入錯誤回應的 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>
    

「擷取變數」政策

本節說明當這項政策觸發錯誤時,傳回的錯誤代碼和錯誤訊息,以及 Edge 設定的錯誤變數。 如果您正在開發錯誤規則來處理錯誤,請務必瞭解這項資訊。詳情請參閱「政策錯誤須知」和「處理錯誤」。

執行階段錯誤

執行政策時,可能會發生這些錯誤。

錯誤代碼 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 元素中指定 message 變數,就會發生這個錯誤:
  • 超出範圍 (不適用於執行政策的特定流程) 或
  • 無法解析 (未定義)
steps.extractvariables.UnableToCast 500 如果政策無法將擷取的值轉換為變數,就會發生這個錯誤。一般來說,如果您嘗試將某個資料類型的值設為另一種資料類型的變數,就會發生這類情況。

部署錯誤

若您部署包含這項政策的 Proxy,就可能會發生這些錯誤。

錯誤名稱 原因 修正
NothingToExtract 如果政策中沒有任何元素 URIPathQueryParamHeaderFormParamXMLPayloadJSONPayload,API Proxy 的部署就會失敗,因為沒有可擷取的項目。
NONEmptyPrefixMappedToEmptyURI 如果政策的 Namespace 元素在 XMLPayload 元素下方已定義前置字串,但未定義 URI,就會發生這個錯誤。
DuplicatePrefix 如果政策在 XMLPayload 元素的 Namespace 元素中多次定義相同前置字串,就會發生這個錯誤。
NoXPathsToEvaluate 如果政策的 XMLPayload 元素中沒有 XPath 元素,API Proxy 部署作業就會失敗,並發生這個錯誤。
EmptyXPathExpression 如果政策的 XMLPayload 元素中包含空白的 XPath 運算式,API Proxy 的部署就會失敗。
NoJSONPathsToEvaluate 如果政策在 JSONPayload 元素中沒有 JSONPath 元素,API Proxy 部署就會失敗,並發生這項錯誤。
EmptyJSONPathExpression 如果政策的 XMLPayload 元素中含有空白的 XPath 運算式,API Proxy 的部署就會失敗。
MissingName 如果在必要情況下,政策的任何政策元素 (例如 QueryParamHeaderFormParamVariable) 中沒有 name 屬性,API Proxy 的部署作業就會失敗。
PatternWithoutVariable 如果政策未在 Pattern 元素中指定變數,API Proxy 的部署作業就會失敗。Pattern 元素需要指定要儲存擷取資料的變數名稱。
CannotBeConvertedToNodeset 如果政策中有 XPath 運算式,其中 Variable 類型定義為 nodeset,但運算式無法轉換為 nodeset,API Proxy 部署就會失敗。
JSONPathCompilationFailed 政策無法編譯指定的 JSON 路徑。
InstantiationFailed 無法執行個體化政策。
XPathCompilationFailed 如果 XPath 元素中使用的前置字串或值不屬於政策中任何宣告的命名空間,那麼 API Proxy 部署作業就會失敗。
InvalidPattern 如果政策內任何元素 (例如 URIPathQueryParamHeaderFormParamXMLPayloadJSONPayload) 中的 Pattern 元素定義無效,API Proxy 的部署作業就會失敗。

錯誤變數

當這項政策在執行階段觸發錯誤時,系統會設定這些變數。詳情請參閱「政策錯誤須知」。

Variables 地點 範例
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>

產生 JWS 政策

本節說明當這項政策觸發錯誤時,傳回的錯誤代碼和錯誤訊息,以及 Edge 設定的錯誤變數。 請務必瞭解您是否正在開發錯誤規則來處理錯誤。詳情請參閱政策錯誤須知處理錯誤

執行階段錯誤

執行政策時,可能會發生這些錯誤。

錯誤代碼 HTTP 狀態 發生時機
steps.jws.GenerationFailed 401 政策無法產生 JWS。
steps.jws.InsufficientKeyLength 401 適用於小於 32 個位元組的 HS256 演算法
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 演算法指定曲線鍵,

部署錯誤

若您部署包含這項政策的 Proxy,就可能會發生這些錯誤。

錯誤名稱 發生時機
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

其他可能的部署錯誤。

錯誤變數

這些變數是在執行階段錯誤發生時設定。詳情請參閱「政策錯誤的注意事項」。

Variables 地點 範例
fault.name="fault_name" fault_name 是錯誤的名稱,如上方的「執行階段錯誤」表格所示。錯誤名稱是錯誤碼的最後一個部分。 fault.name Matches "TokenExpired"
JWS.failed 當測試失敗時,所有 JWS 政策都會設定相同的變數。 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 政策

本節說明當這項政策觸發錯誤時,傳回的錯誤代碼和錯誤訊息,以及 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 crit 標頭中驗證 JWT 政策找到的標頭不在 KnownHeaders 中。
steps.jwt.UnknownException 401 發生不明例外狀況。
steps.jwt.WrongKeyType 401 指定的金鑰類型有誤。舉例來說,如果您為橢圓曲線演算法指定 RSA 金鑰,或是為 RSA 演算法指定曲線鍵,

部署錯誤

若您部署包含這項政策的 Proxy,就可能會發生這些錯誤。

錯誤名稱 原因 修正
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> 元素中指定的值未使用支援的格式,部署就會失敗。

錯誤變數

這些變數是在執行階段錯誤發生時設定。詳情請參閱「政策錯誤的注意事項」。

Variables 地點 範例
fault.name="fault_name" fault_name 是錯誤的名稱,如上方的「執行階段錯誤」表格所示。錯誤名稱是錯誤碼的最後一個部分。 fault.name Matches "TokenExpired"
JWT.failed 所有 JWT 政策設定失敗時,都會設定相同的變數。 JWT.failed = true

錯誤回應範例

JWT 政策錯誤程式碼

如要處理錯誤,最佳做法是納入錯誤回應的 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>
    

Java 呼叫政策

本節說明當這項政策觸發錯誤時,傳回的錯誤代碼和錯誤訊息,以及 Edge 設定的錯誤變數。 如果您正在開發錯誤規則來處理錯誤,請務必瞭解這項資訊。詳情請參閱「政策錯誤須知」和「處理錯誤」。

執行階段錯誤

執行政策時,可能會發生這些錯誤。

錯誤代碼 HTTP 狀態 原因 修正
steps.javacallout.ExecutionError 500 發生於 Java 程式碼在執行 Java Call 政策期間擲回例外狀況或傳回空值時發生。

部署錯誤

部署含有政策的 Proxy 時,就可能會發生這類錯誤。

錯誤名稱 錯誤字串 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] 不適用 查看錯誤字串。另請參閱支援的軟體和支援的版本
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] 不適用 查看錯誤字串。

錯誤變數

系統會在這項政策觸發錯誤時設定這些變數。詳情請參閱「政策錯誤的注意事項」。

Variables 地點 範例
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 政策

本節說明當這項政策觸發錯誤時,傳回的錯誤代碼和錯誤訊息,以及 Edge 設定的錯誤變數。如果您開發的錯誤規則來處理錯誤,請務必瞭解這些資訊。詳情請參閱「政策錯誤須知」和「處理錯誤」。

執行階段錯誤

執行政策時,可能會發生這些錯誤。

錯誤代碼 HTTP 狀態 原因 修正
steps.javascript.ScriptExecutionFailed 500 JavaScript 政策可能會擲回多種不同類型的 ScriptExecutionFailed 錯誤。常見的錯誤類型包括 RangeErrorReferenceErrorSyntaxErrorTypeErrorURIError
steps.javascript.ScriptExecutionFailedLineNumber 500 JavaScript 程式碼發生錯誤。詳情請參閱錯誤字串。 不適用
steps.javascript.ScriptSecurityError 500 執行 JavaScript 時發生安全性錯誤。詳情請參閱錯誤字串。 不適用

部署錯誤

若您部署包含這項政策的 Proxy,就可能會發生這些錯誤。

錯誤名稱 原因 修正
InvalidResourceUrlFormat 如果 <ResourceURL> 或 JavaScript 政策的 <IncludeURL> 元素中指定的資源網址格式無效,API Proxy 部署就會失敗。
InvalidResourceUrlReference 如果 <ResourceURL><IncludeURL> 元素參照的 JavaScript 檔案不存在,API Proxy 的部署作業就會失敗。參照的來源檔案必須位於 API Proxy、環境或機構層級。
WrongResourceType 如果 JavaScript 政策的 <ResourceURL><IncludeURL> 元素參照 jsc (JavaScript 檔案) 以外的任何資源類型,系統就會在部署期間發生這個錯誤。
NoResourceURLOrSource 如未宣告 <ResourceURL> 元素,或未在此元素中定義資源網址,JavaScript 政策的部署作業可能會失敗。<ResourceURL> 元素是必要元素。或者,系統會宣告 <IncludeURL> 元素,但這個元素中並未定義資源網址。<IncludeURL> 元素為選用元素,但如果已宣告,則必須在 <IncludeURL> 元素中指定資源網址。

錯誤變數

當這項政策在執行階段觸發錯誤時,系統會設定這些變數。詳情請參閱「政策錯誤須知」。

Variables 地點 範例
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 政策

本節說明當這項政策觸發錯誤時,傳回的錯誤代碼和錯誤訊息,以及 Edge 設定的錯誤變數。 如果您正在開發錯誤規則來處理錯誤,請務必瞭解這項資訊。詳情請參閱「政策錯誤須知」和「處理錯誤」。

執行階段錯誤

執行政策時,可能會發生這些錯誤。

錯誤代碼 HTTP 狀態 原因 修正
steps.jsonthreatprotection.ExecutionFailed 500 JSONThreatProtection 政策可能會擲回多種不同類型的 ExecutionFailed 錯誤。 這類錯誤大多發生在政策中設定的特定門檻。這類錯誤包括:物件項目名稱長度物件項目數量陣列元素數量容器深度字串字串值長度。酬載包含無效的 JSON 物件時,也會出現這個錯誤。
steps.jsonthreatprotection.SourceUnavailable 500 如果 <Source> 元素中指定的 message 變數是下列任一,就會發生這個錯誤:
  • 超出範圍 (不適用於執行政策的特定流程)
  • 不是有效的值 requestresponsemessage
steps.jsonthreatprotection.NonMessageVariable 500 如果 <Source> 元素設為不屬於 message 類型的變數,就會發生這個錯誤。

部署錯誤

無。

錯誤變數

系統會在這項政策觸發錯誤時設定這些變數。詳情請參閱「政策錯誤的注意事項」。

Variables 地點 範例
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 政策

本節說明當這項政策觸發錯誤時,傳回的錯誤代碼和錯誤訊息,以及 Edge 設定的錯誤變數。 如果您正在開發錯誤規則來處理錯誤,請務必瞭解這項資訊。詳情請參閱「政策錯誤須知」和「處理錯誤」。

執行階段錯誤

執行政策時,可能會發生這些錯誤。

錯誤代碼 HTTP 狀態 原因 修正
steps.jsontoxml.ExecutionFailed 500 輸入酬載 (JSON) 為空白,或是傳遞至 JSON 政策的輸入 (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> 元素中,如果指定 message 變數,就會發生這個錯誤:
  • 超出範圍 (不適用於執行政策的特定流程) 或
  • 無法解析 (未定義)

部署錯誤

無。

錯誤變數

這些變數是在執行階段錯誤發生時設定。詳情請參閱「政策錯誤的注意事項」。

Variables 地點 範例
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 政策

本節說明當這項政策觸發錯誤時,傳回的錯誤代碼和錯誤訊息,以及 Edge 設定的錯誤變數。 如果您正在開發錯誤規則來處理錯誤,請務必瞭解這項資訊。詳情請參閱「政策錯誤須知」和「處理錯誤」。

執行階段錯誤

執行政策時,可能會發生這些錯誤。

錯誤代碼 HTTP 狀態 原因 修正
steps.keyvaluemapoperations.SetVariableFailed 500

如果您嘗試從加密的金鑰值對應擷取值,並將值設為名稱不含前置字串 private 的變數,就會發生這個錯誤。基於基本安全性用途在偵錯期間必須使用前置字串,API Proxy 追蹤和偵錯工作階段皆會隱藏已加密的值。

steps.keyvaluemapoperations.UnsupportedOperationException 500

如果鍵/值對應作業政策中的 mapIdentifier 屬性設為空白字串,就會發生這個錯誤。

部署錯誤

若您部署包含這項政策的 Proxy,就可能會發生這些錯誤。

錯誤名稱 原因 修正
InvalidIndex 如果鍵值對應作業政策的 <Get> 元素中指定的 index 屬性為零或負數,API Proxy 部署就會失敗。索引從 1 開始,因此系統會將零或負整數的索引視為無效。
KeyIsMissing 如果金鑰值對應作業政策的 <InitialEntries> 元素 <Entry> 下方缺少 <Key> 元素,或是缺少 <Parameter> 元素,就會發生這個錯誤。<Key>
ValueIsMissing 在鍵/值對應作業政策的 <InitialEntries> 元素的 <Entry> 元素下方,缺少 <Value> 元素,就會發生這個錯誤。

LDAP 政策

這項政策會使用下列錯誤代碼:

錯誤代碼 訊息
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 查看錯誤字串。

部署錯誤

若您部署包含這項政策的 Proxy,就可能會發生這些錯誤。

錯誤名稱 原因 修正
InvalidProtocol 如果 <Protocol> 元素中指定的通訊協定無效,MessageLogging 政策的部署作業可能會失敗。有效的通訊協定為 TCP 和 UDP。如果是透過 TLS/SSL 傳送系統記錄訊息,則僅支援 TCP。
InvalidPort 如果 <Port> 元素中未指定通訊埠號碼,或是通訊埠號碼無效,MessageLogging 政策的部署作業可能會失敗。通訊埠編號必須為大於零的整數。

錯誤變數

這些變數是在執行階段錯誤發生時設定。詳情請參閱「政策錯誤的注意事項」。

Variables 地點 範例
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 政策

本節說明當這項政策觸發錯誤時,傳回的錯誤代碼和錯誤訊息,以及 Edge 設定的錯誤變數。 如果您正在開發錯誤規則來處理錯誤,請務必瞭解這項資訊。詳情請參閱「政策錯誤須知」和「處理錯誤」。

執行階段錯誤

執行政策時,可能會發生這些錯誤。

錯誤代碼 HTTP 狀態 原因
steps.oasvalidation.Failed 500 無法依據所提供的 OpenAPI 規格驗證要求訊息主體。
steps.oasvalidation.SourceMessageNotAvailable 500

你在政策的 <Source> 元素中指定的變數超出範圍,或是無法解析。

steps.oasvalidation.NotMessageVariable 500

<Source> 元素設定為不屬於 message 類型的變數。

部署錯誤

若您部署包含這項政策的 Proxy,就可能會發生這些錯誤。

錯誤名稱 原因
ResourceDoesNotExist <OASResource> 元素中參照的 OpenAPI 規格不存在。
ResourceCompileFailed 部署作業中包含的 OpenAPI 規格含有導致無法編譯的錯誤。這通常表示規格並非格式正確的 OpenAPI 規格 3.0。
BadResourceURL 無法處理 <OASResource> 元素中參照的 OpenAPI 規格。如果檔案並非 JSON 或 YAML 檔案,或是檔案網址未正確指定,就會發生這種情況。

錯誤變數

當這項政策在執行階段觸發錯誤時,系統會設定這些變數。詳情請參閱「政策錯誤須知」。

Variables 地點 範例
fault.name="fault_name" fault_name 是錯誤的名稱,如上方的「執行階段錯誤」表格所示。錯誤名稱是錯誤碼的最後一個部分。 fault.name Matches "ResourceDoesNotExist"
oasvalidation.policy_name.failed policy_name 是擲回錯誤的政策使用者指定的名稱。 oasvalidation.myoaspolicy.failed = true

PopulateCache 政策

本節說明當這項政策觸發錯誤時,傳回的錯誤代碼和錯誤訊息,以及 Edge 設定的錯誤變數。 如果您正在開發錯誤規則來處理錯誤,請務必瞭解這項資訊。詳情請參閱「政策錯誤須知」和「處理錯誤」。

執行階段錯誤

執行政策時,可能會發生這些錯誤。

錯誤代碼 HTTP 狀態 發生時機
policies.populatecache.EntryCannotBeCached 500 無法快取項目。快取的訊息物件不是 Serializable 類別的例項。

部署錯誤

若您部署包含這項政策的 Proxy,就可能會發生這些錯誤。

錯誤名稱 原因 修正
InvalidCacheResourceReference 如果 PopulateCache 政策中的 <CacheResource> 元素設定的名稱不在 API Proxy 部署的環境中,就會發生這個錯誤。
CacheNotFound <CacheResource> 元素中指定的快取不存在。

錯誤變數

系統會在這項政策觸發錯誤時設定這些變數。詳情請參閱「政策錯誤的注意事項」。

Variables 地點 範例
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>

查詢快取政策

本節說明這項政策觸發錯誤時設定的錯誤訊息和流程變數。如果您正在開發 Proxy 的錯誤規則,請務必瞭解這項資訊。詳情請參閱「政策錯誤須知」和「處理錯誤」。

錯誤代碼前置字串

不適用

執行階段錯誤

這項政策不會擲回任何執行階段錯誤。

部署錯誤

若您部署包含這項政策的 Proxy,就可能會發生這些錯誤。

錯誤名稱 原因 修正
InvalidCacheResourceReference 如果 <CacheResource> 元素設定的名稱不在部署 API Proxy 的環境中,就會發生這個錯誤。
InvalidTimeout 如果 <CacheLookupTimeoutInSeconds> 元素設為負數,API Proxy 部署就會失敗。
CacheNotFound 如果尚未在特定的訊息處理器元件上建立錯誤訊息中提及的特定快取,就會發生這個錯誤。

錯誤變數

不適用

錯誤回應範例

不適用

InvalidateCache 政策

本節說明這項政策觸發錯誤時設定的錯誤訊息和流程變數。如果您正在開發 Proxy 的錯誤規則,請務必瞭解這項資訊。詳情請參閱「政策錯誤須知」和「處理錯誤」。

錯誤代碼前置字串

不適用

執行階段錯誤

這項政策不會擲回任何執行階段錯誤。

部署錯誤

若您部署包含這項政策的 Proxy,就可能會發生這些錯誤。

錯誤名稱 原因 修正
InvalidCacheResourceReference 如果 InvalidateCache 政策中的 <CacheResource> 元素設定的名稱不在部署 API Proxy 的環境中,就會發生這個錯誤。
CacheNotFound 如果尚未在特定的訊息處理器元件上建立錯誤訊息中提及的特定快取,就會發生這個錯誤。

錯誤變數

不適用

錯誤回應範例

不適用

ResponseCache 政策

本節說明這項政策觸發錯誤時設定的錯誤訊息和流程變數。如果您正在開發 Proxy 的錯誤規則,請務必瞭解這項資訊。詳情請參閱「政策錯誤須知」和「處理錯誤」。

錯誤代碼前置字串

不適用

執行階段錯誤

這項政策不會擲回任何執行階段錯誤。

部署錯誤

若您部署包含這項政策的 Proxy,就可能會發生這些錯誤。

錯誤名稱 原因 修正
InvalidTimeout 如果 ResponseCache 政策的 <CacheLookupTimeoutInSeconds> 元素設為負數,API Proxy 部署就會失敗。
InvalidCacheResourceReference 如果 ResponseCache 政策中的 <CacheResource> 元素設定的名稱不在部署 API Proxy 的環境中,就會發生這個錯誤。
ResponseCacheStepAttachmentNotAllowedReq 如果在 API Proxy 的任何流程中,將相同的 ResponseCache 政策附加至多個要求路徑,就會發生這個錯誤。
ResponseCacheStepAttachmentNotAllowedResp 如果在 API Proxy 的任何流程中,將相同的 ResponseCache 政策附加至多個回應路徑,就會發生這個錯誤。
InvalidMessagePatternForErrorCode 如果 ResponseCache 政策中的 <SkipCacheLookup><SkipCachePopulation> 元素包含無效條件,就會發生這個錯誤。
CacheNotFound 如果尚未在特定的訊息處理器元件上建立錯誤訊息中提及的特定快取,就會發生這個錯誤。

錯誤變數

不適用

錯誤回應範例

不適用

OAuthV2 政策

本節說明當這項政策觸發錯誤時,傳回的錯誤代碼和錯誤訊息,以及 Edge 設定的錯誤變數。 如果您正在開發錯誤規則來處理錯誤,請務必瞭解這項資訊。詳情請參閱「政策錯誤須知」和「處理錯誤」。

執行階段錯誤

執行政策時,可能會發生這些錯誤。

錯誤代碼 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> 元素指定的變數中找到權杖,但該變數無法解析。

VerifyToken
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 無效,系統就會傳回這個錯誤名稱。請確認您已針對與 Proxy 相關聯的開發人員應用程式,使用正確的用戶端金鑰和密鑰值。一般而言,這些值會以 Base64 編碼的基本授權標頭的形式傳送。

注意:建議您變更現有的錯誤規則條件,以擷取 invalid_clientInvalidClientIdentifier 名稱。如需詳細資訊和範例,請參閱「16.09.21 版本資訊」。

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\
steps.oauth.v2.ApiProductMatchFound
401

API Proxy 不在與存取權杖相關聯的產品中。

提示:請確定與存取權杖相關聯的產品設定正確無誤。舉例來說,如果您在資源路徑中使用萬用字元,請確保萬用字元已正確使用。詳情請參閱「建立 API 產品」。

如要進一步瞭解這個錯誤的原因,請一併參閱這篇Apigee 社群貼文

VerifyAccessToken
steps.oauth.v2.InvalidClientIdentifier 500

如果政策的 <GenerateResponse> 屬性設為 false,且要求中傳送的用戶端 ID 無效,系統就會傳回這個錯誤名稱。請確認您使用的用戶端金鑰和密鑰值正確無誤,適用於與 Proxy 相關聯的開發人員應用程式。一般而言,這些值會以 Base64 編碼的基本授權標頭的形式傳送。

注意:在這種情況下,這個錯誤先前稱為 invalid_client。建議您變更現有的錯誤規則條件,以擷取 invalid_clientInvalidClientIdentifier 名稱。如需詳細資訊和範例,請參閱「16.09.21 版本資訊」。

GenerateAccessToken
RefreshAccessToken

steps.oauth.v2.InvalidParameter 500 政策必須指定存取權杖或授權碼,但不得同時指定兩者。 GenerateAuthorizationCode
GenerateAccessTokenImplicitGrant
steps.oauth.v2.InvalidTokenType 500 您必須使用 <Tokens>/<Token> 元素指定權杖類型 (例如 refreshtoken)。如果用戶端傳遞了錯誤的類型,系統就會擲回這個錯誤。 VerifyToken
InvalidateToken
steps.oauth.v2.MissingParameter 500 回應類型為 token,但未指定授權類型。 GenerateAuthorizationCode
GenerateAccessTokenImplicitGrant
steps.oauth.v2.UnSupportedGrantType 500

用戶端指定的授權類型不受政策支援 (未列於 <SupportedGrantTypes> 元素中)。

注意:目前有一個錯誤,無法正確擲回不支援的授權類型錯誤。如果發生不支援的授權類型錯誤,Proxy 不會如預期進入錯誤流程。

GenerateAccessToken
GenerateAuthorizationCode
GenerateAccessTokenImplicitGrant
RefreshAccessToken

部署錯誤

若您部署包含這項政策的 Proxy,就可能會發生這些錯誤。

錯誤名稱 原因
InvalidValueForExpiresIn

<ExpiresIn> 元素的有效值是正整數和 -1

InvalidValueForRefreshTokenExpiresIn <RefreshTokenExpiresIn> 元素的有效值是正整數和 -1
InvalidGrantType <SupportedGrantTypes> 元素中指定的授權類型無效。如需有效類型的清單,請參閱政策參考資料。
ExpiresInNotApplicableForOperation 請確認 <Operations> 元素中指定的作業支援到期時間。例如,VerifyToken 作業則不會。
RefreshTokenExpiresInNotApplicableForOperation 請確認 <Operations> 元素中指定的作業支援更新權杖到期時間。例如,VerifyToken 作業則不會。
GrantTypesNotApplicableForOperation 請確認您在 <SupportedGrantTypes> 中指定的授權類型支援指定作業。
OperationRequired

您必須使用 <Operation> 元素在這項政策中指定作業。

注意:如果缺少 <Operation> 元素,UI 會擲回結構定義驗證錯誤。

InvalidOperation

您必須使用 <Operation> 元素在這項政策中指定有效的作業。

注意:如果 <Operation> 元素無效,UI 會擲回結構定義驗證錯誤。

TokenValueRequired 您必須在 <Tokens> 元素中指定權杖 <Token> 值。

錯誤變數

當這項政策在執行階段觸發錯誤時,系統會設定這些變數。

Variables 地點 範例
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

注意:在 VerifyAccessToken 作業中,錯誤名稱會包含下列後置字串:keymanagement.service
例如:keymanagement.service.invalid_access_token

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 傳送至政策的更新權杖已過期。

部署錯誤

如要瞭解部署錯誤,請參閱使用者介面中回報的訊息。

錯誤變數

當這項政策在執行階段觸發錯誤時,系統會設定這些變數。

Variables 地點 範例
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 社群文章

部署錯誤

如要瞭解部署錯誤,請參閱使用者介面中回報的訊息。

錯誤變數

當這項政策在執行階段觸發錯誤時,系統會設定這些變數。

Variables 地點 範例
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>

刪除 OAuthV2Info 政策

本節說明當這項政策觸發錯誤時,傳回的錯誤代碼和錯誤訊息,以及 Edge 設定的錯誤變數。 如果您正在開發錯誤規則來處理錯誤,請務必瞭解這項資訊。詳情請參閱「政策錯誤須知」和「處理錯誤」。

執行階段錯誤

執行政策時,可能會發生這些錯誤。

錯誤代碼 HTTP 狀態 原因
steps.oauth.v2.invalid_access_token 401 傳送至政策的存取權權杖無效。
steps.oauth.v2.invalid_request-authorization_code_invalid 401 傳送至政策的授權碼無效。
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound 401 如要瞭解如何排解這項錯誤,請參閱 這篇 Apigee 社群文章

部署錯誤

如要瞭解部署錯誤,請參閱使用者介面中回報的訊息。

錯誤變數

當這項政策在執行階段觸發錯誤時,系統會設定這些變數。

Variables 地點 範例
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>

OAuthv1.0a 政策

OAuthV1 政策類型定義了以下錯誤代碼。

如要瞭解 OAuth 相關 HTTP 錯誤代碼,請參閱「OAuth HTTP 錯誤回應參考資料」。

錯誤代碼 訊息
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 政策

未指定「取得 OAuth v1.0a 資訊」政策的錯誤代碼。

刪除 OAuthV1Info 政策

成功後,這項政策會傳回 200 狀態。

失敗時,這項政策會傳回 404 輸出內容,並產生類似下方的結果 (取決於您是否刪除存取權杖、要求權杖或驗證器):

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 錯誤。常見的錯誤類型包括 NameErrorZeroDivisionError

部署錯誤

若您部署包含這項政策的 Proxy,就可能會發生這些錯誤。

錯誤名稱 原因 修正
InvalidResourceUrlFormat 如果 <ResourceURL> 或 PythonScript 政策的 <IncludeURL> 元素中指定的資源網址格式無效,API Proxy 部署就會失敗。
InvalidResourceUrlReference 如果 <ResourceURL><IncludeURL> 元素參照不存在的 PythonScript 檔案,API Proxy 的部署作業就會失敗。參照的來源檔案必須位於 API Proxy、環境或機構層級。

錯誤變數

當這項政策在執行階段觸發錯誤時,系統會設定這些變數。詳情請參閱「政策錯誤須知」。

Variables 地點 範例
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> 元素定義的分鐘、小時、天、週或月。
policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference 500 如未在配額政策中定義 <TimeUnit> 元素,就會發生這個問題。此為必要元素,用於指定配額適用的時間單位。時間間隔可以是分鐘、小時、天、週或月。
policies.ratelimit.InvalidMessageWeight 500 如果透過流程變數指定的 <MessageWeight> 元素值無效 (非整數值),就會發生這個問題。
policies.ratelimit.QuotaViolation 500 超過配額限制。 不適用

部署錯誤

錯誤名稱 原因 修正
InvalidQuotaInterval 如果 <Interval> 元素中指定的配額間隔不是整數,API Proxy 的部署就會失敗。舉例來說,如果在 <Interval> 元素中指定的配額間隔為 0.1,API Proxy 的部署就會失敗。
InvalidQuotaTimeUnit 如果不支援 <TimeUnit> 元素中指定的時間單位,API Proxy 的部署就會失敗。支援的時間單位為 minutehourdayweekmonth
InvalidQuotaType 如果 <Quota> 元素中 type 屬性指定的配額類型無效,API Proxy 的部署就會失敗。支援的配額類型為 defaultcalendarflexirollingwindow
InvalidStartTime 如果 <StartTime> 元素中指定的時間格式無效,API Proxy 的部署就會失敗。有效的格式為 yyyy-MM-dd HH:mm:ss,採 ISO 8601 日期和時間格式。舉例來說,如果 <StartTime> 元素中指定的時間是 7-16-2017 12:00:00,API Proxy 的部署就會失敗。
StartTimeNotSupported 如果指定 <StartTime> 元素的配額類型不是 calendar 類型,API Proxy 的部署就會失敗。<StartTime> 元素僅適用於 calendar 配額類型。舉例來說,如果 <Quota> 元素中的 type 屬性設為 flexirolling window,API Proxy 的部署就會失敗。
InvalidTimeUnitForDistributedQuota 如果 <Distributed> 元素設為 true,且 <TimeUnit> 元素設為 second,API Proxy 的部署就會失敗。分散式配額無法設定「second」時間單位。
InvalidSynchronizeIntervalForAsyncConfiguration 如果在配額政策的 <AsynchronousConfiguration> 元素中針對 <SyncIntervalInSeconds> 元素指定的值小於零,API Proxy 部署就會失敗。
InvalidAsynchronizeConfigurationForSynchronousQuota 如果配額政策中的 <AsynchronousConfiguration> 元素值設為 true,且使用 <AsynchronousConfiguration> 元素定義非同步設定,則 API Proxy 部署作業會失敗。

錯誤變數

系統會在這項政策觸發錯誤時設定這些變數。詳情請參閱「政策錯誤的注意事項」。

Variables 地點 範例
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>

重設配額政策

本節說明當這項政策觸發錯誤時,傳回的錯誤代碼和錯誤訊息,以及 Edge 設定的錯誤變數。 如果您正在開發錯誤規則來處理錯誤,請務必瞭解這項資訊。詳情請參閱「政策錯誤須知」和「處理錯誤」。

執行階段錯誤

執行政策時,可能會發生這些錯誤。

錯誤代碼 HTTP 狀態 原因 修正
policies.resetquota.InvalidRLPolicy 500 重設配額政策的 <Quota> 元素中指定的配額政策未在 API Proxy 中定義,因此不適用於流程。<Quota> 是必要元素,用於識別應透過「重設配額」政策更新的目標配額政策。
policies.resetquota.FailedToResolveAllowCountRef 不適用 如果參照的變數含有政策 <Allow> 元素中的允許計數,就無法將參照的變數解析為值。此為必要元素,並指定配額計數器的金額。
policies.resetquota.FailedToResolveRLPolicy 500 無法解析 <Quota> 元素中 ref 屬性所參照的變數。

部署錯誤

若您部署包含這項政策的 Proxy,就可能會發生這些錯誤。

錯誤名稱 原因 修正
InvalidCount 如果重設配額政策的 <Allow> 元素中指定的計數值不是整數,API Proxy 部署就會失敗。

GrowFault 政策

本節說明這項政策觸發錯誤時傳回的錯誤代碼和錯誤訊息,以及 Edge 設定的錯誤變數。如果您正在開發錯誤規則來處理錯誤,請務必瞭解這項資訊。詳情請參閱 政策錯誤須知處理錯誤

執行階段錯誤

執行政策時,可能會發生這些錯誤。

錯誤代碼 HTTP 狀態 原因
steps.raisefault.RaiseFault 500 查看錯誤字串。

部署錯誤

無。

錯誤變數

這些變數是在執行階段錯誤發生時設定。詳情請參閱「政策錯誤的注意事項」。

Variables 地點 範例
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]"
   }
}

regexProtection 政策

本節說明這項政策觸發錯誤時,傳回的錯誤代碼和訊息,以及 Edge 設定的錯誤變數。如果您正在開發錯誤規則來處理錯誤,請務必瞭解這項資訊。如要擷取錯誤並引發自訂錯誤,請為政策根元素設定 continueOnError="true" 屬性。詳情請參閱「 政策錯誤須知」和「處理錯誤」。

Edge 政策傳回的錯誤遵循一致的格式,詳情請參閱錯誤代碼參考資料

執行階段錯誤

執行政策時,可能會發生這些錯誤。

錯誤代碼 訊息
ExecutionFailed 無法執行 RegularExpressionProtection StepDefinition {0}。原因:{1}
InstantiationFailed 無法將 RegularExpressionProtection StepDefinition {0} 例項化
NonMessageVariable 變數「{0}」無法解析為訊息
SourceMessageNotAvailable {0} 訊息不適用於 RegularExpressionProtection StepDefinition{1}
ThreatDetected 在 {0} 中偵測到規則運算式威脅:規則運算式:{1} 輸入:{2}
VariableResolutionFailed 無法解析變數「{0}」

部署錯誤

錯誤代碼 訊息 修正
CannotBeConvertedToNodeset regexProtection {0}:xpath {1} 的結果無法轉換為 nodeset。 內容{2}
DuplicatePrefix regexProtection {0}:前置字元重複 {1}
EmptyJSONPathExpression regexProtection {0}:空白 JSONPath 運算式
EmptyXPathExpression regexProtection {0}:空白的 XPath 運算式
InvalidRegularExpression regexProtection {0}:無效的規則運算式 {1},內容 {2}
JSONPathCompilationFailed regexProtection {0}:無法編譯 jsonpath {1}。內容{2}
NONEmptyPrefixMappedToEmptyURI regexProtection {0}:非空白前置字串 {1} 無法對應至空白 URI
NoPatternsToEnforce regexProtection {0}:{1} 中沒有可強制執行的模式
NothingToEnforce RegularExpressionProtection {0}:至少須有一個 URIPath、QueryParam、Header、FormParam、XMLPayload 和 JSONPayload
XPathCompilationFailed regexProtection {0}:無法編譯 xpath {1}。內容{2}

錯誤變數

系統會在這項政策觸發錯誤時設定這些變數。詳情請參閱「政策錯誤的注意事項」。

Variables 地點 範例
fault.name="fault_name" fault_name 是錯誤的名稱,如上表所列。 fault.name Matches "ThreatDetected"
regularexpressionprotection.policy_name.failed policy_name 是擲回錯誤的政策使用者指定的名稱。 regularexpressionprotection.Regular-Expressions-Protection-1.failed = true

SOAPMessageValidation 政策

本節說明當這項政策觸發錯誤時,傳回的錯誤代碼和錯誤訊息,以及 Edge 設定的錯誤變數。 如果您正在開發錯誤規則來處理錯誤,請務必瞭解這項資訊。詳情請參閱「政策錯誤須知」和「處理錯誤」。

執行階段錯誤

執行政策時,可能會發生這些錯誤。

錯誤代碼 HTTP 狀態 原因 修正
steps.messagevalidation.SourceMessageNotAvailable 500

如果政策的 <Source> 元素中有指定變數,就會發生這個錯誤:

  • 超出範圍 (不適用於執行政策的特定流程)
  • 無法解析 (未定義)
steps.messagevalidation.NonMessageVariable 500

如果 SOAPMessageValidation 政策中的 <Source> 元素設為不屬於 message 類型的變數,就會發生這個錯誤。

訊息類型變數代表整個 HTTP 要求和回應。內建 Edge 流程變數 requestresponsemessage 屬於訊息類型。如要進一步瞭解訊息變數,請參閱「變數參考資料」。

steps.messagevalidation.Failed 500 如果 SOAPMessageValidation 政策無法針對 XSD 結構定義或 WSDL 定義驗證輸入訊息酬載,就會發生這個錯誤。如果酬載訊息中有格式錯誤的 JSON 或 XML,也會發生這種狀況。

部署錯誤

若您部署包含這項政策的 Proxy,就可能會發生這些錯誤。

錯誤名稱 原因 修正
InvalidResourceType SOAPMessageValidation 政策中的 <ResourceURL> 元素會設為政策不支援的資源類型。
ResourceCompileFailed 在 SOAPMessageValidation 政策的 <ResourceURL> 元素中參照的資源指令碼中,有一項錯誤導致無法編譯。
RootElementNameUnspecified SOAPMessageValidation 政策中的 <Element> 元素不含根元素的名稱。
InvalidRootElementName SOAPMessageValidation 政策中的 <Element> 元素包含的根元素名稱不符合 XML 規則的有效元素命名規則。

SAMLAssertion 政策

本節說明這項政策觸發錯誤時傳回的錯誤代碼和錯誤訊息,以及 Edge 設定的錯誤變數。如果您正在開發錯誤規則來處理錯誤,請務必瞭解這項資訊。詳情請參閱「政策錯誤須知」和「處理錯誤」。

部署錯誤

若您部署包含這項政策的 Proxy,就可能會發生這些錯誤。

錯誤名稱 原因 修正
SourceNotConfigured 下列一或多項驗證 SAML 宣告政策元素未定義或空白:<Source><XPath><Namespaces><Namespace>
TrustStoreNotConfigured 如果 <TrustStore> 元素為空白或未在 ValidationSAMLAssertion 政策中指定,代表 API Proxy 部署失敗。 必須提供有效的 Trust Store。
NullKeyStoreAlias 如果在 Generate SAML 斷言政策的 <Keystore> 元素中,含有空白或 <Alias> 的子元素,API Proxy 的部署作業就會失敗。必須提供有效的 KeyStore 別名。
NullKeyStore 如果 <Name> 的子元素 <Name> 為空白,或是未在 GenerateSAMLAssertion 政策的 <Keystore> 元素中指定,代表 API Proxy 部署失敗。必須提供有效的 KeyStore 名稱。
NullIssuer 如果 <Issuer> 元素為空白,或是未在 Generate SAML 斷言政策中指定,則表示 API Proxy 部署失敗。必須提供有效的 <Issuer> 值。

錯誤變數

這些變數是在執行階段錯誤發生時設定。詳情請參閱「政策錯誤的注意事項」。

Variables 地點 範例
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>

服務摘要政策

本節說明當這項政策觸發錯誤時,傳回的錯誤代碼和錯誤訊息,以及 Edge 設定的錯誤變數。 如果您正在開發錯誤規則來處理錯誤,請務必瞭解這項資訊。詳情請參閱「政策錯誤須知」和「處理錯誤」。

執行階段錯誤

執行政策時,可能會發生這些錯誤。

錯誤代碼 HTTP 狀態 原因 修正
steps.servicecallout.ExecutionFailed 500

造成這個錯誤的可能原因如下:

  • 政策必須處理格式錯誤或無效的輸入內容。
  • 後端目標服務會傳回錯誤狀態 (預設為 4xx 或 5xx)。
steps.servicecallout.RequestVariableNotMessageType 500 政策中指定的 Request 變數不是「Message」類型。例如,如果是字串或其他非訊息類型,系統就會顯示這個錯誤。
steps.servicecallout.RequestVariableNotRequestMessageType 500 政策中指定的 Request 變數不是要求訊息類型。舉例來說,如果是「回應」類型,系統就會顯示這個錯誤。

部署錯誤

若您部署包含這項政策的 Proxy,就可能會發生這些錯誤。

錯誤名稱 原因 修正
URLMissing <HTTPTargetConnection> 中的 <URL> 元素缺少或空白。
ConnectionInfoMissing 如果政策沒有 <HTTPTargetConnection><LocalTargetConnection> 元素,就會發生這個錯誤。
InvalidTimeoutValue 如果 <Timeout> 值為負或零,就會發生這個錯誤。

錯誤變數

這些變數是在執行階段錯誤發生時設定。詳情請參閱「政策錯誤的注意事項」。

Variables 地點 範例
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>

《刺客阿勒斯特》政策

本節說明這項政策觸發錯誤時傳回的錯誤代碼和錯誤訊息,以及 Edge 設定的錯誤變數。如果您正在開發錯誤規則來處理錯誤,請務必瞭解這項資訊。詳情請參閱「政策錯誤須知」和「處理錯誤」。

執行階段錯誤

執行政策時,可能會發生這些錯誤。

錯誤代碼 HTTP 狀態 原因 修正
policies.ratelimit.FailedToResolveSpikeArrestRate 500 如果參照的變數在 <Rate> 元素中包含費率設定的變數,並無法解析為「尖峰流量防範」政策中的值,就會發生這個錯誤。此為必要元素,用來以 intpmintps 的格式指定尖峰時段逮捕率。
policies.ratelimit.InvalidMessageWeight 500 如果透過流程變數為 <MessageWeight> 元素指定的值無效 (非整數值),就會發生這個錯誤。
policies.ratelimit.SpikeArrestViolation 429

超過頻率限制。

部署錯誤

若您部署包含這項政策的 Proxy,就可能會發生這些錯誤。

錯誤名稱 原因 修正
InvalidAllowedRate 如果尖峰流量防範政策的 <Rate> 元素中指定的尖峰逮捕率不是整數,或者費率沒有 pspm 做為後置字串,表示 API Proxy 部署作業會失敗。

錯誤變數

這些變數是在執行階段錯誤發生時設定。詳情請參閱「政策錯誤的注意事項」。

Variables 地點 範例
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>

StatsCollector 政策

本節說明這項政策觸發錯誤時設定的錯誤訊息和流程變數。如果您正在開發 Proxy 的錯誤規則,請務必瞭解這項資訊。詳情請參閱「政策錯誤須知」和「處理錯誤」。

執行階段錯誤

無。

部署錯誤

錯誤名稱 原因 修正
UnsupportedDatatype 如果統計資料收集器政策的 <Statistic> 元素中的 ref 屬性指定變數類型,則 API Proxy 部署作業會失敗。支援的資料類型為 stringintegerfloatlongdoubleboolean
InvalidName 如果名稱用於參照在統計資料收集器政策 <Statistic> 元素中定義的指定變數收集的資料,則與系統定義的變數發生衝突,API Proxy 部署作業就會失敗。部分已知的系統定義的變數為 organizationenvironment
DatatypeMissing 如果缺少統計資料收集器政策的 <Statistic> 元素中 ref 屬性指定的變數類型,則 API Proxy 部署作業會失敗。

錯誤變數

無。

VerifyAPIKey 政策

本節說明當這項政策觸發錯誤時,傳回的錯誤代碼和錯誤訊息,以及 Edge 設定的錯誤變數。 如果您正在開發錯誤規則來處理錯誤,請務必瞭解這項資訊。詳情請參閱「政策錯誤須知」和「處理錯誤」。

執行階段錯誤

執行政策時,可能會發生這些錯誤。

錯誤代碼 HTTP 狀態 原因
keymanagement.service.CompanyStatusNotActive 401 只要是與開發人員應用程式相關聯,且該金鑰正在使用的 API 金鑰的公司,就處於無效狀態。公司狀態設為「無效」後,您就無法存取與該公司相關聯的開發人員或應用程式。機構組織管理員可以使用 Management API 變更公司的狀態。請參閱設定公司的狀態一文。
keymanagement.service.DeveloperStatusNotActive 401

建立開發人員應用程式的開發人員應用程式,如果該開發人員使用的是您使用的 API 金鑰,則會處於無效狀態。應用程式開發人員的狀態設為無效時,由該開發人員建立的所有「開發人員應用程式」都會遭到停用。具備適當權限 (例如機構管理員) 的管理員使用者,可以透過下列幾種方式變更開發人員的狀態:

keymanagement.service.invalid_client-app_not_approved 401 與 API 金鑰相關聯的開發人員應用程式已撤銷。撤銷的應用程式無法存取任何 API 產品,也無法叫用 Apigee Edge 代管的任何 API。機構組織管理員可以使用 management API 變更開發人員應用程式的狀態。請參閱 核准或撤銷開發人員應用程式
oauth.v2.FailedToResolveAPIKey 401 這項政策預期會在政策 <APIKey> 元素指定的變數中找到 API 金鑰。 當預期的變數不存在時,就會發生這個錯誤 (無法解決)。
oauth.v2.InvalidApiKey 401 Edge 已接收到無效的 API 金鑰。Edge 在資料庫中查詢金鑰時,必須與要求中傳送的 完全相符。如果 API 之前可以運作,請確認金鑰並未重新產生。如果重新產生金鑰,如果您嘗試使用舊金鑰,就會看到這則錯誤訊息。詳情請參閱「註冊應用程式及管理 API 金鑰」。
oauth.v2.InvalidApiKeyForGivenResource 401 Edge 收到且有效的 API 金鑰,但該金鑰與您在某項產品的 API Proxy 中連結至您的 API Proxy 的開發人員應用程式中的核准金鑰不同。

部署錯誤

若您部署包含這項政策的 Proxy,就可能會發生這些錯誤。

錯誤名稱 原因
SpecifyValueOrRefApiKey <APIKey> 元素未指定值或鍵。

錯誤變數

這些變數是在執行階段錯誤發生時設定。詳情請參閱「政策錯誤的注意事項」。

Variables 地點 範例
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 政策

本節說明當這項政策觸發錯誤時,傳回的錯誤代碼和錯誤訊息,以及 Edge 設定的錯誤變數。 如果您正在開發錯誤規則來處理錯誤,請務必瞭解這項資訊。詳情請參閱「政策錯誤須知」和「處理錯誤」。

執行階段錯誤

執行政策時,可能會發生這些錯誤。

錯誤代碼 HTTP 狀態 發生時機
steps.jws.AlgorithmInTokenNotPresentInConfiguration 401 驗證政策採用多個演算法時發生
steps.jws.AlgorithmMismatch 401 產生政策在標頭中指定的演算法與驗證政策中預期的演算法不符。指定的演算法必須相符。
steps.jws.ContentIsNotDetached 401 當 JWS 不包含已卸離的內容酬載時,系統會指定 <DetachedContent>
steps.jws.FailedToDecode 401 政策無法解碼 JWS。JWS 可能已損毀。
steps.jws.InsufficientKeyLength 401 適用於小於 32 個位元組的 HS256 演算法
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 驗證政策會使用 JWKS 做為公開金鑰來源,但已簽署的 JWS 不會在標頭中加入 kid 屬性。
steps.jws.KeyParsingFailed 401 無法從指定的金鑰資訊剖析公開金鑰。
steps.jws.MissingPayload 401 缺少 JWS 酬載。
steps.jws.NoAlgorithmFoundInHeader 401 JWS 省略演算法標頭時發生。
steps.jws.NoMatchingPublicKey 401 驗證政策會使用 JWKS 做為公開金鑰來源,但已簽署 JWS 中的 kid 並未列在 JWKS 中。
steps.jws.UnhandledCriticalHeader 401 透過驗證 JWS 政策在 crit 標頭中找到的標頭未列於 KnownHeaders 中。
steps.jws.UnknownException 401 發生不明例外狀況。
steps.jws.WrongKeyType 401 指定的金鑰類型有誤。舉例來說,如果您為橢圓曲線演算法指定 RSA 金鑰,或是為 RSA 演算法指定曲線鍵,

部署錯誤

若您部署包含這項政策的 Proxy,就可能會發生這些錯誤。

錯誤名稱 發生時機
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

其他可能的部署錯誤。

錯誤變數

這些變數是在執行階段錯誤發生時設定。詳情請參閱「政策錯誤的注意事項」。

Variables 地點 範例
fault.name="fault_name" fault_name 是錯誤的名稱,如上方的「執行階段錯誤」表格所示。錯誤名稱是錯誤碼的最後一個部分。 fault.name Matches "TokenExpired"
JWS.failed 當測試失敗時,所有 JWS 政策都會設定相同的變數。 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 crit 標頭中驗證 JWT 政策找到的標頭不在 KnownHeaders 中。
steps.jwt.UnknownException 401 發生不明例外狀況。
steps.jwt.WrongKeyType 401 指定的金鑰類型有誤。舉例來說,如果您為橢圓曲線演算法指定 RSA 金鑰,或是為 RSA 演算法指定曲線鍵,

部署錯誤

若您部署包含這項政策的 Proxy,就可能會發生這些錯誤。

錯誤名稱 原因 修正
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> 元素為空白,就會發生這個錯誤。如果有,則必須以 Edge 流程變數名稱定義。
InvalidPublicKeyValue 如果 <PublicKey> 元素子項元素 <JWKS> 中使用的值未使用 RFC 7517 中指定的有效格式,部署作業就會失敗。
InvalidConfigurationForActionAndAlgorithm 如果將 <PrivateKey> 元素與 HS 系列演算法搭配使用,或是將 <SecretKey> 元素與 RSA Family 演算法搭配使用,部署作業就會失敗。

錯誤變數

這些變數是在執行階段錯誤發生時設定。詳情請參閱「政策錯誤的注意事項」。

Variables 地點 範例
fault.name="fault_name" fault_name 是錯誤的名稱,如上方的「執行階段錯誤」表格所示。錯誤名稱是錯誤碼的最後一個部分。 fault.name Matches "TokenExpired"
JWT.failed 所有 JWT 政策設定失敗時,都會設定相同的變數。 JWT.failed = true

錯誤回應範例

JWT 政策錯誤程式碼

如要處理錯誤,最佳做法是納入錯誤回應的 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 政策執行階段錯誤疑難排解」主題。
steps.xmlthreatprotection.InvalidXMLPayload 500 如果 XMLThreatProtection 政策的 <Source> 元素指定的輸入訊息酬載不是有效的 XML 文件,就會發生這個錯誤。
steps.xmlthreatprotection.SourceUnavailable 500 如果 <Source> 元素中指定的 message 變數是下列任一,就會發生這個錯誤:
  • 超出範圍 (不適用於執行政策的特定流程)
  • 不是有效的值 requestresponsemessage
steps.xmlthreatprotection.NonMessageVariable 500 如果 <Source> 元素設為不屬於 message 類型的變數,就會發生這個錯誤。

附註:

  • 錯誤名稱「ExecutionFailed」是預設的錯誤名稱,無論偵測到的錯誤類型為何,系統都會傳回這個名稱。不過,您可以設定機構層級屬性,以變更這項預設值。設定這個屬性後,錯誤名稱將反映實際錯誤。例如「TextExceeded」或「AttrValueExceeded」。詳情請參閱「使用注意事項」一節。
  • 預設狀態為 500 HTTP。不過,您可將機構層級屬性,將要求流程錯誤的 HTTP 狀態變更為 400。詳情請參閱「使用注意事項」一節。

部署錯誤

無。

錯誤變數

這些變數是在執行階段錯誤發生時設定。詳情請參閱「政策錯誤的注意事項」。

Variables 地點 範例
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 無效或格式錯誤,就會發生這個錯誤。
steps.xmltojson.InCompatibleType 500 如果 <Source> 元素中定義的變數類型與 <OutputVariable> 元素不同,就會發生這個錯誤。請務必指定 <Source> 元素中包含的變數類型,且 <OutputVariable> 元素必須相符。
steps.xmltojson.InvalidSourceType 500 如果用於定義 <Source> 元素的變數類型無效,就會發生這個錯誤。有效的變數類型為訊息和字串。
steps.xmltojson.OutputVariableIsNotAvailable 500 如果 XML 至 JSON 政策的 <Source> 元素中指定的變數為類型字串,且 <OutputVariable> 元素未定義,就會發生這個錯誤。如果 <Source> 元素中定義的變數為類型字串,則 <OutputVariable> 元素為必要元素。
steps.xmltojson.SourceUnavailable 500 如果在將 XML 至 JSON 政策的 <Source> 元素中,指定 message 變數,就會發生這個錯誤:
  • 超出範圍 (不適用於執行政策的特定流程) 或
  • 無法解析 (未定義)

部署錯誤

若您部署包含這項政策的 Proxy,就可能會發生這些錯誤。

錯誤名稱 原因 修正
EitherOptionOrFormat 如果未在 XML 中對 JSON 政策宣告 <Options><Format> 的其中一個元素,API Proxy 的部署作業就會失敗。
UnknownFormat 如果 XML 到 JSON 政策中的 <Format> 元素定義了不明格式,API Proxy 部署就會失敗。預先定義的格式包括:xml.comyahoogooglebadgerFish

錯誤變數

這些變數是在執行階段錯誤發生時設定。詳情請參閱「政策錯誤的注意事項」。

Variables 地點 範例
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 政策

執行階段錯誤

執行政策時,可能會發生這些錯誤。

錯誤代碼 HTTP 狀態 原因 修正
steps.xsl.XSLSourceMessageNotAvailable 500 如果 XSL 轉換政策的 <Source> 元素中指定的訊息或字串變數超出範圍 (不適用於執行政策的特定流程),或是無法解析 (未定義),就會發生這個錯誤。
steps.xsl.XSLEvaluationFailed 500 如果輸入的 XML 酬載無法使用/格式錯誤,或是 XSLTransform 政策失敗/無法依據 XSL 檔案中提供的轉換規則轉換輸入 XML 檔案,就會發生這個錯誤。導致 XSLTransform 政策失敗的原因有很多。錯誤訊息失敗的原因會提供原因詳細資訊。

部署錯誤

若您部署包含這項政策的 Proxy,就可能會發生這些錯誤。

錯誤名稱 原因 修正
XSLEmptyResourceUrl 如果 XSL 轉換政策中的 <ResourceURL> 元素為空白,則 API Proxy 的部署作業會失敗。
XSLInvalidResourceType 如果 XSL 轉換政策的 <ResourceURL> 元素中指定的資源類型不屬於 xsl 類型,API Proxy 的部署就會失敗。