Solución de problemas del entorno de ejecución de la protección contra amenazas JSON

Estás viendo la documentación de Apigee Edge.
Ve a la documentación de Apigee X.
info

ExecutionFailed

Código de error

steps.jsonthreatprotection.ExecutionFailed

Cuerpo de la respuesta de error

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Execution failed. reason: JSONThreatProtection[policy_name]: error_description
          at line line_num",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Tipos de errores y posibles causas

La política JSONThreatProtection puede arrojar varios tipos de errores ExecutionFailed. En la siguiente tabla, se enumeran los diferentes tipos de errores y las posibles causas:

Tipo de error Causa
Se excedió la longitud del nombre de entrada del objeto Se excede la longitud máxima de string permitida en el nombre de entrada de un objeto.
Se superó el recuento de entradas de objetos Se excede la cantidad máxima de entradas permitidas en un objeto.
Se excedió el recuento de elementos del arreglo Se superó la cantidad máxima de elementos permitidos en un arreglo.
Profundidad excedida del contenedor Se supera la profundidad máxima anidada permitida.
Se excedió la longitud del valor de string Se superó la longitud máxima permitida para un valor de string.
Objeto JSON no válido La carga útil JSON de entrada no es válida.

Se superó la longitud del nombre de entrada del objeto.

Cuerpo de la respuesta de error

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Execution failed. reason: JSONThreatProtection[policy_name]:
          Exceeded object entry name length at line line_num",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Cuerpo de la respuesta de error de ejemplo

