Vous consultez la documentation d'Apigee et d'Apigee hybrid.
Consultez la documentation d'Apigee Edge.
UnresolvedVariable
Code d'erreur
steps.basicauthentication.UnresolvedVariable
Corps de la réponse d'erreur
{
"fault": {
"faultstring": "Unresolved variable : [variable_name]",
"detail": {
"errorcode": "steps.basicauthentication.UnresolvedVariable"
}
}
}
Exemple de message d'erreur
{
"fault": {
"faultstring": "Unresolved variable : request.header.Authorization",
"detail": {
"errorcode": "steps.basicauthentication.UnresolvedVariable"
}
}
}
Cause
Cette erreur se produit si la variable contenant la chaîne encodée en base64 spécifiée dans l'élément <Source>
de la règle d'authentification de base est l'un des éléments suivants :
- est hors de portée (non disponible dans le flux spécifique où la règle est exécutée)
- impossible à résoudre (non définie)
Par exemple, cette erreur se produit si la règle BasicAuthentication a une variable spécifiée comme request.header.Authorization
dans l'élément <Source>
, mais que l'en-tête Authorization n'est pas transmis dans le cadre de la requête API.
Diagnostic
Identifiez la variable utilisée pour l'élément
<Source>
dans la règle BasicAuthentication. Vous trouverez ces informations dans l'élémentfaultstring
de la réponse d'erreur. Par exemple, dans l'exemplefaultstring,
suivant, la variable utilisée pour l'élément<Source>
estrequest.header.Authorization
:"faultstring": "Unresolved variable : request.header.Authorization"
Examinez toutes les règles de BasicAuthentication dans le proxy d'API spécifique où l'échec a eu lieu. Il peut y avoir une ou plusieurs règles BasicAuthentication. Identifiez la ou les règles BasicAuthentication spécifiques dans lesquelles la variable spécifiée dans l'élément
<Source>
correspond au nom de la variable identifiée dans la chaîne d'erreur (étape 1 ci-dessus).Par exemple, la règle suivante définit l'élément
<Source>
sur une variable nomméerequest.header.Authorization
, qui correspond au contenu defaultstring
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <BasicAuthentication name="DecodeBaseAuthHeaders"> <DisplayName>Decode Basic Authentication Header</DisplayName> <Operation>Decode</Operation> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <User ref="request.header.username"/> <Password ref="request.header.password"/> <Source>request.header.Authorization</Source> </BasicAuthentication>
Déterminez si la variable est définie et disponible dans le flux dans lequel la règle BasicAuthentication est exécutée.
Si la variable est :
- est hors de portée (non disponible dans le flux spécifique où la règle est exécutée)
- impossible à résoudre (non définie)
alors il s'agit de la cause de l'erreur.
Dans l'exemple de règle BasicAuthentication présenté ci-dessus, la variable
request.header.Authorization
n'a pas été transmise dans le cadre de la requête. Cela signifie que la requête d'API a été effectuée sans l'en-tête Authorization, comme illustré ci-dessous:curl -v "http://$EXTERNAL_IP/basicauth"
Où
$EXTERNAL_IP
est l'adresse IP de l'équilibreur de charge externe. Cette adresse IP est exposée sur Internet. Pour en savoir plus, consultez Personnaliser le routage des accès.Comme la variable utilisée dans la règle BasicAuthentication n'est pas disponible, vous recevez le code d'erreur :
steps.basicauthentication.UnresolvedVariable
Solution
Vérifiez que la variable utilisée dans la règle BasicAuthentication est définie ou transmise en tant qu'entrée et disponible dans le flux où l'exécution de la règle est effectuée.
Pour résoudre le problème avec l'exemple de règle BasicAuthentication décrit ci-dessus, envoyez une requête API comme indiqué ci-dessous :
curl -v "http://$EXTERNAL_IP/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
Où $EXTERNAL_IP
est l'adresse IP de l'équilibreur de charge externe.
Cette adresse IP est exposée sur Internet. Pour en savoir plus, consultez Personnaliser le routage des accès.
InvalidBasicAuthenticationSource
Code d'erreur
steps.basicauthentication.InvalidBasicAuthenticationSource
Corps de la réponse d'erreur
{
"fault": {
"faultstring": "Source variable : [variable_name] for basic authentication decode policy is not valid",
"detail": {
"errorcode": "steps.basicauthentication.InvalidBasicAuthenticationSource"
}
}
}
Exemple de message d'erreur
{
"fault": {
"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid",
"detail": {
"errorcode": "steps.basicauthentication.InvalidBasicAuthenticationSource"
}
}
}
Causes possibles
Les causes possibles de cette erreur sont les suivantes :
Cause | Description |
---|---|
Variable source non valide | La variable d'entrée source d'une règle BasicAuthentication n'est pas une chaîne valide encodée en base64. |
L'en-tête est incorrect | L'en-tête contenant la chaîne encodée en base64 transmise à la règle BasicAuthentication est incorrect. |
Cause : variable source non valide
Cette erreur se produit si la variable contenant la chaîne encodée en base64 spécifiée dans l'élément <Source>
de la règle BasicAuthentication ne contient pas de valeur valide.
Par exemple, cette erreur se produit si la variable spécifiée dans l'élément <Source>
de la règle BasicAuthentication ne comporte pas de chaîne encodée en base64 valide.
Diagnostic
Identifiez la variable utilisée pour l'élément
<Source>
dans la règle BasicAuthentication. Vous trouverez ces informations dans l'élémentfaultstring
de la réponse d'erreur. Par exemple, dans l'exemplefaultstring,
suivant, la variable utilisée pour l'élément<Source>
estrequest.header.Authorization
:"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"
Examinez toutes les règles de BasicAuthentication dans le proxy d'API spécifique où l'échec a eu lieu. Il peut y avoir une ou plusieurs règles BasicAuthentication. Identifiez la ou les règles BasicAuthentication spécifiques dans lesquelles la variable spécifiée dans l'élément
<Source>
correspond au nom de la variable identifiée dans la chaîne d'erreur (étape 1 ci-dessus).Par exemple, la règle suivante définit l'élément
<Source>
sur une variable nomméerequest.header.Authorization
, qui correspond au contenu defaultstring
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <BasicAuthentication name="DecodeBaseAuthHeaders"> <DisplayName>Decode Basic Authentication Header</DisplayName> <Operation>Decode</Operation> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <User ref="request.header.username"/> <Password ref="request.header.password"/> <Source>request.header.Authorization</Source> </BasicAuthentication>
Si la valeur stockée dans la variable spécifiée dans l'élément
<Source>
n'est pas une chaîne valide encodée en base64, alors c'estla cause de l'erreur.
Dans l'exemple de règle BasicAuthentication présenté ci-dessus, la variable
request.header.Authorization
envoyée par le client en tant qu'en-tête n'était pas valide, comme indiqué ci-dessous:curl -v "http://$EXTERNAL_IP /basicauth" -H "Authorization: Basic 23435"
Où
$EXTERNAL_IP
est l'adresse IP de l'équilibreur de charge externe. Cette adresse IP est exposée sur Internet. Pour en savoir plus, consultez Personnaliser le routage des accès.Comme la variable
request.header.Authorization
contient une chaîne23435"
non valide encodée en base64, vous recevez le code d'erreur :steps.basicauthentication.InvalidBasicAuthenticationSource
Solution
Vérifiez que la variable spécifiée pour l'élément <Source>
dans la règle BasicAuthentication dispose d'une chaîne valide encodée en base64.
Pour résoudre le problème avec l'exemple de règle BasicAuthentication décrit ci-dessus, envoyez une requête API en transmettant une chaîne valide encodée en base64 dans l'en-tête Authorization comme illustré ci-dessous :
curl -v "http://$EXTERNAL_IP/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
Où $EXTERNAL_IP
est l'adresse IP de l'équilibreur de charge externe.
Cette adresse IP est exposée sur Internet. Pour en savoir plus, consultez Personnaliser le routage des accès.
Cause : l'en-tête est incorrect/non valide
Cette erreur se produit si l'en-tête transmis à la règle BasicAuthentication est incorrect ou non valide.
Par exemple, cette erreur se produit si la règle BasicAuthentication a une variable spécifiée comme request.header.Authorization
dans l'élément <Source>
et que l'en-tête transmis dans le cadre de la requête API est incorrect/non valide.
Diagnostic
Identifiez la variable utilisée pour l'élément
<Source>
dans la règle BasicAuthentication. Vous trouverez ces informations dans l'élémentfaultstring
de la réponse d'erreur. Par exemple, dans l'exemple<Source>
suivant, la variable utilisée pour l'élémentrequest.header.Authorization
est :"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"
Examinez toutes les règles de BasicAuthentication dans le proxy d'API spécifique où l'échec a eu lieu. Il peut y avoir une ou plusieurs règles BasicAuthentication. Identifiez la ou les règles BasicAuthentication spécifiques dans lesquelles la variable spécifiée dans l'élément
<Source>
correspond au nom de la variable identifiée dans la chaîne d'erreur (étape 1 ci-dessus).Par exemple, la règle suivante définit l'élément
<Source>
sur une variable nomméerequest.header.Authorization
, qui correspond au contenu defaultstring
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <BasicAuthentication name="DecodeBaseAuthHeaders"> <DisplayName>Decode Basic Authentication Header</DisplayName> <Operation>Decode</Operation> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <User ref="request.header.username"/> <Password ref="request.header.password"/> <Source>request.header.Authorization</Source> </BasicAuthentication>
Si la variable est un en-tête et qu'elle est incorrecte ou non valide (elle ne présente pas le type d'authentification ou si le type d'authentification n'est pas "Basic"), alors c'est la cause de l'erreur.
L'en-tête "Authorization" se présente sous la forme suivante :
Authorization: <Authentication type> <credentials>
Un en-tête incorrect peut être transmis à la règle BasicAuthentication de deux manières :
Exemple 1: Aucun type d'authentification dans l'en-tête:
curl -v "http://$EXTERNAL_IP/basicauth" -H "Authorization: YWthc2g6MTIz"
Où
$EXTERNAL_IP
est l'adresse IP de l'équilibreur de charge externe. Cette adresse IP est exposée sur Internet. Pour en savoir plus, consultez Personnaliser le routage des accès.Dans l'exemple ci-dessus, l'en-tête "Authorization" ne présente pas le type "Authentication" (Authentification). Si cet en-tête est transmis à la règle BasicAuthentication indiquée ci-dessus, vous recevez le code d'erreur suivant :
steps.basicauthentication.InvalidBasicAuthenticationSource
Exemple 2: le type d'authentification n'est pas de type "Basic":
curl -v "http://$EXTERNAL_IP/basicauth" -H "Authorization: OAuth YWthc2g6MTIz"
Où
$EXTERNAL_IP
est l'adresse IP de l'équilibreur de charge externe. Cette adresse IP est exposée sur Internet. Pour en savoir plus, consultez Personnaliser le routage des accès.Dans l'exemple ci-dessus, l'en-tête "Authorization" ne présente pas le type d'authentification "Basic". Si cette valeur est transmise à la règle BasicAuthentication affichée ci-dessus, vous recevez le code d'erreur suivant :
steps.basicauthentication.InvalidBasicAuthenticationSource
De même, cette erreur peut se produire si le type d'authentification tel que Bearer, Digest Auth, etc. est utilisé dans l'en-tête Authorization.
Solution
Assurez-vous que l'en-tête dans lequel l'entrée de la règle BasicAuthentication est transmise a pour type d'authentification "Basic".
Pour résoudre le problème avec l'exemple de règle BasicAuthentication décrit ci-dessus, envoyez une requête API en transmettant une chaîne valide encodée en base64 avec le type d'authentification "Basic" dans l'en-tête Authorization, comme indiqué ci-dessous :
curl -v "http://$EXTERNAL_IP/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
Où $EXTERNAL_IP
est l'adresse IP de l'équilibreur de charge externe.
Cette adresse IP est exposée sur Internet. Pour en savoir plus, consultez Personnaliser le routage des accès.