ポリシーエラー リファレンス

Access Control ポリシー

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

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause Fix
accesscontrol.IPDeniedAccess 403 The client IP address, or an IP address passed in the API request, matches an IP address specified in the <SourceAddress> element within the <MatchRule> element of the Access Control Policy, and the action attribute of the <MatchRule> element is set to DENY.

Fault variables

These variables are set when a runtime error occurs. For more information, see Variables specific to policy errors.

Variables Where Example
fault.name="fault_name" fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "IPDeniedAccess"
acl.policy_name.failed policy_name is the user-specified name of the policy that threw the fault. acl.AC-AllowAccess.failed = true

Example fault response

{
   "fault":{
     "faultstring":"Access Denied for client ip : 52.211.243.3"
      "detail":{
         "errorcode":"accesscontrol.IPDeniedAccess"
      }
   }
}

Example fault rule

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

Access Entity ポリシー

関連情報については、ポリシーエラーについて知っておくべきことと障害の処理をご覧ください。

ランタイム エラー

なし。

デプロイエラー

エラー名 障害文字列 HTTP ステータス 発生条件
InvalidEntityType Invalid type [entity_type] in ACCESSENTITYStepDefinition [policy_name] なし 使用するエンティティ タイプをサポートされているタイプのいずれかにする必要があります。

Assign Message ポリシー

このセクションでは、このポリシーによってエラーがトリガーされたときに返される障害コードとエラー メッセージ、Edge によって設定される障害変数について説明します。 これは、障害に対処する障害ルールを作成するうえで重要な情報です。詳細については、ポリシーエラーについて知っておくべきことと障害の処理をご覧ください。

ランタイム エラー

このエラーは、ポリシーの実行時に発生することがあります。

障害コード HTTP ステータス 原因 修正
steps.assignmessage.SetVariableFailed 500 ポリシーで変数を設定できませんでした。未解決の変数の名前については、障害文字列をご覧ください。
steps.assignmessage.VariableOfNonMsgType 500

このエラーは、<Copy> 要素の source 属性が、メッセージ型以外の変数に設定されている場合に発生します。

Message 型の変数は、HTTP リクエストとレスポンス全体を表します。組み込みの Edge フロー変数 request、response、message はメッセージ型です。メッセージ変数の詳細については、変数リファレンスをご覧ください。

steps.assignmessage.UnresolvedVariable 500

このエラーは、Assign Message ポリシーで指定された変数が次のいずれかの場合に発生します。

  • 範囲外(ポリシーが実行されている特定のフローで使用できない)
  • または
  • 解決できない(定義されていない)

デプロイエラー

以下のエラーは、このポリシーを含むプロキシをデプロイするときに発生することがあります。

エラー名 原因 修正
InvalidIndex Assign Message ポリシーの <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>

Basic Authentication ポリシー

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

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause Fix
steps.basicauthentication.InvalidBasicAuthenticationSource 500 On a decode when the incoming Base64 encoded string does not contain a valid value or the header is malformed (e.g., does not start with "Basic").
steps.basicauthentication.UnresolvedVariable 500 The required source variables for the decode or encode are not present. This error can only occur if IgnoreUnresolvedVariables is false.

Deployment errors

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

Error name Occurs when Fix
UserNameRequired The <User> element must be present for the named operation.
PasswordRequired The <Password> element must be present for the named operation.
AssignToRequired The <AssignTo> element must be present for the named operation.
SourceRequired The <Source> element must be present for the named operation.

Fault variables

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

Variables Where Example
fault.name="fault_name" fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "UnresolvedVariable"
BasicAuthentication.policy_name.failed policy_name is the user-specified name of the policy that threw the fault. BasicAuthentication.BA-Authenticate.failed = true

Example error response

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

Example fault rule

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

Concurrent Rate Limit ポリシー

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

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Occurs when
policies.concurrentratelimit.ConcurrentRatelimtViolation 503

ConcurrentRatelimit connection exceeded. Connection limit : {0}

Note: The Fault code shown on the left is correct, although it contains a misspelling ("limt"). Be sure to use the code exactly as shown here when creating fault rules to trap this error.

Deployment errors

Error name Occurs when
InvalidCountValue ConcurrentRatelimit invalid count value specified.
ConcurrentRatelimitStepAttachment\
NotAllowedAtProxyEndpoint
Concurrent Ratelimit policy {0} attachment is not allowed at proxy request/response/fault paths. This policy must be placed on the Target Endpoint.
ConcurrentRatelimitStepAttachment\
MissingAtTargetEndpoint
Concurrent Ratelimit policy {0} attachment is missing at target request/response/fault paths. This policy must be placed in the Target Request Preflow, Target Response Postflow, and DefaultFaultRule.
InvalidTTLForMessageTimeOut ConcurrentRatelimit invalid ttl value specified for message timeout. It must be a positive integer.

Fault variables

These variables are set when this policy triggers an error. For more information, see What you need to know about policy errors.

Variables Where Example
fault.name="fault_name" fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "ConcurrentRatelimtViolation"

Note: The Error code shown in the example is correct, although it contains a misspelling ("limt"). Please be sure to use the code exactly as shown here when creating fault rules to trap this error.

concurrentratelimit.policy_name.failed policy_name is the user-specified name of the policy that threw the fault. concurrentratelimit.CRL-RateLimitPolicy.failed = true

Example error response

If the rate limit is exceeded, the policy returns only an HTTP status 503 to the client.

Example fault rule

<faultrule name="VariableOfNonMsgType"></faultrule><FaultRules>
    <FaultRule name="Quota Errors">
        <Step>
            <Name>JavaScript-1</Name>
            <Condition>(fault.name Matches "ConcurrentRatelimtViolation") </Condition>
        </Step>
        <Condition>concurrentratelimit.CRL-RateLimitPolicy.failed=true</Condition>
    </FaultRule>
</FaultRules>

Decode JWS ポリシー

このセクションでは、このポリシーによってエラーがトリガーされたときに返される障害コードとエラー メッセージ、Edge によって設定される障害変数について説明します。これは、障害に対処する障害ルールを作成するうえで重要な情報です。詳細については、ポリシーエラーについて知っておくべきことと障害の処理をご覧ください。

ランタイム エラー

このエラーは、ポリシーの実行時に発生することがあります。

障害コード HTTP ステータス 発生条件
steps.jws.FailedToDecode 401 ポリシーで JWS をデコードできなかった場合。JWS が破損している可能性があります。
steps.jws.FailedToResolveVariable 401 ポリシーの <Source> 要素で指定されたフロー変数が存在しない場合に発生します。
steps.jws.InvalidClaim 401 クレームが欠落しているか、一致していない場合。または、ヘッダーが欠落しているか、一致していない場合。
steps.jws.InvalidJsonFormat 401 無効な JSON が JWS ヘッダーで検出された場合。
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 不明な例外が発生した場合。

デプロイエラー

以下のエラーは、このポリシーを含むプロキシをデプロイするときに発生することがあります。

エラー名 エラーが発生する条件
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>

Decode JWT ポリシー

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

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause Fix
steps.jwt.FailedToDecode 401 Occurs when the policy is unable to decode the JWT. The JWT may be malformed, invalid or otherwise not decodable.
steps.jwt.FailedToResolveVariable 401 Occurs when the flow variable specified in the <Source> element of the policy does not exist.
steps.jwt.InvalidToken 401 Occurs when the flow variable specified in the <Source> element of the policy is out of scope or can't be resolved.

Deployment errors

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

Error name Cause Fix
InvalidEmptyElement Occurs when the flow variable containing the JWT to be decoded is not specified in the <Source> element of the policy.

障害変数

ランタイム エラーが発生すると、次の変数が設定されます。詳細については、ポリシーエラーについて知っておくべきことをご覧ください。

変数 説明 例
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>
    

Extract Variables ポリシー

このセクションでは、このポリシーによってエラーがトリガーされたときに返される障害コードとエラー メッセージ、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 このエラーは、ポリシーが抽出された値を変数にキャストできなかった場合に発生します。これは通常、あるデータ型の値を別のデータ型の変数に設定しようとすると発生します。

デプロイエラー

以下のエラーは、このポリシーを含むプロキシをデプロイするときに発生することがあります。

