Esta é a documentação da Apigee e da Apigee híbrida.
    Confira a documentação da Apigee Edge.
  
FailedToDecode
Código do erro
steps.jwt.FailedToDecode
Corpo da resposta de erro
{
  "fault": {
    "faultstring": "Failed to Decode Token: policy({0})",
    "detail": {
       "errorcode": "steps.jwt.FailedToDecode"
     }
  }
}
Causa
Esse erro ocorrerá se o JSON Web Token (JWT) especificado no elemento <Source> da política de decodificação de JWT estiver malformado, inválido ou não puder ser decodificado.
Um JWT estruturado corretamente precisa conter um cabeçalho, um payload e uma assinatura no seguinte formato: header.payload.signature. Se o JWT passado para a política DecodeJWT não tiver uma parte do componente, você receberá o erro. Por exemplo, se o JWT tiver apenas payload.signature, mas não tiver header, o erro ocorrerá.
Diagnóstico
- Identifique a variável especificada no elemento - <Source>da política de decodificação do JWT. Essa variável precisa conter o JWT.- Veja um exemplo de política de decodificação de JWT: - <DecodeJWT name="JWT-Decode-HS256"> <DisplayName>JWT Verify HS256</DisplayName> <Source>request.header.authorization</Source> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> </DecodeJWT>- No exemplo acima, o JWT deve estar contido no cabeçalho de solicitação da autorização. 
- Analise a variável identificada na etapa 1 e verifique se o JWT é válido. Se o JWT de entrada não for válido, essa é a causa do erro. - No exemplo de solicitação de API abaixo, o JWT de entrada é transmitido no cabeçalho da solicitação de autorização: - curl -v "http://$EXTERNAL_IP/v1/decodeJWT" -H "Authorization: Bearer eyJ1c2VySWQiOiJiMDhmODZhZi0zNWRhLTQ4ZjItOGZhYi1jZWYzOTA0NjYwYmQifQ.-xN_h82PHVTCMA9vdoHrcZxH-x5mb11y1537t3rGzcM" - Em que - $EXTERNAL_IPé o IP do balanceador de carga externo. Esse endereço IP é exposto à Internet. Para mais informações, consulte Personalize o roteamento de acesso.- O exame de fechamento do JWT mostra que o formato - payload.signatureé inválido. O formato esperado do JWT é- header.payload.signature. Como resultado, a política de decodificação de JWT falha com o erro :- "faultstring": "Failed to Decode Token: policy({0})"
Resolução
Verifique se o JWT transmitido para a política de decodificação de JWT contém os três elementos, está formatado corretamente e se pode ser decodificado.
Para corrigir o exemplo mostrado acima, transmita um JWT válido com o formato header.payload.signature.  Para isso, faça a chamada de API usando o comando cURL da seguinte forma:
curl -v "http://$EXTERNAL_IP/v1/decodeJWT" -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOiJiMDhmODZhZi0zNWRhLTQ4ZjItOGZhYi1jZWYzOTA0NjYwYmQifQ.-xN_h82PHVTCMA9vdoHrcZxH-x5mb11y1537t3rGzcM"
    Em que $EXTERNAL_IP é o IP do balanceador de carga externo.
    Esse endereço IP é exposto à Internet. Para mais informações, consulte
    Personalize o roteamento de acesso.
  
InvalidToken
Código do erro
steps.jwt.InvalidToken
Corpo da resposta de erro
{
  "fault": {
    "faultstring": "Invalid token: policy({0})",
    "detail": {
      "errorcode": "steps.jwt.InvalidToken"
     }
  }
}
Causa
Esse erro ocorrerá se a variável de fluxo especificada no elemento <Source> da política de decodificação de JWT for:
- fora do escopo (não disponível no fluxo específico em que a política está sendo executada) ou
- não é possível resolver (não está definida)
Diagnóstico
- Identifique a variável especificada no elemento - <Source>da política de decodificação do JWT. Essa variável precisa conter o JWT.- Veja um exemplo de política de decodificação de JWT: - <DecodeJWT name="JWT-Decode-HS256"> <DisplayName>JWT Verify HS256</DisplayName> <Source>request.header.authorization</Source> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> </DecodeJWT>- No exemplo acima, o cabeçalho de solicitação de autorização deve conter o JWT. 
- Determine se a variável identificada na Etapa 1 está definida e disponível no fluxo em que a política de decodificação do JWT é executada. 
- Se a variável for: - fora do escopo (não disponível no fluxo específico em que a política está sendo executada) ou
- não é possível resolver (não está definida)
 - essa será a causa do erro. - No exemplo de solicitação de API abaixo, o JWT não é transmitido no cabeçalho de solicitação de autorização do usuário. - curl -v "http://$EXTERNAL_IP/v1/decodeJWT" 
    Em que $EXTERNAL_IP é o IP do balanceador de carga externo.
    Esse endereço IP é exposto à Internet. Para mais informações, consulte
    Personalize o roteamento de acesso.
  
Because the authorization request header is not passed, the Decode JWT policy fails with the error:
```
"faultstring": "Invalid token: policy({0})"
```
Resolução
Verifique se a variável referenciada no elemento <Source> da política de decodificação de JWT está definida, contém um JWT válido (decodificável) e está disponível no fluxo específico em que a política de decodificação de JWT está sendo executada.
Para corrigir o exemplo mostrado acima, transmita um JWT válido no cabeçalho de autorização de solicitação. Para isso, faça a chamada de API usando o comando cURL da seguinte forma:
curl -v "http://$EXTERNAL_IP/v1/decodeJWT" -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOiJiMDhmODZhZi0zNWRhLTQ4ZjItOGZhYi1jZWYzOTA0NjYwYmQifQ.-xN_h82PHVTCMA9vdoHrcZxH-x5mb11y1537t3rGzcM"
    Em que $EXTERNAL_IP é o IP do balanceador de carga externo.
    Esse endereço IP é exposto à Internet. Para mais informações, consulte
    Personalize o roteamento de acesso.