Resolução de problemas de erros de tempo de execução da proteção contra ameaças JSON

Está a ver a documentação do Apigee e do Apigee Hybrid.
Ver documentação do Apigee Edge.

ExecutionFailed

Código de erro

steps.jsonthreatprotection.ExecutionFailed

Corpo da resposta de erro

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

Tipos de erros e possíveis causas

A política JSONThreatProtection pode gerar muitos tipos diferentes de erros ExecutionFailed. A tabela abaixo apresenta os diferentes tipos de erros e as respetivas causas possíveis:

Tipo de erro Causa
O comprimento do nome da entrada do objeto foi excedido O comprimento máximo da string permitido no nome de entrada de um objeto foi excedido.
Número de entradas de objetos excedido O número máximo de entradas permitidas num objeto foi excedido.
Excedeu a contagem de elementos da matriz O número máximo de elementos permitidos numa matriz foi excedido.
Profundidade do contentor excedida A profundidade de aninhamento máxima permitida foi excedida.
Comprimento do valor da string excedido O comprimento máximo permitido para um valor de string foi excedido.
Objeto JSON inválido O payload JSON de entrada é inválido.

O comprimento do nome da entrada do objeto foi excedido

Corpo da resposta de erro

{
    "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"
        }
    }
}

Exemplo de corpo da resposta de erro