{
    "fault": {
        "faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
          Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]:
          Exceeded object entry name length at line 2",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Causa

Este error se genera si la carga útil del mensaje de entrada que especifica el elemento <Source> contiene un objeto JSON con un nombre de propiedad que excede la longitud máxima que se especifica en el elemento <ObjectEntryNameLength>.

Por ejemplo, si el elemento <ObjectEntryNameLength> se especifica como 5 en la política, pero la carga útil del mensaje de entrada tiene una propiedad JSON cuyo nombre supera los 5 caracteres, se genera este error.

Diagnóstico

  1. Examina el mensaje de error para identificar el nombre de la política JSONThreatProtection y el número de línea donde se encuentra el nombre de entrada largo. Por ejemplo, en el siguiente mensaje de error, el nombre de la política JSONThreatProtection es JSON-Threat-Protection-1 y el número de línea en la carga útil es 2.

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name
    length at line 2
    
  2. Examina la política que identificaste en el paso 1 y toma nota del valor especificado en el elemento <ObjectEntryNameLength>.

    Por ejemplo, en la siguiente política JSONThreatProtection, <ObjectEntryNameLength> se establece en 5:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
        <DisplayName>JSON Threat Protection-1</DisplayName>
        <Properties/>
        <ArrayElementCount>3</ArrayElementCount>
        <ContainerDepth>12</ContainerDepth>
        <ObjectEntryCount>5</ObjectEntryCount>
        <ObjectEntryNameLength>5</ObjectEntryNameLength>
        <Source>request</Source>
        <StringValueLength>50</StringValueLength>
    </JSONThreatProtection>
    
  3. Examina el número de línea específico (identificado en el paso 1) de la carga útil de entrada y verifica si la longitud del nombre del objeto es mayor que el valor especificado en el elemento <ObjectEntryNameLength> (identificado en el paso 2). Si la longitud del nombre del objeto supera ese número, esa es la causa del error.

    A continuación, te mostramos un ejemplo de carga útil de entrada:

    {
       "number" : 500,
       "string" : "text"
    }
    

    La carga útil JSON que se muestra antes tiene una propiedad llamada number en la línea 2 que tiene 6 caracteres (la longitud del nombre es 6). Dado que la longitud del nombre del objeto es mayor que 5 (el valor especificado para el elemento <ObjectEntryNameLength>), verás el siguiente error:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name
    length at line 2
    

Solución

Si la política JSONThreatProtection se diseñó para brindar protección contra las cargas útiles con nombres de entrada de objetos que superan el valor definido, se espera que haya un mensaje de error. En este caso, no es necesario que realices ninguna otra acción.

Sin embargo, si determinas que se pueden especificar nombres de entrada de objetos más largos en la carga útil sin ninguna consecuencia, establece el valor de <ObjectEntryNameLength> en un valor adecuado según tus requisitos.

Por ejemplo, si consideras que puedes permitir nombres de objetos de hasta 10 caracteres, modifica la política JSONThreatProtection de la siguiente manera:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
    <DisplayName>JSON Threat Protection-1</DisplayName>
    <Properties/>
    <ArrayElementCount>3</ArrayElementCount>
    <ContainerDepth>12</ContainerDepth>
    <ObjectEntryCount>5</ObjectEntryCount>
    <ObjectEntryNameLength>10</ObjectEntryNameLength>
    <Source>request</Source>
    <StringValueLength>50</StringValueLength>
</JSONThreatProtection>

Se superó el recuento de entradas de objetos

Cuerpo de la respuesta de error

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Execution failed. reason: JSONThreatProtection[policy_name]:
          Exceeded object entry count at line line_num",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Cuerpo de la respuesta de error de ejemplo

{
    "fault": {
        "faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
          Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]:
          Exceeded object entry count at line 7",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Causa

Este error ocurre si la carga útil del mensaje de entrada que especifica el elemento <Source> contiene un objeto JSON con más entradas (propiedades) que el valor especificado en el elemento <ObjectEntryCount> de la política.

Por ejemplo, si el elemento <ObjectEntryCount> es 5, pero la carga útil JSON de entrada tiene más de 5 entradas, se genera este error.

Diagnóstico

  1. Examina el mensaje de error para identificar el nombre de la política JSONThreatProtection y el número de línea en el que se excede la cantidad de entradas. Por ejemplo, en el siguiente mensaje de error, el nombre de la política es JSON-Threat-Protection-1, y el número de línea en la carga útil es 7:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count
    at line 7
    
  2. Toma nota del valor especificado en el elemento <ObjectEntryCount> de la política (identificado en el paso 1).

    En el siguiente ejemplo de política, <ObjectEntryCount> se configura como 5:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
        <DisplayName>JSON Threat Protection-1</DisplayName>
        <Properties/>
        <ArrayElementCount>3</ArrayElementCount>
        <ContainerDepth>12</ContainerDepth>
        <ObjectEntryCount>5</ObjectEntryCount>
        <ObjectEntryNameLength>6</ObjectEntryNameLength>
        <Source>request</Source>
        <StringValueLength>50</StringValueLength>
    </JSONThreatProtection>
    
  3. Examina el número de línea específico (identificado en el paso 1) de la carga útil de entrada y verifica si la cantidad de entidades en la carga útil es mayor que el valor especificado para el elemento <ObjectEntryCount> (identificado en el paso 2). Si el número de objetos excede la cantidad de entradas de objetos, esa es la causa del error.

    A continuación, te mostramos un ejemplo de carga útil de entrada:

    {
    "name" : "John",
    "id" : 234687,
    "age" : 31,
    "city" : "New York",
    "country" : "USA",
    "company" : "Google"
    }
    

    En la carga útil JSON que se mostró antes, la entrada 6 se produce en la línea 7 (empresa). Dado que el recuento de las entradas de objetos en la carga útil JSON de entrada es mayor que 5 (el valor especificado para el elemento <ObjectEntryCount>), obtienes el siguiente error:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count at
    line 7
    

Solución

Si la política JSONThreatProtection se diseñó para brindar protección contra las cargas útiles con una cantidad de entradas de objetos que exceden un umbral específico, se espera que reciba el mensaje de error. En este caso, no es necesario que realices ninguna acción adicional.

Sin embargo, si determinas que se pueden incluir más entradas de objetos en la carga útil sin ninguna consecuencia, establece el valor de <ObjectEntryCount> en un valor adecuado según tus requisitos.

Por ejemplo, si crees que puedes permitir hasta 10 entradas de objeto, modifica la política JSONThreatProtection de la siguiente manera:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
    <DisplayName>JSON Threat Protection-1</DisplayName>
    <Properties/>
    <ArrayElementCount>3</ArrayElementCount>
    <ContainerDepth>12</ContainerDepth>
    <ObjectEntryCount>10</ObjectEntryCount>
    <ObjectEntryNameLength>6</ObjectEntryNameLength>
    <Source>request</Source>
    <StringValueLength>50</StringValueLength>
</JSONThreatProtection>

Se excedió el recuento de elementos del arreglo

Cuerpo de la respuesta de error

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Execution failed. reason: JSONThreatProtection[policy_name]:
          Exceeded array element count at line line-num",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Cuerpo de la respuesta de error de ejemplo

{
    "fault": {
        "faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
          Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]:
          Exceeded array element count at line 3",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Causa

Este error se genera si la carga útil del mensaje de entrada especificada por el elemento <Source> contiene un arreglo JSON con una cantidad de elementos mayor que el número especificado en el elemento <ArrayElementCount> de la política.

Por ejemplo, si el elemento <ArrayElementCount> se especifica como 3, pero la carga útil de entrada tiene un arreglo JSON con más de 3 elementos, se genera este error.

Diagnóstico

  1. Examina el mensaje de error para identificar el nombre de la política y el número de línea donde se excede la longitud del arreglo. Por ejemplo, en el siguiente mensaje de error, el nombre de la política es JSON-Threat-Protection-1, y el número de línea en la carga útil es 3:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count at line 3
    
  2. Toma nota del valor especificado en el elemento <ArrayElementCount> de la política (identificado en el paso 1).

    En el siguiente ejemplo de la política JSONThreatProtection, <ArrayElementCount> se configura como 3:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
        <DisplayName>JSON Threat Protection-1</DisplayName>
        <Properties/>
        <ArrayElementCount>3</ArrayElementCount>
        <ContainerDepth>12</ContainerDepth>
        <ObjectEntryCount>5</ObjectEntryCount>
        <ObjectEntryNameLength>6</ObjectEntryNameLength>
        <Source>request</Source>
        <StringValueLength>50</StringValueLength>
    </JSONThreatProtection>
    
  3. Examina el número de línea específico (identificado en el paso 1) de la carga útil de entrada y verifica si el arreglo especificado tiene un recuento mayor que el número especificado en el elemento <ArrayElementCount> (identificado en el paso 2). Si el número de elementos del arreglo supera el recuento, esa es la causa del error.

    A continuación, te mostramos un ejemplo de carga útil de entrada:

    {
     "name":"Ford",
     "models":[
        "Mustang",
        "Endeavour",
        "Fiesta",
        "EcoSport",
        "Focus"
     ]
    }
    

    La carga útil JSON que se muestra antes tiene 5 elementos en el arreglo llamado models en la línea 3. Debido a que la cantidad de elementos del arreglo es mayor que 3 (el valor especificado para el elemento <ArrayElementCount>), verás el siguiente error:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count
    at line 3
    

Solución

Si la política JSONThreatProtection se diseñó para brindar protección contra las cargas útiles con un límite de cantidad de arreglos específico, se espera el mensaje de error. En este caso, no es necesario que realices ninguna acción adicional.

Sin embargo, si determinas que puedes permitir una mayor cantidad de elementos en un arreglo, modifica <ArrayElementCount> y establece un valor adecuado según tus requisitos.

Por ejemplo, si crees que puedes permitir hasta 5 elementos de arreglo, modifica la política de la siguiente manera:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
    <DisplayName>JSON Threat Protection-1</DisplayName>
    <Properties/>
    <ArrayElementCount>5</ArrayElementCount>
    <ContainerDepth>12</ContainerDepth>
    <ObjectEntryCount>5</ObjectEntryCount>
    <ObjectEntryNameLength>6</ObjectEntryNameLength>
    <Source>request</Source>
    <StringValueLength>50</StringValueLength>
</JSONThreatProtection>

Profundidad excedida del contenedor

Cuerpo de la respuesta de error

El tráfico de entorno de ejecución muestra un código de respuesta 500 con el siguiente error:

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Execution failed. reason: JSONThreatProtection[policy_name]:
          Exceeded container depth at line line-num",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Cuerpo de la respuesta de error de ejemplo

{
    "fault": {
        "faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
          Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]:
          Exceeded container depth at line 5",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Causa

Este error ocurre si la carga útil del mensaje de entrada especificada por el elemento <Source> contiene un objeto JSON que contiene elementos JSON con una profundidad de contenedor que supera la profundidad máxima del contenedor especificada en el elemento <ContainerDepth> de la política. La profundidad del contenedor es la profundidad máxima anidada permitida para los elementos JSON. Por ejemplo, un arreglo que contiene un objeto que tiene un objeto daría como resultado una profundidad de contención de 3.

Por ejemplo, si el elemento <ContainerDepth> es 3, pero la carga útil de entrada tiene una profundidad del contenedor que excede este límite, se genera este error.

Diagnóstico

  1. Examina el mensaje de error para identificar el nombre de la política JSONThreatProtection y el número de línea en el que se excede la profundidad del contenedor. Por ejemplo, en el siguiente mensaje de error, el nombre de la política es JSON-Threat-Protection-1, y el número de línea en la carga útil es 5.

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at
    line 5
    
  2. Toma nota del valor especificado para el elemento <ContainerDepth> (identificado en el paso 1).

    En el siguiente ejemplo de la política JSONThreatProtection, <ContainerDepth> se configura como 5:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
        <DisplayName>JSON Threat Protection-1</DisplayName>
        <Properties/>
        <ArrayElementCount>3</ArrayElementCount>
        <ContainerDepth>5</ContainerDepth>
        <ObjectEntryCount>5</ObjectEntryCount>
        <ObjectEntryNameLength>20</ObjectEntryNameLength>
        <Source>request</Source>
        <StringValueLength>50</StringValueLength>
    </JSONThreatProtection>
    
  3. Examina el número de línea específico (identificado en el paso 1) de la carga útil de entrada y comprueba si la profundidad del contenedor en la carga útil es mayor que el valor especificado en el elemento <ContainerDepth> (identificado en el paso 2). Si la profundidad del contenedor supera el recuento, esa es la causa del error.

    A continuación, te mostramos un ejemplo de carga útil de entrada:

    {
     "ContainerDepth2":[ {
           "ContainerDepth4":[
              {
                 "ContainerDepth6":[
                    "1",
                    "2"
                 ]
              }
           ]
        }
     ]
    }
    

    La carga útil JSON que se muestra antes tiene una profundidad de contenedor de 6 en la línea 5. Dado que la profundidad es mayor que 5, el valor especificado para el elemento <ContainerDepth> de la política JSONThreatProtection aparece el siguiente error:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at
    line 5
    

Solución

Se espera el mensaje de error si la política JSONThreatProtection se diseñó para brindar protección contra las cargas útiles con profundidades de contenedor que superen el valor especificado. En este caso, no es necesario que realices ninguna acción adicional.

Sin embargo, si determinas que se pueden aceptar valores más elevados profundidades de contenedor, establece <ContainerDepth> en un valor adecuado según tus requisitos.

Por ejemplo, si crees que puedes permitir una profundidad de contenedores de hasta 10, modifica la política de la siguiente manera:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
    <DisplayName>JSON Threat Protection-1</DisplayName>
    <Properties/>
    <ArrayElementCount>3</ArrayElementCount>
    <ContainerDepth>10</ContainerDepth>
    <ObjectEntryCount>5</ObjectEntryCount>
    <ObjectEntryNameLength>20</ObjectEntryNameLength>
    <Source>request</Source>
    <StringValueLength>50</StringValueLength>
</JSONThreatProtection>

Se excedió la longitud del valor de string

Cuerpo de la respuesta de error

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Execution failed. reason: JSONThreatProtection[policy_name]:
          Exceeded string value length at line line-num",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Cuerpo de la respuesta de error de ejemplo

{
    "fault": {
        "faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
          Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]:
          Exceeded string value length at line 3",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Causa

Este error ocurre si la carga útil del mensaje de entrada que especifica el elemento <Source> contiene elementos JSON que tienen valores con más caracteres que los permitidos por el elemento <StringValueLength>.

Por ejemplo, si el elemento <StringValueLength> se configuró como 50 en la política, pero la carga útil de entrada tiene uno o más elementos cuyos valores contienen más de 50 caracteres, se producirá este error.

Diagnóstico

  1. Examina el mensaje de error para identificar el nombre de la política y el número de línea donde se excede la longitud de string. En el siguiente ejemplo, el nombre de la política es JSON-Threat-Protection-1 and línea en la carga útil 3.

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3
    
  2. Toma nota del valor especificado para el elemento <StringValueLength> (identificado en el paso 1).

    En el siguiente ejemplo de la política JSONThreatProtection, <StringValueLength> se establece en 50.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
        <DisplayName>JSON Threat Protection-1</DisplayName>
        <Properties/>
        <ArrayElementCount>3</ArrayElementCount>
        <ContainerDepth>5</ContainerDepth>
        <ObjectEntryCount>5</ObjectEntryCount>
        <ObjectEntryNameLength>20</ObjectEntryNameLength>
        <Source>request</Source>
        <StringValueLength>50</StringValueLength>
    </JSONThreatProtection>
    
  3. Examina el número de línea específico (identificado en el paso 1) de la carga útil de entrada y verifica si la longitud del valor es mayor que la cantidad de caracteres especificada para el elemento <StringValueLength> (identificado en el paso 2). Si la longitud del valor excede el límite, esa es la causa del error.

    A continuación, te mostramos un ejemplo de carga útil de entrada:

    {
      "Country": "New Zealand",
      "Place Name": "Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu"
    }
    

    La carga útil JSON que se muestra arriba tiene un objeto llamado Place Name cuyo valor Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu tiene 85 caracteres en la línea 3. Dado que la longitud del valor es mayor que 50, el valor especificado en el elemento <StringValueLength>, se mostrará el siguiente error:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length
    at line 3
    

Solución

Si la política JSONThreatProtection está diseñada para brindar protección contra cargas útiles con valores que exceden una longitud de string específica, se espera el mensaje de error. En este caso, no es necesario que realices ninguna acción adicional.

Sin embargo, si determinas que se puede especificar una longitud de valor más larga en la carga útil, modifica <StringValueLength> a un valor adecuado según tus requisitos.

Por ejemplo, si crees que puedes permitir un valor de longitud de hasta 90, modifica la política de la siguiente manera:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
    <DisplayName>JSON Threat Protection-1</DisplayName>
    <Properties/>
    <ArrayElementCount>3</ArrayElementCount>
    <ContainerDepth>5</ContainerDepth>
    <ObjectEntryCount>5</ObjectEntryCount>
    <ObjectEntryNameLength>20</ObjectEntryNameLength>
    <Source>request</Source>
    <StringValueLength>90</StringValueLength>
</JSONThreatProtection>

Objeto JSON no válido

Cuerpo de la respuesta de error

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Execution failed. reason: string: at line line-num",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Cuerpo de la respuesta de error de ejemplo

{
    "fault": {
        "faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
          Execution failed. reason: Expecting : at line 3",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Causa

Este error se genera si la carga útil del mensaje de entrada que especifica el elemento <Source> en la política JSONThreatProtection no es un objeto JSON válido.

Diagnóstico

  1. Examina el mensaje de error para identificar el nombre de la política y el número de línea donde ocurrió el error. En el siguiente ejemplo, el nombre de la política es JSON-Threat-Protection-1 and línea en la carga útil 2.

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
    
  2. Examina el número de línea específico (identificado en el paso 1) de la carga útil de entrada y verifica si el objeto JSON que se pasó a la carga útil es en realidad un objeto JSON válido.

    A continuación, te mostramos un ejemplo de carga útil de entrada:

    {
      "Longitude": 6.11499,
      "Latitude"  50.76891
    }
    

    En la carga útil JSON que se muestra arriba, la línea 3 no tiene ":" (dos puntos). Debido a que no es un objeto JSON válido, verás el siguiente error:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    Expecting : at line 3
    

Solución

Asegúrate de que se envíe una carga útil JSON válida a cualquier proxy de API que incluya la política JSONThreatProtection.

Para el ejemplo descrito anteriormente, modifica la carga útil JSON de la siguiente manera:

{
    "Longitude": 6.11499,
  "Latitude" : 50.76891
}

SourceUnavailable

Código de error

steps.jsonthreatprotection.SourceUnavailable

Cuerpo de la respuesta de error

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]::
          Source[var_name] is not available"
        "detail": {
            "errorcode": "steps.jsonthreatprotection.SourceUnavailable"
        }
    }
}

Cuerpo de la respuesta de error de ejemplo

{
    "fault": {
        "faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]::
          Source requests is not available",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.SourceUnavailable"
        }
    }
}

Causa

Este error se produce si la variable mensaje especificada en el elemento <Source> de la política JSONThreatProtection es una de las siguientes opciones:

  • Está fuera del alcance (no está disponible en el flujo específico en el que se ejecuta la política) o
  • No es uno de los valores válidos request, response o message.

Por ejemplo, este error ocurre si el elemento <Source> de la política se configura como una variable que no existe en el flujo en el que se ejecuta la política.

Diagnóstico

  1. Identifica el nombre de la política y el nombre de la variable de origen del mensaje de error. Por ejemplo, en el siguiente mensaje de error, el nombre de la política es JSON-Threat-Protection-1, y la variable de origen es requests:

    JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
    
  2. Examina el valor especificado para el elemento <Source> identificado en el paso 1.

    En el siguiente ejemplo de política JSONThreatProtection, el elemento <Source> se configura como requests.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
        <DisplayName>JSON Threat Protection-1</DisplayName>
        <Properties/>
        <ArrayElementCount>3</ArrayElementCount>
        <ContainerDepth>5</ContainerDepth>
        <ObjectEntryCount>5</ObjectEntryCount>
        <ObjectEntryNameLength>20</ObjectEntryNameLength>
        <Source>requests</Source>
        <StringValueLength>50</StringValueLength>
    </JSONThreatProtection>
    

    Los valores válidos para el elemento <Source> son request, response o message. Debido a que las solicitudes no son un valor válido y no existen en el flujo en el que se ejecuta la política, obtienes el siguiente error:

    JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
    

Solución

Asegúrate de que la variable establecida en el elemento <Source> de la política con errores JSONThreatProtection esté establecida en request, response o message, y que exista en el flujo en el que se ejecuta la política.

Si quieres corregir la política JSONThreatProtection de ejemplo que se muestra arriba, puedes modificar el elemento <Source> a fin de usar la variable request, ya que existe en el flujo de solicitudes:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
    <DisplayName>JSON Threat Protection-1</DisplayName>
    <Properties/>
    <ArrayElementCount>3</ArrayElementCount>
    <ContainerDepth>5</ContainerDepth>
    <ObjectEntryCount>5</ObjectEntryCount>
    <ObjectEntryNameLength>20</ObjectEntryNameLength>
    <Source>request</Source>
    <StringValueLength>50</StringValueLength>
</JSONThreatProtection>

NonMessageVariable

Código de error

steps.jsonthreatprotection.NonMessageVariable

Cuerpo de la respuesta de error

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Variable var_name does not resolve to a Message"
        "detail": {
            "errorcode": "steps.jsonthreatprotection.NonMessageVariable"
        }
    }
}

Cuerpo de la respuesta de error de ejemplo

{
    "fault": {
        "faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
          Variable message.content does not resolve to a Message",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.NonMessageVariable"
        }
    }
}

