Solución de problemas de errores de tiempo de ejecución de protección contra amenazas JSON

Estás consultando la documentación de Apigee y Apigee Hybrid.
Consulta la documentación de Apigee Edge.

ExecutionFailed

Código de error

steps.jsonthreatprotection.ExecutionFailed

Cuerpo de 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 generar muchos tipos diferentes de errores ExecutionFailed. En la siguiente tabla se muestran los diferentes tipos de errores y sus posibles causas:

Tipo de error Causa
Se ha superado la longitud del nombre de la entrada del objeto Se ha superado la longitud máxima de cadena permitida en el nombre de entrada de un objeto.
Se ha superado el número de entradas de objetos Se ha superado el número máximo de entradas permitido en un objeto.
Se ha superado el número de elementos de la matriz Se ha superado el número máximo de elementos permitidos en una matriz.
Se ha superado la profundidad del contenedor Se ha superado la profundidad máxima de anidación permitida.
Se ha superado la longitud del valor de la cadena Se ha superado la longitud máxima permitida para un valor de cadena.
Objeto JSON no válido La carga útil de JSON de entrada no es válida.

Se ha superado la longitud del nombre de entrada del objeto

Cuerpo de 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 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 produce si la carga útil del mensaje de entrada especificada por el elemento <Source> contiene un objeto JSON con un nombre de propiedad que supera la longitud máxima especificada 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 producirá 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 produce 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 de 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. Examine la política que ha identificado en el paso 1 y anote el valor especificado en el elemento <ObjectEntryNameLength>.

    Por ejemplo, en la siguiente política JSONThreatProtection, <ObjectEntryNameLength> se ha definido 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>5</ObjectEntryNameLength>
        <Source>request</Source>
        <StringValueLength>50</StringValueLength>
    </JSONThreatProtection>
    
  3. Examine el número de línea específico (identificado en el paso 1) de la carga útil de entrada y compruebe 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, ese es el motivo del error.

    A continuación, se muestra un ejemplo de carga útil de entrada:

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

    La carga útil de JSON que se muestra arriba tiene una propiedad llamada number en la línea 2, que tiene 6 caracteres (la longitud del nombre es 6). Como la longitud del nombre del objeto es superior a 5 (el valor especificado para el elemento <ObjectEntryNameLength>), se produce el siguiente error:

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

Resolución

Si la política JSONThreatProtection se ha diseñado para proteger contra cargas útiles con nombres de entrada de objeto que superen el valor definido, es normal que aparezca este mensaje de error. En ese caso, no es necesario que hagas nada más.

Sin embargo, si determina que se pueden especificar nombres de entrada de objeto más largos en la carga útil sin ninguna consecuencia, modifique <ObjectEntryNameLength> con un valor adecuado según sus requisitos.

Por ejemplo, si crees 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 ha superado el recuento de entradas de objetos

Cuerpo de 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 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 se produce si la carga útil del mensaje de entrada especificada por el elemento <Source> contiene un objeto JSON que incluye 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 produce este error.

Diagnóstico

  1. Revisa el mensaje de error para identificar el nombre de la política JSONThreatProtection y el número de línea en el que se supera el recuento 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 de 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. Anota el valor especificado en el elemento <ObjectEntryCount> de la política (identificado en el paso 1).

    En el siguiente ejemplo de política, <ObjectEntryCount> se define 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 comprueba si el número de entidades de la carga útil es mayor que el valor especificado para el elemento <ObjectEntryCount> (identificado en el paso 2). Si el número de objetos supera el recuento de entradas de objetos, ese es el motivo del error.

    A continuación, se muestra un ejemplo de carga útil de entrada:

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

    En la carga útil de JSON que se muestra arriba, la sexta entrada se produce en la línea 7 (company). Como el número de entradas de objeto en la carga útil JSON de entrada es superior a 5 (el valor especificado para el elemento <ObjectEntryCount>), se produce el siguiente error:

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

Resolución

Si la política JSONThreatProtection se ha diseñado para proteger contra cargas útiles con un número de entradas de objeto que supera un umbral específico, el mensaje de error es el esperado. En ese caso, no es necesario que hagas nada más.

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

Por ejemplo, si crees que puedes permitir hasta 10 entradas de objetos, 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 ha superado el número de elementos de la matriz

Cuerpo de 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 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 produce si la carga útil del mensaje de entrada especificada por el elemento <Source> contiene una matriz JSON con un número de elementos superior al 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 una matriz JSON con más de 3 elementos, se producirá este error.

Diagnóstico

  1. Revisa el mensaje de error para identificar el nombre de la política y el número de línea en el que se supera la longitud de la matriz. 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 de 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. Anota el valor especificado para el elemento <ArrayElementCount> de la política (identificado en el paso 1).

    En el siguiente ejemplo de política JSONThreatProtection, <ArrayElementCount> se ha definido 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 comprueba si la matriz especificada tiene un recuento superior al número especificado en el elemento <ArrayElementCount> (identificado en el paso 2). Si el número de elementos de la matriz supera el recuento, esa es la causa del error.

    A continuación, se muestra un ejemplo de carga útil de entrada:

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

    La carga útil de JSON que se muestra arriba tiene 5 elementos en la matriz llamada models en la línea 3. Como el número de elementos de la matriz es mayor que 3 (el valor especificado para el elemento <ArrayElementCount>), se produce el siguiente error:

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

Resolución

Si la política JSONThreatProtection se ha diseñado para proteger frente a cargas útiles con un umbral de recuento de arrays específico, es normal que aparezca el mensaje de error. En este caso, no es necesario que hagas nada más.

