Résoudre les erreurs de déploiement de la règle DecodeJWT

Vous consultez la documentation d'Apigee et d'Apigee hybrid.
Consultez la documentation d'Apigee Edge.

InvalidEmptyElement

Message d'erreur

Le déploiement du proxy d'API par le biais de l'interface utilisateur ou l'API Apigee échoue avec le message d'erreur suivant :

Error Saving Revision
Invalid empty element : policy(policy_name) element(Source)

Exemple de message d'erreur

Error Saving Revision
Invalid empty element : policy(Decode_JWT) element(Source).

Exemple de capture d'écran

Dans l'interface utilisateur d'Apigee, une boîte de dialogue d'erreur s'affiche :

Erreur lors de l'enregistrement de la révision.

Cause

Cette erreur se produit si la variable de flux contenant le jeton JWT à décoder n'est pas spécifiée dans l'élément <Source> de la règle DecodeJWT.

Par exemple, l'erreur se produira si l'élément <Source> ne contient pas de valeur, comme indiqué ci-dessous :

<Source></Source>

Diagnostic

  1. Identifiez le nom de la stratégie DecodeJWT et le nom de l'élément vide dans le message d'erreur. Par exemple, dans le message d'erreur suivant, le nom de la règle DecodeJWT est Decode_JWT et le nom de l'élément est Source.

    Invalid empty element : policy(Decode_JWT) element(Source).
    
  2. Examinez la règle DecodeJWT et vérifiez si l'élément identifié à l'étape 1 est vide. Si l'élément est vide, il s'agit de la cause de l'erreur.

    Voici un exemple de stratégie DecodeJWT :

    <DecodeJWT name="Decode_JWT">
        <DisplayName>JWT Decode HS256</DisplayName>
        <Source></Source>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    </DecodeJWT>
    

    Comme l'élément <Source> est vide, l'erreur suivante s'affiche :

    Invalid empty element : policy(Decode_JWT) element(Source).
    

Solution

Assurez-vous que l'élément <Source> spécifie un jeton JWT valide dans une variable de flux.

Pour résoudre le problème dans l'exemple de règle DecodeJWT, vous pouvez spécifier la variable de flux contenant un jeton JWT valide dans l'élément <Source>.

<DecodeJWT name="Decode_JWT">
    <DisplayName>JWT Decode HS256</DisplayName>
    <Source>var.jwt</Source>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
</DecodeJWT>