Causa

Este error ocurre si el elemento <Source> en la política JSONThreatProtection está configurado en una variable que no es del tipo mensaje.

Las variables del tipo de mensaje representan respuestas y solicitudes HTTP completas. La solicitud, la respuesta y el mensaje de las variables de flujo integradas de Apigee Edge son del tipo mensaje. Para obtener más información acerca de las variables de mensaje, consulta la Referencia de variables.

Diagnóstico

  1. Identifica el nombre de la política JSONThreatProtection y el nombre de la variable de origen en el mensaje de error. Por ejemplo, en el siguiente mensaje de error, el nombre de la política es JSON-Threat-Protection-1, y la variable de origen es message.content:

    JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a Message
    
  2. Examina el elemento <Source> de la política JSONThreatProtection (identificada en el paso 1).

    En el siguiente ejemplo de la política JSONThreatProtection, <Source> se configura como message.content, en lugar de message:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
        <DisplayName>JSON Threat Protection-1</DisplayName>
        <Properties/>
        <ArrayElementCount>3</ArrayElementCount>
        <ContainerDepth>5</ContainerDepth>
        <ObjectEntryCount>5</ObjectEntryCount>
        <ObjectEntryNameLength>20</ObjectEntryNameLength>
        <Source>message.content</Source>
        <StringValueLength>50</StringValueLength>
    </JSONThreatProtection>
    

    Dado que message.content no es un tipo de mensaje, verás el siguiente error:

    JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does
    not resolve to a Message
    

Solución

Asegúrate de que el elemento <Source> de la política con errores JSONThreatProtection esté establecido en una variable de flujo de tipo mensaje que exista en el flujo en el que se ejecuta la política.

A fin de corregir la política, puedes modificar el elemento <Source> para especificar una variable que sea de tipo de mensaje. Por ejemplo, en el JSON con error JSONThreatProtection, podrías especificar el elemento <Source> como message:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
    <DisplayName>JSON Threat Protection-1</DisplayName>
    <Properties/>
    <ArrayElementCount>3</ArrayElementCount>
    <ContainerDepth>5</ContainerDepth>
    <ObjectEntryCount>5</ObjectEntryCount>
    <ObjectEntryNameLength>20</ObjectEntryNameLength>
    <Source>message</Source>
    <StringValueLength>50</StringValueLength>
</JSONThreatProtection>