エラー名 原因 修正
NothingToExtract ポリシーに URIPath、QueryParam、Header、FormParam、XMLPayload、JSONPayload のいずれの要素も含まれていない場合、抽出するものがないため、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 ポリシーの QueryParam、Header、FormParam、Variable などのポリシー要素のいずれかに、必要な name 属性が含まれていない場合、API プロキシのデプロイは失敗します。
PatternWithoutVariable ポリシーの Pattern 要素内に変数が指定されていない場合、API プロキシのデプロイが失敗します。Pattern 要素には、抽出されたデータを格納するための変数の名前が必要です。
CannotBeConvertedToNodeset ポリシーに、Variable の型が nodeset として定義されている XPath 式があるが、式を nodeset に変換できない場合、API プロキシのデプロイは失敗します。
JSONPathCompilationFailed ポリシーは指定された JSON パスをコンパイルできませんでした。
InstantiationFailed ポリシーをインスタンス化できませんでした。
XPathCompilationFailed XPath 要素で使用される接頭辞や値がポリシー内の宣言された名前空間の一部でない場合、API プロキシのデプロイは失敗します。
InvalidPattern Pattern 要素の定義が、ポリシー内の URIPath、QueryParam、Header、FormParam、XMLPayload、JSONPayload などの要素のいずれかで無効である場合、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>

Generate JWS ポリシー

このセクションでは、このポリシーによってエラーがトリガーされたときに返される障害コードとエラー メッセージ、Edge によって設定される障害変数について説明します。これは、障害に対処する障害ルールを作成するうえで重要な情報です。詳細については、ポリシーエラーについて知っておくべきことと障害の処理をご覧ください。

ランタイム エラー

このエラーは、ポリシーの実行時に発生することがあります。

障害コード HTTP ステータス 発生条件
steps.jws.GenerationFailed 401 ポリシーで JWS を生成できない場合。
steps.jws.InsufficientKeyLength 401 HS256 アルゴリズム用の鍵が 32 バイト未満の場合。
steps.jws.InvalidClaim 401 クレームが欠落しているか、一致していない場合。または、ヘッダーが欠落しているか、一致していない場合。
steps.jws.InvalidCurve 401 鍵で指定された曲線が、楕円曲線アルゴリズムでは無効な場合。
steps.jws.InvalidJsonFormat 401 無効な JSON が 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.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>

Generate JWT ポリシー

このセクションでは、このポリシーによってエラーがトリガーされたときに返される障害コードとエラー メッセージ、Edge によって設定される障害変数について説明します。これは、障害に対処する障害ルールを作成するうえで重要な情報です。詳細については、ポリシーエラーについて知っておくべきことと障害の処理をご覧ください。

ランタイム エラー

このエラーは、ポリシーの実行時に発生することがあります。

障害コード 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.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 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 crit ヘッダーの Verify JWT ポリシーで見つかったヘッダーが KnownHeaders にリストされていない場合。
steps.jwt.UnknownException 401 不明な例外が発生した場合。
steps.jwt.WrongKeyType 401 鍵のタイプが正しくない場合。たとえば、楕円曲線アルゴリズムで RSA 鍵を指定した場合や、RSA アルゴリズムで曲線鍵を指定した場合など。

デプロイエラー

以下のエラーは、このポリシーを含むプロキシをデプロイするときに発生することがあります。

エラー名 原因 修正
InvalidNameForAdditionalClaim <AdditionalClaims> 要素の子要素 <Claim> で使用されているクレームの型が登録済みの名前(kid、iss、sub、aud、iat、exp、nbf、jti)のいずれかである場合、デプロイが失敗します。
InvalidTypeForAdditionalClaim <AdditionalClaims> 要素の子要素 <Claim> で使用されているクレームが string、number、boolean、map 型でない場合、デプロイが失敗します。
MissingNameForAdditionalClaim <AdditionalClaims> 要素の子要素 <Claim> でクレームの名前が指定されていない場合、デプロイが失敗します。
InvalidNameForAdditionalHeader このエラーは、<AdditionalClaims> 要素の子要素 <Claim> で使用されているクレームの名前が alg または typ の場合に発生します。
InvalidTypeForAdditionalHeader <AdditionalClaims> 要素の子要素 <Claim> で使用されているクレームの型が string、number、boolean、map 型でない場合、デプロイが失敗します。
InvalidValueOfArrayAttribute このエラーは、<AdditionalClaims> 要素の子要素 <Claim> 内の配列属性の値が true または false に設定されていない場合に発生します。
InvalidConfigurationForActionAndAlgorithm <PrivateKey> 要素が HS ファミリー アルゴリズムで使用されている場合、または <SecretKey> 要素が RSA ファミリー アルゴリズムで使用されている場合、デプロイが失敗します。
InvalidValueForElement <Algorithm> 要素に指定された値がサポートされていない場合、デプロイが失敗します。
MissingConfigurationElement このエラーは、<PrivateKey> 要素が RSA ファミリー アルゴリズムで使用されていない場合や、<SecretKey> 要素が HS ファミリー アルゴリズムで使用されていない場合に発生します。
InvalidKeyConfiguration 子要素 <Value> が <PrivateKey> 要素または <SecretKey> 要素で定義されていない場合、デプロイが失敗します。
EmptyElementForKeyConfiguration <PrivateKey> 要素または <SecretKey> 要素の子要素 <Value> の ref 属性が空か、指定されていない場合、デプロイが失敗します。
InvalidVariableNameForSecret このエラーは、<PrivateKey> 要素や <SecretKey> 要素の子要素 <Value> の ref 属性で指定されたフロー変数名に、非公開の接頭辞 (private.) が含まれていない場合に発生します。
InvalidSecretInConfig このエラーは、<PrivateKey> 要素または <SecretKey> 要素の子要素 <Value> に非公開の接頭辞 (private.) が含まれていない場合に発生します。
InvalidTimeFormat <NotBefore> 要素に指定された値がサポートされている形式でない場合、デプロイは失敗します。

障害変数

ランタイム エラーが発生すると、次の変数が設定されます。詳細については、ポリシーエラーについて知っておくべきことをご覧ください。

変数 説明 例
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 Callout ポリシー

このセクションでは、このポリシーによってエラーがトリガーされたときに返される障害コードとエラー メッセージ、Edge によって設定される障害変数について説明します。 これは、障害に対処する障害ルールを作成するうえで重要な情報です。詳細については、ポリシーエラーについて知っておくべきことと障害の処理をご覧ください。

ランタイム エラー

このエラーは、ポリシーの実行時に発生することがあります。

障害コード HTTP ステータス 原因 修正
steps.javacallout.ExecutionError 500 JavaCallout ポリシーの実行中に Java コードが例外を出力する、または 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] 該当なし 障害文字列をご覧ください。サポートされている ソフトウェアとサポート対象バージョン。
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 ポリシー

このセクションでは、障害コードとエラー メッセージ、障害変数について説明します。 このポリシーでエラーがトリガーされたときに Edge によって設定されます。これは、障害に対処する障害ルールを作成するうえで重要な情報です。詳細については、ポリシーエラーについて知っておくべきことと障害の処理をご覧ください。

ランタイム エラー

このエラーは、ポリシーの実行時に発生することがあります。

障害コード HTTP ステータス 原因 修正
steps.javascript.ScriptExecutionFailed 500 JavaScript ポリシーは、さまざまな種類の ScriptExecutionFailed エラーをスローできます。よくあるエラーには、次のようなものがあります。RangeError、ReferenceError、SyntaxError、TypeError、URIError。
steps.javascript.ScriptExecutionFailedLineNumber 500 JavaScript コードでエラーが発生しました。詳しくは、障害文字列をご覧ください。 なし
steps.javascript.ScriptSecurityError 500 JavaScript の実行時にセキュリティ エラーが発生しました。詳しくは、障害文字列をご覧ください。 なし

デプロイエラー

以下のエラーは、このポリシーを含むプロキシをデプロイするときに発生することがあります。

エラー名 原因 修正
InvalidResourceUrlFormat JavaScript ポリシーの <ResourceURL> または <IncludeURL> 要素で指定されたリソース URL の形式が無効な場合、API プロキシのデプロイが失敗します。
InvalidResourceUrlReference <ResourceURL> または <IncludeURL> 要素が存在しない JavaScript ファイルを参照すると、API プロキシのデプロイは失敗します。参照されるソースファイルは、API プロキシ、環境、または組織レベルのいずれかに存在している必要があります。
WrongResourceType このエラーは、デプロイ中に JavaScript ポリシーの <ResourceURL> 要素または <IncludeURL> 要素が jsc(JavaScript ファイル)以外のリソースタイプを参照している場合に発生します。
NoResourceURLOrSource <ResourceURL> 要素を宣言していない場合、またはこの要素内にリソース URL が定義されていない場合、JavaScript ポリシーのデプロイがこのエラーで失敗する可能性があります。<ResourceURL> 要素は必須の要素です。または、<IncludeURL> 要素を宣言します。ただし、この要素内でリソース URL が定義されていません。<IncludeURL> 要素はオプションですが、宣言された場合、リソース URL を <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>

JSON Threat Protection ポリシー

このセクションでは、このポリシーによってエラーがトリガーされたときに返される障害コードとエラー メッセージ、Edge によって設定される障害変数について説明します。 これは、障害に対処する障害ルールを作成するうえで重要な情報です。詳細については、ポリシーエラーについて知っておくべきことと障害の処理をご覧ください。