{
    "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 erro ocorre se o payload da mensagem de entrada especificado pelo elemento <Source> contiver um objeto JSON com um nome de propriedade que exceda o comprimento máximo especificado no elemento <ObjectEntryNameLength>.

Por exemplo, se o elemento <ObjectEntryNameLength> for especificado como 5 na política, mas o payload da mensagem de entrada tiver uma propriedade JSON cujo nome exceda 5 carateres, este erro é gerado.

Diagnóstico

  1. Examine a mensagem de erro para identificar o nome da política JSONThreatProtection e o número da linha onde ocorre o nome da entrada longo. Por exemplo, na seguinte mensagem de erro, o nome da política JSONThreatProtection é JSON-Threat-Protection-1 e o número da linha na carga útil é 2.

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name
    length at line 2
    
  2. Examine a política que identificou no passo 1 e tome nota do valor especificado no elemento <ObjectEntryNameLength>.

    Por exemplo, na seguinte política JSONThreatProtection, <ObjectEntryNameLength> está 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 o número da linha específico (identificado no passo 1) da carga útil de entrada e verifique se o comprimento do nome do objeto é superior ao valor especificado no elemento <ObjectEntryNameLength> (identificado no passo 2). Se o comprimento do nome do objeto exceder esse número, essa é a causa do erro.

    Segue-se um exemplo de um payload de entrada:

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

    A carga útil JSON apresentada acima tem uma propriedade denominada number na linha 2 com 6 carateres (o comprimento do nome é 6). Uma vez que o comprimento do nome do objeto é superior a 5 (o valor especificado para o elemento <ObjectEntryNameLength>), recebe o seguinte erro:

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

Resolução

Se a política JSONThreatProtection se destinar a proteger contra payloads com nomes de entradas de objetos que excedam o valor definido, a mensagem de erro é esperada. Neste caso, não é necessária nenhuma ação adicional.

No entanto, se determinar que é possível especificar nomes de entradas de objetos mais longos no payload sem qualquer consequência, modifique o <ObjectEntryNameLength> para um valor adequado com base nos seus requisitos.

Por exemplo, se considerar que pode permitir nomes de objetos com um comprimento máximo de 10 carateres, modifique a política JSONThreatProtection da seguinte forma:

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

O número de entradas de objetos foi excedido

Corpo da resposta de erro

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

Exemplo de corpo da resposta de erro

{
    "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 erro ocorre se o payload da mensagem de entrada especificado pelo elemento <Source> contiver um objeto JSON com mais entradas (propriedades) do que o valor especificado no elemento <ObjectEntryCount> da política.

Por exemplo, se o elemento <ObjectEntryCount> for 5, mas o payload JSON de entrada tiver mais de 5 entradas, é apresentado este erro.

Diagnóstico

  1. Examine a mensagem de erro para identificar o nome da política JSONThreatProtection e o número da linha em que a contagem de entradas é excedida. Por exemplo, na seguinte mensagem de erro, o nome da política é JSON-Threat-Protection-1 e o número da linha no payload é 7:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count
    at line 7
    
  2. Tome nota do valor especificado no elemento <ObjectEntryCount> da política (identificado no passo 1).

    No exemplo de política seguinte, <ObjectEntryCount> está 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>6</ObjectEntryNameLength>
        <Source>request</Source>
        <StringValueLength>50</StringValueLength>
    </JSONThreatProtection>
    
  3. Examine o número de linha específico (identificado no passo 1) da carga útil de entrada e verifique se o número de entidades na carga útil é superior ao valor especificado para o elemento <ObjectEntryCount> (identificado no passo 2). Se o número de objetos exceder a contagem de entradas de objetos, essa é a causa do erro.

    Segue-se um exemplo de um payload de entrada:

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

    No payload de JSON apresentado acima, a 6.ª entrada ocorre na linha n.º 7 (company). Uma vez que a contagem das entradas de objetos no payload JSON de entrada é superior a 5 (o valor especificado para o elemento <ObjectEntryCount>), recebe o seguinte erro:

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

Resolução

Se a política JSONThreatProtection se destinar a proteger contra payloads com um número de entradas de objetos que excede um limite específico, a mensagem de erro é esperada. Neste caso, não tem de fazer mais nada.

No entanto, se determinar que é possível incluir mais entradas de objetos no payload sem qualquer consequência, modifique o <ObjectEntryCount> para um valor adequado com base nos seus requisitos.

Por exemplo, se considerar que pode permitir até 10 entradas de objetos, modifique a política JSONThreatProtection da seguinte forma:

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

Excedeu a contagem de elementos da matriz

Corpo da resposta de erro

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

Exemplo de corpo da resposta de erro

{
    "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 erro ocorre se a carga útil da mensagem de entrada especificada pelo elemento <Source> contiver uma matriz JSON com um número de elementos superior ao número especificado no elemento <ArrayElementCount> da política.

Por exemplo, se o elemento <ArrayElementCount> for especificado como 3, mas o payload de entrada tiver uma matriz JSON com mais de 3 elementos, este erro é lançado.

Diagnóstico

  1. Examine a mensagem de erro para identificar o nome da política e o número da linha onde o comprimento da matriz é excedido. Por exemplo, na seguinte mensagem de erro, o nome da política é JSON-Threat-Protection-1 e o número da linha no payload é 3:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count at line 3
    
  2. Tome nota do valor especificado para o elemento <ArrayElementCount> da política (identificado no passo 1).

    No exemplo de política JSONThreatProtection seguinte, <ArrayElementCount> está 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. Examine o número da linha específico (identificado no passo 1) da carga útil de entrada e verifique se a matriz especificada aí tem uma contagem superior ao número especificado no elemento <ArrayElementCount> (identificado no passo 2). Se o número de elementos da matriz exceder a contagem, essa é a causa do erro.

    Segue-se um exemplo de um payload de entrada:

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

    O payload JSON apresentado acima tem 5 elementos na matriz denominada models na linha 3. Uma vez que o número de elementos da matriz é superior a 3 (o valor especificado para o elemento <ArrayElementCount>), recebe o seguinte erro:

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

Resolução

Se a política JSONThreatProtection se destinar a proteger contra payloads com um limite específico de contagem de matrizes, a mensagem de erro é esperada. Neste caso, não é necessária nenhuma ação adicional.

No entanto, se determinar que pode permitir um número superior de elementos numa matriz, modifique <ArrayElementCount> para um valor adequado com base nos seus requisitos.

Por exemplo, se considerar que pode permitir até 5 elementos de matriz, modifique a política da seguinte forma:

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

Profundidade do contentor excedida

Corpo da resposta de erro

O tráfego de tempo de execução devolve um código de resposta 500 com o seguinte erro:

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

Exemplo de corpo da resposta de erro

{
    "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 erro ocorre se o payload da mensagem de entrada especificado pelo elemento <Source> contiver um objeto JSON que contenha elementos JSON com uma profundidade do contentor que exceda a profundidade máxima do contentor especificada no elemento <ContainerDepth> da política. A profundidade do contentor é a profundidade aninhada máxima permitida para elementos JSON. Por exemplo, uma matriz que contenha um objeto que contenha um objeto resultaria numa profundidade de contenção de 3.

Por exemplo, se o elemento <ContainerDepth> for 3, mas o payload de entrada tiver uma profundidade do contentor que excede este limite, é gerado este erro.

Diagnóstico

  1. Examine a mensagem de erro para identificar o nome da política JSONThreatProtection e o número da linha onde a profundidade do contentor é excedida. Por exemplo, na seguinte mensagem de erro, o nome da política é JSON-Threat-Protection-1 e o número da linha no payload é 5.

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at
    line 5
    
  2. Tome nota do valor especificado para o elemento <ContainerDepth> (identificado no passo 1).

    No exemplo de política JSONThreatProtection seguinte, <ContainerDepth> está 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. Examine o número de linha específico (identificado no passo 1) da carga útil de entrada e verifique se a profundidade do contentor na carga útil é superior ao valor especificado no elemento <ContainerDepth> (identificado no passo 2). Se a profundidade do contentor exceder a contagem, essa é a causa do erro.

    Segue-se um exemplo de um payload de entrada:

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

    O payload de JSON apresentado acima tem uma profundidade do contentor de 6 na linha 5. Uma vez que a profundidade é superior a 5, o valor especificado para o elemento <ContainerDepth> da política JSONThreatProtection gera o seguinte erro:

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

Resolução

Se a política JSONThreatProtection se destinar a proteger contra payloads com profundidades de contentores que excedam o valor especificado, a mensagem de erro é esperada. Neste caso, não é necessária nenhuma ação adicional.

No entanto, se determinar que profundidades do contentor mais elevadas são aceitáveis, modifique o <ContainerDepth> para um valor adequado com base nos seus requisitos.

Por exemplo, se considerar que pode permitir profundidades de contentores até 10, modifique a política da seguinte forma:

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

Comprimento do valor da string excedido

Corpo da resposta de erro

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

Exemplo de corpo da resposta de erro

{
    "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 erro ocorre se o payload da mensagem de entrada especificado pelo elemento <Source> contiver elementos JSON com valores que têm mais carateres do que o permitido pelo elemento <StringValueLength>.

Por exemplo, se o elemento <StringValueLength> estiver definido como 50 na política, mas a carga útil de entrada tiver um ou mais elementos cujos valores contenham mais de 50 carateres, é gerado este erro.

Diagnóstico

  1. Examine a mensagem de erro para identificar o nome da política e o número da linha onde o comprimento da string é excedido. No exemplo seguinte, o nome da política é JSON-Threat-Protection-1 andline no payload 3.

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3
    
  2. Tome nota do valor especificado para o elemento <StringValueLength> no (identificado no passo 1).

    No exemplo de política JSONThreatProtection seguinte, <StringValueLength> está 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 o número de linha específico (identificado no passo 1) da carga útil de entrada e verifique se o comprimento do valor é superior ao número de carateres especificado para o elemento <StringValueLength> (identificado no passo 2). Se o comprimento do valor exceder o limite, essa é a causa do erro.

    Segue-se um exemplo de um payload de entrada:

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

    O payload JSON apresentado acima tem um objeto denominado Place Name cujo valor Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu tem 85 carateres na linha 3. Uma vez que o comprimento do valor é superior a 50, o valor especificado no elemento <StringValueLength>, recebe o seguinte erro:

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

Resolução

Se a política JSONThreatProtection se destinar a proteger contra payloads com valores que excedam um comprimento de string específico, a mensagem de erro é esperada. Neste caso, não é necessária nenhuma ação adicional.

No entanto, se determinar que é possível especificar um comprimento do valor mais longo no payload, modifique o <StringValueLength> para um valor adequado com base nos seus requisitos.

Por exemplo, se considerar que pode permitir um valor com um comprimento máximo de 90, modifique a política da seguinte forma:

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

Não é um objeto JSON válido

Corpo da resposta de erro

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

Exemplo de corpo da resposta de erro

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

Causa

Este erro ocorre se a carga útil da mensagem de entrada especificada pelo elemento <Source> na política JSONThreatProtection não for um objeto JSON válido.

Diagnóstico

  1. Examine a mensagem de erro para identificar o nome da política e o número da linha onde o erro ocorreu. No exemplo seguinte, o nome da política é JSON-Threat-Protection-1 andline no payload 2.

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
    
  2. Examine o número da linha específico (identificado no passo 1) do payload de entrada e verifique se o objeto JSON transmitido no payload é, de facto, um objeto JSON válido.

    Segue-se um exemplo de um payload de entrada:

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

    No payload JSON apresentado acima, a linha 3 não tem ":" (dois pontos). Uma vez que não é um objeto JSON válido, recebe o seguinte erro:

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

Resolução

Certifique-se de que um payload JSON de entrada válido é transmitido a qualquer proxy de API que inclua a política JSONThreatProtection.

Para o exemplo descrito acima, modifique o payload JSON da seguinte forma:

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

SourceUnavailable

Código de erro

steps.jsonthreatprotection.SourceUnavailable

Corpo da resposta de erro

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

Exemplo de corpo da resposta de erro

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

Causa

Este erro ocorre se a variável message especificada no elemento <Source> da política JSONThreatProtection for:

  • Fora do âmbito (não disponível no fluxo específico onde a política está a ser executada)
  • Não é um dos valores válidos request, response ou message

Por exemplo, este erro ocorre se o elemento <Source> na política estiver definido como uma variável que não existe no fluxo onde a política é executada.

Diagnóstico

  1. Identifique o nome da política e o nome da variável de origem na mensagem de erro. Por exemplo, na seguinte mensagem de erro, o nome da política é JSON-Threat-Protection-1 e a variável Source é requests:

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

    No exemplo de política JSONThreatProtection seguinte, o elemento <Source> está 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>
    

    Os valores válidos para o elemento <Source> são request, response ou message. Uma vez que requests não é um valor válido e não existe no fluxo em que a política está a ser executada, recebe o seguinte erro:

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

Resolução

Certifique-se de que a variável definida no elemento <Source> da política JSONThreatProtection com falha está definida como request, response ou message e existe no fluxo onde a política é executada.

Para corrigir a política JSONThreatProtection de exemplo apresentada acima, pode modificar o elemento <Source> para usar a variável request, porque existe no fluxo de pedidos:

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

steps.jsonthreatprotection.NonMessageVariable

Corpo da resposta de erro

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

Exemplo de corpo da resposta de erro

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

Causa

Este erro ocorre se o elemento <Source> na política JSONThreatProtection estiver definido como uma variável que não seja do tipo message.

As variáveis de tipo de mensagem representam pedidos e respostas HTTP completos. As variáveis de fluxo do Apigee incorporadas request, response e message são do tipo message. Para saber mais sobre as variáveis de mensagens, consulte a referência de variáveis.

Diagnóstico

  1. Identifique o nome da política JSONThreatProtection e o nome da variável de origem na mensagem de erro. Por exemplo, na seguinte mensagem de erro, o nome da política é JSON-Threat-Protection-1e a variável Source é message.content:

    JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a Message
    
  2. Examine o elemento <Source> da política JSONThreatProtection (identificado no passo 1).

    No exemplo de política JSONThreatProtection seguinte, <Source> está definido como message.content em vez 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>
    

    Uma vez que message.content não é do tipo mensagem, recebe o erro:

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

Resolução

Certifique-se de que o elemento <Source> na política JSONThreatProtection com falha está definido como uma variável de fluxo do tipo message que existe no fluxo onde a política é executada.

Para corrigir a política, pode modificar o elemento <Source> para especificar uma variável do tipo mensagem. Por exemplo, no JSONThreatProtection com falha, pode especificar o 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>