Sin embargo, si determinas que se puede permitir un número mayor de elementos en una matriz, modifica <ArrayElementCount> por un valor adecuado en función de tus requisitos.

Por ejemplo, si crees que puedes permitir hasta 5 elementos de matriz, 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>

Se ha superado la profundidad del contenedor

Cuerpo de respuesta de error

El tráfico de tiempo de ejecución devuelve 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 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 se produce si la carga útil del mensaje de entrada especificada por el elemento <Source> contiene un objeto JSON que incluye elementos JSON con una profundidad de contenedor que supera la profundidad máxima de contenedor especificada en el elemento <ContainerDepth> de la política. La profundidad del contenedor es la profundidad de anidación máxima permitida para los elementos JSON. Por ejemplo, un array que contenga un objeto que contenga otro objeto tendría una profundidad de contención de 3.

Por ejemplo, si el elemento <ContainerDepth> es 3, pero la carga útil de entrada tiene una profundidad de contenedor que supera este límite, se producirá 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 supera 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 de 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. Anota el valor especificado para el elemento <ContainerDepth> (identificado en el paso 1).

    En el siguiente ejemplo de política JSONThreatProtection, <ContainerDepth> se ha definido 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, se muestra un ejemplo de carga útil de entrada:

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

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

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

Resolución

Si la política JSONThreatProtection se ha diseñado para proteger frente a cargas útiles con profundidades de contenedor que superen el valor especificado, el mensaje de error es el esperado. En este caso, no es necesario que hagas nada más.

Sin embargo, si determina que se pueden usar profundidades de contenedor más altas, modifique <ContainerDepth> con un valor adecuado según sus requisitos.

Por ejemplo, si crees que puedes permitir profundidades de contenedor 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 ha superado la longitud del valor de la cadena

Cuerpo de 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 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 se produce si la carga útil del mensaje de entrada especificada por el elemento <Source> contiene elementos JSON que tienen valores con más caracteres de los permitidos por el elemento <StringValueLength>.

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

Diagnóstico

  1. Revisa el mensaje de error para identificar el nombre de la política y el número de línea en el que se supera la longitud de la cadena. En el siguiente ejemplo, el nombre de la política es JSON-Threat-Protection-1 andline 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. Anota el valor especificado en el elemento <StringValueLength> (identificado en el paso 1).

    En el siguiente ejemplo de política JSONThreatProtection, <StringValueLength> se ha definido como 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. Examine el número de línea específico (identificado en el paso 1) de la carga útil de entrada y compruebe si la longitud del valor es mayor que el número de caracteres especificado para el elemento <StringValueLength> (identificado en el paso 2). Si la longitud del valor supera el límite, esa es la causa del error.

    A continuación, se muestra 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. Como la longitud del valor es superior a 50, el valor especificado en el elemento <StringValueLength>, se produce el siguiente error:

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

Resolución

Si la política JSONThreatProtection se ha diseñado para proteger contra cargas útiles con valores que superen una longitud de cadena específica, se espera que se muestre el mensaje de error. En este caso, no es necesario que hagas nada más.

Sin embargo, si determina que se puede especificar una longitud de valor mayor en la carga útil, modifique <StringValueLength> por un valor adecuado en función de sus requisitos.

Por ejemplo, si cree que puede permitir un valor de hasta 90 caracteres, modifique 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>

No es un objeto JSON válido

Cuerpo de respuesta de error

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

Cuerpo de 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 produce si la carga útil del mensaje de entrada especificada por el elemento <Source> de 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 en el que se ha producido el error. En el siguiente ejemplo, el nombre de la política es JSON-Threat-Protection-1 andline 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 comprueba si el objeto JSON que se ha enviado en la carga útil es un objeto JSON válido.

    A continuación, se muestra un ejemplo de carga útil de entrada:

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

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

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

Resolución

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

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

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

SourceUnavailable

Código de error

steps.jsonthreatprotection.SourceUnavailable

Cuerpo de respuesta de error

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

Cuerpo de 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 message especificada en el elemento <Source> de la política JSONThreatProtection es:

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

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

Diagnóstico

  1. Identifique el nombre de la política 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 Source es requests:

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

    En el siguiente ejemplo de política JSONThreatProtection, el elemento <Source> se ha definido 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 del elemento <Source> son request, response o message. Como "requests" no es un valor válido y no existe en el flujo en el que se ejecuta la política, se produce el siguiente error:

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

Resolución

Asegúrate de que la variable definida en el elemento <Source> de la política JSONThreatProtection fallida se haya definido como request, response o message y que exista en el flujo en el que se ejecuta la política.

Para corregir la política JSONThreatProtection de ejemplo que se muestra arriba, puedes modificar el elemento <Source> para 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 respuesta de error

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

Cuerpo de 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 se produce si el elemento <Source> de la política JSONThreatProtection se asigna a una variable que no es del tipo message.

Las variables de tipo de mensaje representan solicitudes y respuestas HTTP completas. Las variables de flujo de Apigee integradas request, response y message son de tipo message. Para obtener más información sobre 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 Source 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 Source 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 (identificado en el paso 1).

    En el siguiente ejemplo de política JSONThreatProtection, <Source> se ha definido 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>
    

    Como message.content no es de tipo mensaje, se produce el siguiente error:

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

Resolución

Asegúrate de que el elemento <Source> de la política JSONThreatProtection fallida se haya definido en una variable de flujo de tipo message que exista en el flujo en el que se ejecuta la política.

Para corregir la política, puedes modificar el elemento <Source> para especificar una variable de tipo mensaje. Por ejemplo, en JSONThreatProtection, puede 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>