ランタイム エラー

このエラーは、ポリシーの実行時に発生することがあります。

障害コード HTTP ステータス 原因 修正
steps.jsonthreatprotection.ExecutionFailed 500 JSONThreatProtection ポリシーでは、さまざまな種類の ExecutionFailed エラーをスローできます。エラーのほとんどは、ポリシーで設定された特定のしきい値を超えた場合に発生します。これらのタイプのエラーには、オブジェクト エントリ名の長さ、オブジェクト エントリ数、配列要素数、コンテナの深さ、文字列値の長さなどがあります。このエラーは、ペイロードに無効な JSON オブジェクトが含まれている場合にも発生します。
steps.jsonthreatprotection.SourceUnavailable 500 このエラーは、<Source> 要素で指定された メッセージ変数が次のいずれかである場合に発生します。
  • 範囲外(ポリシーが実行されている特定のフローで使用できない)
  • 有効な値 request、response、message のいずれでもない
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 ポリシータイプでは、次のエラーコードを定義します。

JSON to XML ポリシー

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

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause Fix
steps.jsontoxml.ExecutionFailed 500 The input payload (JSON) is empty or the input (JSON) passed to JSON to XML policy is invalid or malformed.
steps.jsontoxml.InCompatibleTypes 500 This error occurs if the type of the variable defined in the <Source> element and the <OutputVariable> element are not the same. It is mandatory that the type of the variables contained within the <Source> element and the <OutputVariable> element matches. The valid types are message and string.
steps.jsontoxml.InvalidSourceType 500 This error occurs if the type of the variable used to define the <Source> element is invalid. The valid types of variable are message and string.
steps.jsontoxml.OutputVariableIsNotAvailable 500 This error occurs if the variable specified in the <Source> element of the JSON to XML Policy is of type string and the <OutputVariable> element is not defined. The <OutputVariable> element is mandatory when the variable defined in the <Source> element is of type string.
steps.jsontoxml.SourceUnavailable 500 This error occurs if the message variable specified in the <Source> element of the JSON to XML 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

None.

Fault variables

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

Variables Where Example
fault.name="fault_name" fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "SourceUnavailable"
jsontoxml.policy_name.failed policy_name is the user-specified name of the policy that threw the fault. jsontoxml.JSON-to-XML-1.failed = true

Example error response

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

Example fault rule

<FaultRule name="JSON To XML Faults">
    <Step>
        <Name>AM-SourceUnavailableMessage</Name>
        <Condition>(fault.name Matches "SourceUnavailable") </Condition>
    </Step>
    <Step>
        <Name>AM-BadJSON</Name>
        <Condition>(fault.name = "ExecutionFailed")</Condition>
    </Step>
    <Condition>(jsontoxml.JSON-to-XML-1.failed = true) </Condition>
</FaultRule>

Key Value Map Operations ポリシー

このセクションでは、このポリシーによってエラーがトリガーされたときに返される障害コードとエラー メッセージ、Edge によって設定される障害変数について説明します。これは、障害に対処する障害ルールを作成するうえで重要な情報です。詳細については、ポリシーエラーについて知っておくべきことと障害の処理をご覧ください。

ランタイム エラー

このエラーは、ポリシーの実行時に発生することがあります。

障害コード HTTP ステータス 原因 解決方法
steps.keyvaluemapoperations.SetVariableFailed 500

このエラーは、暗号化された Key-Value マップから値を取得し、名前に接頭辞 private がない変数に値を設定しようとすると発生します。デバッグ時の基本的なセキュリティのために必須なこの接頭辞により、API プロキシ Trace およびデバッグ セッションで、暗号化された値は表示されません。

steps.keyvaluemapoperations.UnsupportedOperationException 500

このエラーは、mapIdentifier 属性が Key Value Map Operations ポリシーで空の文字列に設定されている場合に発生します。

デプロイエラー

以下のエラーは、このポリシーを含むプロキシをデプロイするときに発生することがあります。

エラー名 原因 解決方法
InvalidIndex Key Value Map Operations ポリシーの <Get> 要素に指定された index 属性がゼロまたは負の数である場合、API プロキシのデプロイは失敗します。インデックスは 1 から始まるため、ゼロまたは負の整数のインデックスは無効と見なされます。
KeyIsMissing このエラーは、<Key> 要素が完全に欠落しているか、Key Value Map Operations ポリシーの <InitialEntries> 要素の <Entry> の下の <Key> 要素に <Parameter> 要素がない場合に発生します。
ValueIsMissing このエラーは、Key Value Map Operations ポリシーの <InitialEntries> 要素の <Entry> 要素の下に <Value> 要素がない場合に発生します。

LDAP ポリシー

This policy uses the following error codes:

Error Code Message
InvalidAttributeName Invalid attribute name {0}.
InvalidSearchBase Search base can not be empty.
InvalidValueForPassword Invalid value for password field. It can not be empty.
InvalidSearchScope Invalid scope {0}. Allowed scopes are {1}.
InvalidUserCredentials Invalid user credentials.
InvalidExternalLdapReference Invalid external ldap reference {0}.
LdapResourceNotFound Ldap resource {0} not found.
BaseDNRequired Base DN required.
OnlyReferenceOrValueIsAllowed Only value or reference is allowed for {0}.
AttributesRequired At least one attribute required for search action.
UserNameIsNull User name is null.
SearchQueryAndUserNameCannotBePresent Both search query and username can not be present in the authentication action. Please specify either one of them.

Message Logging ポリシー

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

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause
steps.messagelogging.StepDefinitionExecutionFailed 500 See fault string.

Deployment errors

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

Error name Cause Fix
InvalidProtocol The deployment of the MessageLogging policy can fail with this error if the protocol specified within the <Protocol> element is not valid. The valid protocols are TCP and UDP. For sending syslog messages over TLS/SSL, only TCP is supported.
InvalidPort The deployment of the MessageLogging policy can fail with this error if the port number is not specified within the <Port> element or if it is not valid. The port number must be an integer greater than zero.

Fault variables

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

Variables Where Example
fault.name="fault_name" fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "StepDefinitionExecutionFailed"
messagelogging.policy_name.failed policy_name is the user-specified name of the policy that threw the fault. messagelogging.ML-LogMessages.failed = true

Example error response

{  
   "fault":{  
      "detail":{  
         "errorcode":"steps.messagelogging.StepDefinitionExecutionFailed"
      },
      "faultstring":"Execution failed"
   }
}

Example fault rule

<FaultRule name="MessageLogging">
    <Step>
        <Name>ML-LogMessages</Name>
        <Condition>(fault.name Matches "StepDefinitionExecutionFailed") </Condition>
    </Step>
    <Condition>(messagelogging.ML-LogMessages.failed = true) </Condition>
</FaultRule>

OASValidation ポリシー

このセクションでは、このポリシーによってエラーがトリガーされたときに返される障害コードとエラー メッセージ、Edge によって設定される障害変数について説明します。これは、障害に対処する障害ルールを作成するうえで重要な情報です。詳細については、ポリシーエラーについて知っておくべきことと障害の処理をご覧ください。

ランタイム エラー

このエラーは、ポリシーの実行時に発生することがあります。

障害コード HTTP ステータス 原因
steps.oasvalidation.Failed 500 リクエスト メッセージの本文が、指定された OpenAPI 仕様に対して検証できない。
steps.oasvalidation.SourceMessageNotAvailable 500

ポリシーの <Source> 要素で指定された変数が範囲外であるか、解決できない。

steps.oasvalidation.NotMessageVariable 500

<Source> 要素が、message 型以外の変数に設定されています。

デプロイエラー

以下のエラーは、このポリシーを含むプロキシをデプロイするときに発生することがあります。

エラー名 原因
ResourceDoesNotExist <OASResource> 要素で参照されている OpenAPI 仕様が存在しません。
ResourceCompileFailed デプロイに含まれている OpenAPI 仕様に、コンパイルを妨げるエラーが存在します。これは通常、仕様が正しい形式の OpenAPI 仕様 3.0 ではないことを示しています。
BadResourceURL <OASResource> 要素で参照されている OpenAPI 仕様が処理できません。これは、ファイルが JSON または YAML ファイルでない場合、またはファイルの URL が正しく指定されていない場合に発生することがあります。

障害変数

次の変数は、このポリシーでランタイム エラーが発生したときに設定されます。詳細については、ポリシーエラーについて知っておくべきことをご覧ください。

変数 説明 例
fault.name="fault_name" fault_name は、上記のランタイム エラーの表に記載されている障害の名前です。障害名は、障害コードの最後の部分です。 fault.name Matches "ResourceDoesNotExist"
oasvalidation.policy_name.failed policy_name は、障害をスローしたポリシーのユーザー指定の名前です。 oasvalidation.myoaspolicy.failed = true

Populate Cache ポリシー

このセクションでは、このポリシーによってエラーがトリガーされたときに返される障害コードとエラー メッセージ、Edge によって設定される障害変数について説明します。 これは、障害に対処する障害ルールを作成するうえで重要な情報です。詳細については、ポリシーエラーについて知っておくべきことと障害の処理をご覧ください。

ランタイム エラー

このエラーは、ポリシーの実行時に発生することがあります。

障害コード HTTP ステータス 発生時期
policies.populatecache.EntryCannotBeCached 500 エントリをキャッシュできない場合。キャッシュされるメッセージ オブジェクトが、シリアル化可能なクラスのインスタンスではない場合。

デプロイエラー

以下のエラーは、このポリシーを含むプロキシをデプロイするときに発生することがあります。

エラー名 原因 修正
InvalidCacheResourceReference このエラーは、API プロキシがデプロイされている環境に存在しない名前に PopulateCache ポリシーの <CacheResource> 要素が設定されている場合に発生します。
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>

Lookup Cache ポリシー

このセクションでは、このポリシーがエラーをトリガーしたときに設定されるエラー メッセージとフロー変数について説明します。これは、プロキシの障害ルールを作成するうえで重要な情報です。詳細については、ポリシーエラーについて知っておくべきことと障害の処理をご覧ください。

エラーコードの接頭辞

なし

ランタイム エラー

このポリシーはランタイム エラーをスローしません。

デプロイエラー

以下のエラーは、このポリシーを含むプロキシをデプロイするときに発生することがあります。

エラー名 原因 解決方法
InvalidCacheResourceReference このエラーは、API プロキシがデプロイされている環境に存在しない名前が <CacheResource> 要素に設定されている場合に発生します。
InvalidTimeout <CacheLookupTimeoutInSeconds> 要素が負の数に設定されている場合、API プロキシのデプロイは失敗します。
CacheNotFound このエラーは、エラー メッセージに記述されているキャッシュが、特定の Message Processor コンポーネント上に作成されていない場合に発生します。

障害変数

なし

エラー レスポンスの例

なし

Invalidate Cache ポリシー

このセクションでは、このポリシーがエラーをトリガーしたときに設定されるエラー メッセージとフロー変数について説明します。これは、プロキシの障害ルールを作成するうえで重要な情報です。詳細については、ポリシーエラーについて知っておくべきことと障害の処理をご覧ください。

エラーコードの接頭辞

なし

ランタイム エラー

このポリシーはランタイム エラーをスローしません。

デプロイエラー

以下のエラーは、このポリシーを含むプロキシをデプロイするときに発生することがあります。

エラー名 原因 修正
InvalidCacheResourceReference このエラーは、API プロキシがデプロイされている環境に存在しない名前が InvalidateCache ポリシーの <CacheResource> 要素に設定されている場合に発生します。
CacheNotFound このエラーは、エラー メッセージに記述されているキャッシュが、特定の Message Processor コンポーネント上に作成されていない場合に発生します。

障害変数

なし

エラー レスポンスの例

なし

Response Cache ポリシー

このセクションでは、このポリシーがエラーをトリガーしたときに設定されるエラー メッセージとフロー変数について説明します。これは、プロキシの障害ルールを作成するうえで重要な情報です。詳細については、ポリシーエラーについて知っておくべきことと障害の処理をご覧ください。

エラーコードの接頭辞

なし

ランタイム エラー

このポリシーはランタイム エラーをスローしません。

デプロイエラー

以下のエラーは、このポリシーを含むプロキシをデプロイするときに発生することがあります。

エラー名 原因 解決方法
InvalidTimeout ResponseCache ポリシーの <CacheLookupTimeoutInSeconds> 要素が負の数に設定されている場合、API プロキシのデプロイは失敗します。
InvalidCacheResourceReference このエラーは、ResponseCache ポリシーの <CacheResource> 要素が、API プロキシのデプロイ先の環境には存在しない名前に設定される場合に発生します。
ResponseCacheStepAttachmentNotAllowedReq このエラーは、同じ ResponseCache ポリシーが API プロキシの任意のフロー内の複数のリクエスト パスに接続されている場合に発生します。
ResponseCacheStepAttachmentNotAllowedResp このエラーは、同じ ResponseCache ポリシーが API プロキシの任意のフロー内の複数のレスポンス パスに接続されている場合に発生します。
InvalidMessagePatternForErrorCode このエラーは、ResponseCache ポリシーの <SkipCacheLookup> 要素または <SkipCachePopulation> 要素に無効な条件が含まれている場合に発生します。
CacheNotFound このエラーは、エラー メッセージに記述されているキャッシュが、特定の Message Processor コンポーネント上に作成されていない場合に発生します。

障害変数

なし

エラー レスポンスの例

なし

OAuthV2 ポリシー

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

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause Thrown by operations
steps.oauth.v2.access_token_expired 401 The access token is expired.

VerifyAccessToken
InvalidateToken

steps.oauth.v2.access_token_not_approved 401 The access token was revoked. VerifyAccessToken
steps.oauth.v2.apiresource_doesnot_exist 401 The requested resource does not exist any of the API products associated with the access token. VerifyAccessToken
steps.oauth.v2.FailedToResolveAccessToken 500 The policy expected to find an access token in a variable specified in the <AccessToken> element, but the variable could not be resolved. GenerateAccessToken
steps.oauth.v2.FailedToResolveAuthorizationCode 500 The policy expected to find an authorization code in a variable specified in the <Code> element, but the variable could not be resolved. GenerateAuthorizationCode
steps.oauth.v2.FailedToResolveClientId 500 The policy expected to find the Client ID in a variable specified in the <ClientId> element, but the variable could not be resolved. GenerateAccessToken
GenerateAuthorizationCode
GenerateAccessTokenImplicitGrant
RefreshAccessToken
steps.oauth.v2.FailedToResolveRefreshToken 500 The policy expected to find a refresh token in a variable specified in the <RefreshToken> element, but the variable could not be resolved. RefreshAccessToken
steps.oauth.v2.FailedToResolveToken 500 The policy expected to find a token in a variable specified in the <Tokens> element, but the variable could not be resolved.

ValidateToken
InvalidateToken

steps.oauth.v2.InsufficientScope 403 The access token presented in the request has a scope that does not match the scope specified in the verify access token policy. To learn about scope, see Working with OAuth2 scopes. VerifyAccessToken
steps.oauth.v2.invalid_access_token 401 The access token sent from the client is invalid. VerifyAccessToken
steps.oauth.v2.invalid_client 401

This error name is returned when the <GenerateResponse> property of the policy is set to true and the client ID sent in the request is invalid. Check to be sure you are using the correct client key and secret values for the Developer App associated with your proxy. Typically, these values are sent as a Base64 encoded Basic Authorization header.

Note: It is recommended that you change existing fault rule conditions to catch both the invalid_client and InvalidClientIdentifier names. See the 16.09.21 Release Notes for more information and an example.

GenerateAccessToken
RefreshAccessToken
steps.oauth.v2.InvalidRequest 400 This error name is used for multiple different kinds of errors, typically for missing or incorrect parameters sent in the request. If <GenerateResponse> is set to false, use fault variables (described below) to retrieve details about the error, such as the fault name and cause. GenerateAccessToken
GenerateAuthorizationCode
GenerateAccessTokenImplicitGrant
RefreshAccessToken
steps.oauth.v2.InvalidAccessToken 401 The authorization header does not have the word "Bearer", which is required. For example: Authorization: Bearer your_access_token VerifyAccessToken
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound 401

The API proxy is not in the Product associated with the access token.

Tips: Be sure that the product associated with the access token is configured correctly. For example, if you use wildcards in resource paths, be sure the wildcards are being used correctly. See Create API products for details.

See also this Apigee Community post for more guidance on causes for this error.

VerifyAccessToken
steps.oauth.v2.InvalidClientIdentifier 500

This error name is returned when the <GenerateResponse> property of the policy is set to false and the client ID sent in the request is invalid. Check to be sure you are using the correct client key and secret values for the Developer App associated with your proxy. Typically, these values are sent as a Base64 encoded Basic Authorization header.

Note: In this situation, this error used to be called invalid_client. It is recommended that you change existing fault rule conditions to catch both the invalid_client and InvalidClientIdentifier names. See the 16.09.21 Release Notes for more information and an example.

GenerateAccessToken
RefreshAccessToken

steps.oauth.v2.InvalidParameter 500 The policy must specify either an access token or an authorization code, but not both. GenerateAuthorizationCode
GenerateAccessTokenImplicitGrant
steps.oauth.v2.InvalidTokenType 500 The <Tokens>/<Token> element requires you to specify the token type (for example, refreshtoken). If the client passes the wrong type, this error is thrown. ValidateToken
InvalidateToken
steps.oauth.v2.MissingParameter 500 The response type is token, but no grant types are specified. GenerateAuthorizationCode
GenerateAccessTokenImplicitGrant
steps.oauth.v2.UnSupportedGrantType 500

The client specified a grant type that is unsupported by the policy (not listed in the <SupportedGrantTypes> element).

Note: There is currently a bug where unsupported grant type errors are not thrown correctly. If an unsupported grant type error occurs, the proxy does not enter the Error Flow, as expected.

GenerateAccessToken
GenerateAuthorizationCode
GenerateAccessTokenImplicitGrant
RefreshAccessToken

Deployment errors

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

Error name Cause
InvalidValueForExpiresIn

For the <ExpiresIn> element, valid values are positive integers and -1.

InvalidValueForRefreshTokenExpiresIn For the <RefreshTokenExpiresIn> element, valid values are positive integers and -1.
InvalidGrantType An invalid grant type is specified in the <SupportedGrantTypes> element. See the policy reference for a list of valid types.
ExpiresInNotApplicableForOperation Be sure that the operations specified in the <Operations> element support expiration. For example, the VerifyToken operation does not.
RefreshTokenExpiresInNotApplicableForOperation Be sure that the operations specified in the <Operations> element support refresh token expiration. For example, the VerifyToken operation does not.
GrantTypesNotApplicableForOperation Be sure that the grant types specified in <SupportedGrantTypes> are supported for the specified operation.
OperationRequired

You must specify an operation in this policy using the <Operation> element.

Note: If the <Operation> element is missing, the UI throws a schema validation error.

InvalidOperation

You must specify a valid operation in this policy using the <Operation> element.

Note: If the <Operation> element is invalid, the UI throws a schema validation error.

TokenValueRequired You must specify a token <Token> value in the <Tokens> element.

Fault variables

These variables are set when this policy triggers an error at runtime.

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

Note: For the VerifyAccessToken operation, the fault name includes this suffix: keymanagement.service
For example: keymanagement.service.invalid_access_token

oauthV2.policy_name.fault.cause policy_name is the user-specified name of the policy that threw the fault. oauthV2.GenerateAccesstoken.cause = Required param : grant_type

Example error response

These responses are sent back to the client if the <GenerateResponse> element is true.

If <GenerateResponse> is true, the policy returns errors in this format for operations that generate tokens and codes. For a complete list, see see OAuth HTTP error response reference.

{"ErrorCode" : "invalid_client", "Error" :"ClientId is Invalid"}

If <GenerateResponse> is true, the policy returns errors in this format for verify and validate operations. For a complete list, see see OAuth HTTP error response reference.

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

Example fault rule

<FaultRule name=OAuthV2 Faults">
    <Step>
        <Name>AM-InvalidClientResponse</Name>
        <Condition>(fault.name = "invalid_client") OR (fault.name = "InvalidClientIdentifier")</Condition>
    </Step>
    <Step>
        <Name>AM-InvalidTokenResponse</Name>
        <Condition>(fault.name = "invalid_access_token")</Condition>
    </Step>
    <Condition>(oauthV2.failed = true) </Condition>
</FaultRule>

Get OAuthV2 Info ポリシー

このセクションでは、このポリシーによってエラーがトリガーされたときに返される障害コードとエラー メッセージ、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 ポリシーに送信されたリフレッシュ トークンは、期限が切れています。

デプロイエラー

デプロイエラーについては、UI で報告されるメッセージを参照してください。

障害変数

次の変数は、このポリシーでランタイム エラーが発生したときに設定されます。

変数 説明 例
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>

Set OAuthV2 Info ポリシー

このセクションでは、このポリシーでエラーが発生したときに返される障害コードとエラー メッセージ、Edge によって設定される障害変数について説明します。これは、障害に対処する障害ルールを作成するうえで重要な情報です。詳細については、ポリシーエラーについて知っておくべきことと障害の処理をご覧ください。

ランタイム エラー

このエラーは、ポリシーの実行時に発生することがあります。

障害コード HTTP ステータス 原因
steps.oauth.v2.access_token_expired 500 ポリシーに送信されたアクセス トークンは、期限が切れています。
steps.oauth.v2.invalid_access_token 500 ポリシーに送信されたアクセス トークンが無効です。
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound 401 このエラーのトラブルシューティングについては、こちらの Apigee コミュニティの投稿をご覧ください。

デプロイエラー

デプロイエラーについては、UI で報告されるメッセージを参照してください。

障害変数

次の変数は、このポリシーでランタイム エラーが発生したときに設定されます。

変数 説明 例
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>

Delete OAuthV2 Info ポリシー

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

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause
steps.oauth.v2.invalid_access_token 401 The access token sent to the policy is invalid.
steps.oauth.v2.invalid_request-authorization_code_invalid 401 The authorization code sent to the policy is invalid.
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound 401 Please see this Apigee Community post for information about troubleshooting this error.

Deployment errors

Refer to the message reported in the UI for information about deployment errors.

Fault variables

These variables are set when this policy triggers an error at runtime.

Variables Where Example
fault.name="fault_name" fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name = "invalid_access_token"
oauthV2.policy_name.failed policy_name is the user-specified name of the policy that threw the fault. oauthV2.DeleteTokenInfo.failed = true
oauthV2.policy_name.fault.name policy_name is the user-specified name of the policy that threw the fault. oauthV2.DeleteTokenInfo.fault.name = invalid_access_token
oauthv2.policy_name.fault.cause policy_name is the user-specified name of the policy that threw the fault. oauthV2.DeleteTokenInfo.cause = Invalid Access Token

Example error response

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

Example fault rule

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

OAuth v1.0a ポリシー

The OAuthV1 Policy type defines the following error codes.

For OAuth-related HTTP error codes, see OAuth HTTP error response reference.

Error Code Message
AppKeyNotResolved Could not resolve the app key with variable {0}
ConsumerKeyNotResolved Could not resolve the consumer key with variable {0}
RequestTokenNotResolved Could not resolve the request token with the variable {0}
AccessTokenNotResolved Could not resolve the access token with the variable {0}
ResponseGenerationError Error while generating response : {0}
UnableToDetermineOperation Unable to determine an operation for stepDefinition {0}
UnableToResolveOAuthConfig Unable to resolve the OAuth configuration for {0}
AtLeastOneParamRequired At least one of AccessToken, RequestToken or ConsumerKey must be specified in stepDefinition {0}
SpecifyValueOrRefReqToken Specify Request Token as value or ref in stepDefinition {0}
SpecifyValueOrRefAccToken Specify Access Token as value or ref in stepDefinition {0}
SpecifyValueOrRefConKey Specify Consumer Key as value or ref in stepDefinition {0}
SpecifyValueOrRefAppKey Specify App Key as value or ref in stepDefinition {0}
ExpiresInNotApplicableForOperation ExpiresIn element is not valid for operation {0}
InvalidValueForExpiresIn Invalid value for ExpiresIn element for operation {0}
FailedToFetchApiProduct Failed to fetch api product for key {0}
InvalidTokenType Valid token types : {0}, Invalid toke type {1} in stepDefinition {2}
TokenValueRequired Token value is required in stepDefinition {0}
FailedToResolveRealm Failed to resolve realm {0}

Get OAuthV1 Info ポリシー

Get OAuth v1.0a Info ポリシーにエラーコードが指定されていません。

Delete OAuthV1 Info ポリシー

成功すると、ポリシーは 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"}}}

Python Script ポリシー

このセクションでは、障害コードとエラー メッセージ、障害変数について説明します。 このポリシーでエラーがトリガーされたときに Edge によって設定されます。これは、障害に対処する障害ルールを作成するうえで重要な情報です。詳細については、ポリシーエラーについて知っておくべきことと障害の処理をご覧ください。

ランタイム エラー

このエラーは、ポリシーの実行時に発生することがあります。

障害コード HTTP ステータス 原因 修正
steps.script.ScriptEvaluationFailed 500 PythonScript ポリシーは、複数のタイプの ScriptExecutionFailed エラーをスローします。よくある 表示されるエラーには、NameError や ZeroDivisionError。

デプロイエラー

以下のエラーは、このポリシーを含むプロキシをデプロイするときに発生することがあります。

エラー名 原因 修正
InvalidResourceUrlFormat PythonScript ポリシーの <ResourceURL> または <IncludeURL> 要素で指定されたリソース URL の形式が無効な場合、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>

Quota ポリシー

このセクションでは、このポリシーによってエラーがトリガーされたときに返される障害コードとエラー メッセージ、Edge によって設定される障害変数について説明します。 これは、障害に対処する障害ルールを作成するうえで重要な情報です。詳細については、ポリシーエラーについて知っておくべきことと障害の処理をご覧ください。

ランタイム エラー

このエラーは、ポリシーの実行時に発生することがあります。

障害コード HTTP ステータス 原因 修正
policies.ratelimit.FailedToResolveQuotaIntervalReference 500 Quota ポリシーで <Interval> 要素が定義されていない場合に発生します。この要素は必須であり、割り当てに適用できる期間を指定するために使用されます。期間は、<TimeUnit> 要素で定義された分、時間、日、週、月で指定できます。
policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference 500 Quota ポリシーで <TimeUnit> 要素が定義されていない場合に発生します。この要素は必須であり、割り当てに適用できる時間単位を指定するために使用されます。期間は、分、時間、日、週、月で指定できます。
policies.ratelimit.InvalidMessageWeight 500 フロー変数で <MessageWeight> 要素に無効な値(整数以外の値)が指定された場合に発生します。
policies.ratelimit.QuotaViolation 500 割り当て上限を超えました。 なし

デプロイエラー

エラー名 原因 修正
InvalidQuotaInterval <Interval> 要素に指定された割り当て間隔が整数でない場合、API プロキシのデプロイが失敗します。たとえば、<Interval> 要素で指定された割り当て間隔が 0.1 の場合、API プロキシのデプロイが失敗します。
InvalidQuotaTimeUnit <TimeUnit> 要素で指定された時間単位がサポートされていない場合、API プロキシのデプロイは失敗します。サポートされている時間単位は minute、hour、day、week、month です。
InvalidQuotaType <Quota> 要素の type 属性で指定された割り当てのタイプが無効な場合、API プロキシのデプロイは失敗します。サポートされている割り当てのタイプは、default、calendar、flexi、rollingwindow です。
InvalidStartTime <StartTime> 要素で指定された時刻の形式が無効な場合、API プロキシのデプロイは失敗します。有効な形式は yyyy-MM-dd HH:mm:ss です。これは ISO 8601 の日付と時刻の形式です。たとえば、<StartTime> 要素で指定された時間が 7-16-2017 12:00:00 の場合、API プロキシのデプロイは失敗します。
StartTimeNotSupported 割り当てのタイプが calendar タイプ以外の <StartTime> 要素が指定されている場合、API プロキシのデプロイは失敗します。<StartTime> 要素は、calendar 割り当てタイプでのみサポートされています。たとえば、<Quota> 要素の type 属性が flexi または rolling window に設定されている場合、API プロキシのデプロイは失敗します。
InvalidTimeUnitForDistributedQuota <Distributed> 要素が true に設定され、<TimeUnit> 要素が second に設定されている場合、API プロキシのデプロイが失敗します。分散割り当てで時間単位 second は無効です。
InvalidSynchronizeIntervalForAsyncConfiguration <SyncIntervalInSeconds> 要素に指定された値が Quota ポリシーの <AsynchronousConfiguration> 要素が 0 未満の場合、 API プロキシのデプロイに失敗します。
InvalidAsynchronizeConfigurationForSynchronousQuota Quota ポリシーで <AsynchronousConfiguration> 要素の値が true に設定されていて、<AsynchronousConfiguration> 要素を使用して非同期構成が定義されている場合、API プロキシのデプロイは失敗します。

障害変数

このポリシーがエラーをトリガーした場合は、次の変数が設定されます。詳細については、ポリシーエラーについて知っておくべきことをご覧ください。

変数 説明 例
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>

Reset Quota ポリシー

このセクションでは、このポリシーによってエラーがトリガーされたときに返される障害コードとエラー メッセージ、Edge によって設定される障害変数について説明します。これは、障害に対処する障害ルールを作成するうえで重要な情報です。詳細については、ポリシーエラーについて知っておくべきことと障害の処理をご覧ください。

ランタイム エラー

このエラーは、ポリシーの実行時に発生することがあります。

障害コード HTTP ステータス 原因 解決方法
policies.resetquota.InvalidRLPolicy 500 Reset Quota ポリシーの <Quota> 要素で指定された Quota ポリシーは API プロキシで定義されていないため、フロー中には使用できません。<Quota> 要素は必須であり、Reset Quota ポリシーでカウンタを更新するターゲット Quota ポリシーを特定します。
policies.resetquota.FailedToResolveAllowCountRef なし ポリシーの <Allow> 要素の許可カウントを含む変数への参照を値に解決できません。この要素は必須であり、割り当てカウンタを減らす量を指定します。
policies.resetquota.FailedToResolveRLPolicy 500 <Quota> 要素の ref 属性によって参照される変数は解決できません。

デプロイエラー

以下のエラーは、このポリシーを含むプロキシをデプロイするときに発生することがあります。

エラー名 原因 修正
InvalidCount Reset Quota ポリシーの <Allow> 要素で指定されたカウント値が整数でない場合、API プロキシのデプロイが失敗します。

Raise Fault ポリシー

このセクションでは、障害コードとエラー メッセージ、障害変数について説明します。 このポリシーでエラーがトリガーされたときに Edge によって設定されます。 これは、障害に対処する障害ルールを作成するうえで重要な情報です。詳細については、ポリシーエラーについて知っておくべきことと障害の処理をご覧ください。

ランタイム エラー

このエラーは、ポリシーの実行時に発生することがあります。

障害コード 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]"
   }
}

Regular Expression Protection ポリシー

This section describes the error codes and messages returned and fault variables set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. If you want to capture an error and raise your own custom error, set the continueOnError="true" attribute on the policy root element. To learn more, see What you need to know about policy errors and Handling faults.

Errors returned from Edge policies follow a consistent format as described in the Error code reference.

Runtime errors

These errors can occur when the policy executes.

Error Code Message
ExecutionFailed Failed to execute the RegularExpressionProtection StepDefinition {0}. Reason: {1}
InstantiationFailed Failed to instantiate the RegularExpressionProtection StepDefinition {0}
NonMessageVariable Variable {0} does not resolve to a Message
SourceMessageNotAvailable {0} message is not available for RegularExpressionProtection StepDefinition {1}
ThreatDetected Regular Expression Threat Detected in {0}: regex: {1} input: {2}
VariableResolutionFailed Failed to resolve variable {0}

Deployment errors

Error Code Message Fix
CannotBeConvertedToNodeset RegularExpressionProtection {0}: Result of xpath {1} cannot be converted to nodeset. Context {2}
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 variables

These variables are set when this policy triggers an error. For more information, see What you need to know about policy errors.

Variables Where Example
fault.name="fault_name" fault_name is the name of the fault, as listed in the table above. fault.name Matches "ThreatDetected"
regularexpressionprotection.policy_name.failed policy_name is the user-specified name of the policy that threw the fault. regularexpressionprotection.Regular-Expressions-Protection-1.failed = true

SOAP Message Validation ポリシー

このセクションでは、このポリシーによってエラーがトリガーされたときに返される障害コードとエラー メッセージ、Edge によって設定される障害変数について説明します。これは、障害に対処する障害ルールを作成するうえで重要な情報です。詳細については、ポリシーエラーについて知っておくべきことと障害の処理をご覧ください。

ランタイム エラー

このエラーは、ポリシーの実行時に発生することがあります。

障害コード HTTP ステータス 原因 解決方法
steps.messagevalidation.SourceMessageNotAvailable 500

このエラーは、ポリシーの <Source> 要素で指定された変数が次のいずれかである場合に発生します。

  • 範囲外(ポリシーが実行されている特定のフローで使用できない)
  • または
  • 解決不能(未定義)
steps.messagevalidation.NonMessageVariable 500

このエラーは、SOAPMessageValidation ポリシーの <Source> 要素がメッセージ型以外の変数に設定されている場合に発生します。

メッセージ型の変数は HTTP リクエストとレスポンス全体を表します。組み込みの Edge フロー変数 request、response、message はメッセージ型です。メッセージ変数の詳細については、変数リファレンスをご覧ください。

steps.messagevalidation.Failed 500 このエラーは、SOAPMessageValidation ポリシーが、XSD スキーマまたは WSDL 定義に対する入力メッセージ ペイロードを検証できなかった場合に発生します。また、ペイロード メッセージ内の JSON または XML の形式が正しくない場合にも発生します。

デプロイエラー

以下のエラーは、このポリシーを含むプロキシをデプロイするときに発生することがあります。

エラー名 原因 解決方法
InvalidResourceType SOAPMessageValidation ポリシーの <ResourceURL> 要素が、ポリシーでサポートされていないリソースタイプに設定されています。
ResourceCompileFailed SOAPMessageValidation ポリシーの <ResourceURL> 要素で参照されているリソース スクリプトに、コンパイルを妨げるエラーが含まれています。
RootElementNameUnspecified SOAPMessageValidation ポリシーの <Element> 要素にルート要素の名前が含まれていません。
InvalidRootElementName SOAPMessageValidation ポリシーの <Element> 要素に、有効な要素の命名に関する XML ルールに準拠していないルート要素名が含まれています。

SAML Assertion ポリシー

このセクションでは、障害コードとエラー メッセージについて説明します。 このポリシーでエラーがトリガーされたときに Edge によって設定される障害変数。 これは、障害に対処する障害ルールを作成するうえで重要な情報です。詳細については、ポリシーエラーについて知っておくべきことと障害の処理をご覧ください。

デプロイエラー

以下のエラーは、このポリシーを含むプロキシをデプロイするときに発生することがあります。

エラー名 原因 修正
SourceNotConfigured Validate SAML Assertion ポリシーの <Source>、<XPath>、<Namespaces>、<Namespace> の要素のうち 1 つ以上が定義されていないか、空である。
TrustStoreNotConfigured <TrustStore> 要素が空である、または ValidateSAMLAssertion ポリシーで指定されていない場合、API プロキシのデプロイは失敗します。有効なトラストストアが必要です。
NullKeyStoreAlias 子要素 <Alias> が空である、または Generate SAML Assertion ポリシーの <Keystore> 要素で指定されていない場合、API プロキシのデプロイは失敗します。有効なキーストア エイリアスが必要です。
NullKeyStore 子要素 <Name> が空であるか、<Keystore> で指定されていない場合 GenerateSAMLAssertion ポリシーの要素、API のデプロイ、 失敗します。有効なキーストア名が必要です。
NullIssuer <Issuer> 要素が空である、または Generate SAML Assertion ポリシーで指定されていない場合、API プロキシのデプロイは失敗します。有効な <Issuer> の値が必要です。

障害変数

ランタイム エラーが発生すると、次の変数が設定されます。詳細については、ポリシーエラーについて知っておくべきことをご覧ください。

変数 説明 例
fault.name="fault_name" fault_name は障害の名前です。障害名は、障害コードの最後の部分です。 fault.name = "InvalidMediaTpe"
GenerateSAMLAssertion.failed 検証 SAML assertion ポリシー構成の場合、エラーの接頭辞は 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>

Service Callout ポリシー

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

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause Fix
steps.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 Request Message. For example, if it's a Response type, you'll see this error.

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.

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="VariableOfNonMsgType"></faultrule><FaultRule name="RequestVariableNotMessageType">
    <Step>
        <Name>AM-RequestVariableNotMessageType</Name>
    </Step>
    <Condition>(fault.name = "RequestVariableNotMessageType")</Condition>
</FaultRule>

Spike Arrest ポリシー

このセクションでは、障害コードとエラー メッセージ、障害変数について説明します。 このポリシーでエラーがトリガーされたときに Edge によって設定されます。 これは、障害に対処する障害ルールを作成するうえで重要な情報です。詳細については、ポリシーエラーについて知っておくべきことと障害の処理をご覧ください。

ランタイム エラー

このエラーは、ポリシーの実行時に発生することがあります。

障害コード HTTP ステータス 原因 修正
policies.ratelimit.FailedToResolveSpikeArrestRate 500 このエラーは、<Rate> 要素内のレート設定を含む変数への参照を、Spike Arrest ポリシー内の値に解決できない場合に発生します。この要素は必須であり、intpm または intps の形式での Spike Arrest レートの指定に使用されます。
policies.ratelimit.InvalidMessageWeight 500 このエラーは、フロー変数で <MessageWeight> 要素に指定された値が無効な場合(整数以外の値)場合に発生します。
policies.ratelimit.SpikeArrestViolation 429

レート制限を超えました。

<ph type="x-smartling-placeholder">をご覧ください。

デプロイエラー

以下のエラーは、このポリシーを含むプロキシをデプロイするときに発生することがあります。

エラー名 原因 修正
InvalidAllowedRate Spike Arrest ポリシーの <Rate> 要素で指定されたスパイク停止率が整数でない場合、または停止率の接尾辞として ps または pm が指定されていない場合は、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>

Statistics Collector ポリシー

このセクションでは、このポリシーによってエラーがトリガーされたときに設定されるエラー メッセージとフロー変数について説明します。これは、プロキシの障害ルールを作成するうえで重要な情報です。詳細については、ポリシーエラーについて知っておくべきことと障害の処理をご覧ください。

ランタイム エラー

なし。

デプロイエラー

エラー名 原因 修正
UnsupportedDatatype Statistics Collector ポリシーの <Statistic> 要素の ref 属性で指定された変数の型がサポートされていない場合、API プロキシのデプロイに失敗します。サポートされているデータ型は、string、integer、float、long、double、boolean です。
InvalidName Statistics Collector ポリシーの <Statistic> 要素に定義されている変数のデータを参照するために使用する名前がシステム定義の変数と競合する場合、API プロキシのデプロイに失敗します。既知のシステム定義の変数としては、organization、environment などがあります。
DatatypeMissing Statistics Collector ポリシーの <Statistic> 要素の ref 属性で指定された変数の型が見つからない場合、API プロキシのデプロイに失敗します。

障害変数

なし。

Verify API Key ポリシー

このセクションでは、このポリシーでエラーが発生したときに返される障害コードとエラー メッセージ、Edge によって設定される障害変数について説明します。これは、障害に対処する障害ルールを作成するうえで重要な情報です。詳細については、ポリシーエラーについて知っておくべきことと障害の処理をご覧ください。

ランタイム エラー

このエラーは、ポリシーの実行時に発生することがあります。

障害コード HTTP ステータス 原因
keymanagement.service.CompanyStatusNotActive 401 デベロッパー アプリに関連付けられ、使用する API キーを所有している会社がアクティブな状態ではありません。会社のステータスを非アクティブに設定すると、この会社に関連するデベロッパーやアプリにアクセスできなくなります。組織管理者は、管理 API を使用して会社のステータスを変更できます。会社のステータスを設定するをご覧ください。
keymanagement.service.DeveloperStatusNotActive 401

お客様が使用している API キーを持つデベロッパー アプリを作成したデベロッパーが非アクティブなステータスです。アプリ デベロッパーのステータスが非アクティブに設定されると、このデベロッパーが作成したすべてのデベロッパー アプリも無効になります。適切な権限のある管理ユーザー(組織管理者など)は、次の方法でデベロッパーのステータスを変更できます。

keymanagement.service.invalid_client-app_not_approved 401 API キーに関連付けられたデベロッパー アプリが取り消されています。取り消されたアプリは API プロダクトにアクセスできず、Apigee Edge が管理する API を呼び出すこともできません。組織管理者は、管理 API を使用してデベロッパー アプリのステータスを変更できます。 デベロッパー アプリの承認と取り消しをご覧ください。
oauth.v2.FailedToResolveAPIKey 401 ポリシーは、ポリシーの <APIKey> 要素で指定された変数の中で API キーを見つけることを想定しています。 このエラーは、想定した変数が存在しない(解決できない)ときに発生します。
oauth.v2.InvalidApiKey 401 Edge が受信した API キーが無効です。Edge は、データベースでキーを検索するときに、リクエストで送信されたキーと完全に一致するキーを検索します。以前に機能していた API の場合は、キーが再生成されていないことを確認してください。キーが再生成されている場合に古いキーを使用しようとすると、このエラーが表示されます。詳細については、アプリを登録して API キーを管理するをご覧ください。
oauth.v2.InvalidApiKeyForGivenResource 401 Edge が有効な 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>

Verify JWS ポリシー

このセクションでは、このポリシーによってエラーがトリガーされたときに返される障害コードとエラー メッセージ、Edge によって設定される障害変数について説明します。これは、障害に対処する障害ルールを作成するうえで重要な情報です。詳細については、ポリシーエラーについて知っておくべきことと障害の処理をご覧ください。

ランタイム エラー

このエラーは、ポリシーの実行時に発生することがあります。

障害コード 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 無効な JSON が JWS ヘッダーで検出された場合。
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 crit ヘッダーの Verify JWS ポリシーで見つかったヘッダーが 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>

Verify JWT ポリシー

このセクションでは、このポリシーによってエラーがトリガーされたときに返される障害コードとエラー メッセージ、Edge によって設定される障害変数について説明します。これは、障害に対処する障害ルールを作成するうえで重要な情報です。詳細については、ポリシーエラーについて知っておくべきことと障害の処理をご覧ください。

ランタイム エラー

このエラーは、ポリシーの実行時に発生することがあります。

障害コード 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.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 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 crit ヘッダーの Verify JWT ポリシーで見つかったヘッダーが KnownHeaders にリストされていない場合。
steps.jwt.UnknownException 401 不明な例外が発生した場合。
steps.jwt.WrongKeyType 401 鍵のタイプが正しくない場合。たとえば、楕円曲線アルゴリズムで RSA 鍵を指定した場合や、RSA アルゴリズムで曲線鍵を指定した場合など。

デプロイエラー

以下のエラーは、このポリシーを含むプロキシをデプロイするときに発生することがあります。

エラー名 原因 修正
InvalidNameForAdditionalClaim <AdditionalClaims> 要素の子要素 <Claim> で使用されているクレームの型が登録済みの名前(kid、iss、sub、aud、iat、exp、nbf、jti)のいずれかである場合、デプロイが失敗します。
InvalidTypeForAdditionalClaim <AdditionalClaims> 要素の子要素 <Claim> で使用されているクレームが string、number、boolean、map 型でない場合、デプロイが失敗します。
MissingNameForAdditionalClaim <AdditionalClaims> 要素の子要素 <Claim> でクレームの名前が指定されていない場合、デプロイが失敗します。
InvalidNameForAdditionalHeader このエラーは、<AdditionalClaims> 要素の子要素 <Claim> で使用されているクレームの名前が alg または typ の場合に発生します。
InvalidTypeForAdditionalHeader <AdditionalClaims> 要素の子要素 <Claim> で使用されているクレームの型が string、number、boolean、map 型でない場合、デプロイが失敗します。
InvalidValueOfArrayAttribute このエラーは、<AdditionalClaims> 要素の子要素 <Claim> 内の配列属性の値が true または false に設定されていない場合に発生します。
InvalidValueForElement <Algorithm> 要素に指定された値がサポートされていない場合、デプロイが失敗します。
MissingConfigurationElement このエラーは、<PrivateKey> 要素が RSA ファミリー アルゴリズムで使用されていない場合や、<SecretKey> 要素が HS ファミリー アルゴリズムで使用されていない場合に発生します。
InvalidKeyConfiguration 子要素 <Value> が <PrivateKey> 要素または <SecretKey> 要素で定義されていない場合、デプロイが失敗します。
EmptyElementForKeyConfiguration <PrivateKey> 要素または <SecretKey> 要素の子要素 <Value> の ref 属性が空か、指定されていない場合、デプロイが失敗します。
InvalidConfigurationForVerify このエラーは、<Id> 要素が <SecretKey> 要素内で定義されている場合に発生します。
InvalidEmptyElement このエラーは、Verify JWT ポリシーの <Source> 要素が空の場合に発生します。存在する場合、Edge フロー変数名で定義する必要があります。
InvalidPublicKeyValue <PublicKey> 要素の子要素 <JWKS> で使用されている値が、RFC 7517 で指定されている有効な形式になっていない場合、デプロイが失敗します。
InvalidConfigurationForActionAndAlgorithm <PrivateKey> 要素が HS ファミリー アルゴリズムで使用されている場合、または <SecretKey> 要素が RSA ファミリー アルゴリズムで使用されている場合、デプロイが失敗します。

障害変数

ランタイム エラーが発生すると、次の変数が設定されます。詳細については、ポリシーエラーについて知っておくべきことをご覧ください。

変数 説明 例
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>
    

XML Threat Protection ポリシー

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

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause Fix
steps.xmlthreatprotection.ExecutionFailed 500 The XMLThreatProtection policy can throw many different types of ExecutionFailed errors. Most of these errors occur when a specific threshold set in the policy is exceeded. These types of errors include: element name length, child count, node depth, attribute count, attribute name length, and many others. You can see the complete list in the XMLThreatProtection policy runtime error troubleshooting topic.
steps.xmlthreatprotection.InvalidXMLPayload 500 This error occurs if the input message payload specified by the XMLThreatProtection policy's <Source> element is not a valid XML Document.
steps.xmlthreatprotection.SourceUnavailable 500 This error occurs if the message variable specified in the <Source> element is either:
  • Out of scope (not available in the specific flow where the policy is being executed)
  • Is not one of the valid values request, response, or message
steps.xmlthreatprotection.NonMessageVariable 500 This error occurs if the <Source> element is set to a variable which is not of type message.

Notes:

  • The error name ExecutionFailed is the default error name and will be returned regardless of the type of error detected; however, this default can be changed by setting an organization-level property. When this property is set, the error name will reflect the actual error. For example, "TextExceeded" or "AttrValueExceeded". See Usage Notes for details.
  • The 500 HTTP status is the default; however, the HTTP Status can be changed to 400 for request flow faults by setting an organization-level property. See Usage Notes for details.

Deployment errors

None.

Fault variables

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

Variables Where Example
fault.name="fault_name" fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "SourceUnavailable"
xmlattack.policy_name.failed policy_name is the user-specified name of the policy that threw the fault. xmlattack.XPT-SecureRequest.failed = true

Example error response

{
  "fault": {
    "faultstring": "XMLThreatProtection[XPT-SecureRequest]: Execution failed. reason: XMLThreatProtection[XTP-SecureRequest]: Exceeded object entry name length at line 2",
    "detail": {
      "errorcode": "steps.xmlthreatprotection.ExecutionFailed"
    }
  }
}

Example fault rule

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

XML to JSON ポリシー

このセクションでは、このポリシーによってエラーがトリガーされたときに返される障害コードとエラー メッセージ、Edge によって設定される障害変数について説明します。 これは、障害に対処する障害ルールを作成するうえで重要な情報です。詳細については、ポリシーエラーについて知っておくべきことと障害の処理をご覧ください。

ランタイム エラー

このエラーは、ポリシーの実行時に発生することがあります。

障害コード HTTP ステータス 原因 修正
steps.xmltojson.ExecutionFailed 500 このエラーは、入力ペイロード(XML)が空、入力 XML が無効、または形式が正しくない場合に発生します。
steps.xmltojson.InCompatibleType 500 このエラーは、<Source> 要素で定義された変数の型と、<OutputVariable> 要素で定義された変数の型が異なる場合に発生します。<Source> 要素に含まれる変数の型と、<OutputVariable> 要素に含まれる変数の型は一致する必要があります。
steps.xmltojson.InvalidSourceType 500 このエラーは、<Source> 要素の定義に使用される変数の型が無効な場合に発生します。有効な変数の型は、message と String です。
steps.xmltojson.OutputVariableIsNotAvailable 500 このエラーは、XML to JSON ポリシーの <Source> 要素で指定された変数が String 型であり、<OutputVariable> 要素が定義されていない場合に発生します。<Source> 要素で定義された変数が String 型の場合、<OutputVariable> 要素は必須です。
steps.xmltojson.SourceUnavailable 500 このエラーは、XML to JSON ポリシーの <Source> 要素で指定された message 変数が、次のいずれかである場合に発生します。
  • 範囲外(ポリシーが実行されている特定のフローで使用できない)または
  • 解決できない(定義されていない)

デプロイエラー

以下のエラーは、このポリシーを含むプロキシをデプロイするときに発生することがあります。

エラー名 原因 修正
EitherOptionOrFormat <Options> または <Format> のいずれかの要素が XML to JSON ポリシーに宣言されていない場合、API プロキシのデプロイは失敗します。
UnknownFormat XML to JSON ポリシー内の <Format> 要素に不明な形式が定義されている場合、API プロキシのデプロイは失敗します。事前定義された形式には、xml.com、yahoo、google、badgerFish があります。

障害変数

ランタイム エラーが発生すると、次の変数が設定されます。詳細については、ポリシーエラーについて知っておくべきことをご覧ください。

変数 説明 例
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>

XSL Transform ポリシー

ランタイム エラー

このエラーは、ポリシーの実行時に発生することがあります。

障害コード HTTP ステータス 原因 解決方法
steps.xsl.XSLSourceMessageNotAvailable 500 このエラーは、XSL Transform ポリシーの <Source> 要素で指定されたメッセージまたは文字列変数がスコープ外である(ポリシーが実行されている特定のフローで使用できない)か、解決できない(定義されていない)場合に発生します。
steps.xsl.XSLEvaluationFailed 500 このエラーは、入力 XML ペイロードが使用できない、または不正な形式の場合、または XSLTransform ポリシーが XSL ファイルに指定された変換ルールに基づいた入力 XML ファイルの変換に失敗する、または変換できない場合に発生します。XSLTransform ポリシーは、さまざまな原因で失敗します。エラー メッセージに含まれている失敗の理由から、原因についてより詳しい情報を得ることができます。

デプロイエラー

以下のエラーは、このポリシーを含むプロキシをデプロイするときに発生することがあります。

エラー名 原因 解決方法
XSLEmptyResourceUrl XSL Transform ポリシーの <ResourceURL> 要素が空の場合、API プロキシのデプロイは失敗します。
XSLInvalidResourceType XSL Transform ポリシーの <ResourceURL> 要素に指定されたリソースタイプが xsl でない場合、API プロキシのデプロイは失敗します。