Sie lesen gerade die Dokumentation zu Apigee und Apigee Hybrid.
Apigee Edge-Dokumentation aufrufen.
UnresolvedVariable
Fehlercode
steps.basicauthentication.UnresolvedVariable
Fehlerantworttext
{
"fault": {
"faultstring": "Unresolved variable : [variable_name]",
"detail": {
"errorcode": "steps.basicauthentication.UnresolvedVariable"
}
}
}
Beispiel für Fehlermeldung
{
"fault": {
"faultstring": "Unresolved variable : request.header.Authorization",
"detail": {
"errorcode": "steps.basicauthentication.UnresolvedVariable"
}
}
}
Ursache
Dieser Fehler tritt auf, wenn für die Variable mit dem Base64-codierten String, der im <Source>
-Element der BasicAuthentication-Richtlinie angegeben ist, Folgendes gilt:
- Wert liegt außerhalb des Bereichs (nicht in dem spezifischen Ablauf verfügbar, in dem die Richtlinie ausgeführt wird)
- Variable kann nicht aufgelöst werden (ist nicht definiert)
Dieser Fehler tritt beispielsweise auf, wenn in der BasicAuthentication-Richtlinie im <Source>
-Element eine Variable request.header.Authorization
angegeben ist, der Autorisierungs-Header jedoch nicht als Teil der API-Anfrage übergeben wird.
Diagnose
Ermitteln Sie die Variable, die für das
<Source>
-Element in der BasicAuthentication-Richtlinie verwendet wird. Sie finden diese Information imfaultstring
-Element der Fehlerantwort. Im folgendenfaultstring,
ist beispielsweiserequest.header.Authorization
die Variable, die für das<Source>
-Element verwendet wird:"faultstring": "Unresolved variable : request.header.Authorization"
Prüfen Sie alle BasicAuthentication-Richtlinien im jeweiligen API-Proxy, in dem der Fehler aufgetreten ist. Es können eine oder mehrere BasicAuthentication-Richtlinien vorhanden sein. Ermitteln Sie die spezifischen BasicAuthentication -Richtlinien, in denen die im
<Source>
-Element angegebene Variable mit dem im Fehlerstring angegebenen Variablennamen übereinstimmt (siehe Schritt 1 oben).Die folgende Richtlinie legt beispielsweise das
<Source>
-Element auf eine Variable namensrequest.header.Authorization
fest, die mit dem übereinstimmt, was infaultstring
enthalten ist:<?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>
Prüfen Sie, ob die Variable definiert und in dem Ablauf verfügbar ist, in dem die BasicAuthentication-Richtlinie ausgeführt wird.
Wenn die Variable entweder:
- Wert liegt außerhalb des Bereichs (nicht in dem spezifischen Ablauf verfügbar, in dem die Richtlinie ausgeführt wird)
- nicht aufgelöst werden kann (ist nicht definiert)
Dann ist das die Ursache des Fehlers.
In der obigen Beispielrichtlinie BasicAuthentication wurde die Variable
request.header.Authorization
nicht als Teil der Anfrage übergeben. Das bedeutet, dass die API-Anfrage ohne den Autorisierungs-Header gesendet wurde, wie hier gezeigt:curl -v "http://$EXTERNAL_IP/basicauth"
Dabei ist
$EXTERNAL_IP
die IP-Adresse des externen Load-Balancers. Diese IP-Adresse ist im Internet sichtbar. Weitere Informationen finden Sie unter Zugriffs-Routing anpassen.Da die in der BasicAuthentication-Richtlinie verwendete Variable nicht verfügbar ist, erhalten Sie folgenden Fehlercode:
steps.basicauthentication.UnresolvedVariable
Lösung
Achten Sie darauf, dass die in der BasicAuthentication-Richtlinie verwendete Variable definiert ist oder als Eingabe zur Verfügung gestellt wird und im Ablauf, in dem die Richtlinie ausgeführt wird, verfügbar ist.
Um das Problem mit der obigen BasicAuthentication-Richtlinie zu beheben, stellen Sie eine API-Anfrage wie die folgende:
curl -v "http://$EXTERNAL_IP/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
Dabei ist $EXTERNAL_IP
die IP-Adresse des externen Load-Balancers.
Diese IP-Adresse ist im Internet sichtbar. Weitere Informationen finden Sie unter Zugriffs-Routing anpassen.
InvalidBasicAuthenticationSource
Fehlercode
steps.basicauthentication.InvalidBasicAuthenticationSource
Fehlerantworttext
{
"fault": {
"faultstring": "Source variable : [variable_name] for basic authentication decode policy is not valid",
"detail": {
"errorcode": "steps.basicauthentication.InvalidBasicAuthenticationSource"
}
}
}
Beispiel für eine Fehlermeldung
{
"fault": {
"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid",
"detail": {
"errorcode": "steps.basicauthentication.InvalidBasicAuthenticationSource"
}
}
}
Mögliche Ursachen
Mögliche Ursachen für diesen Fehler:
Ursache | Beschreibung |
---|---|
Ungültige Quellvariable | Die Eingabequellvariable für die BasicAuthentication-Richtlinie ist kein gültiger Base64-codierter String. |
Fehlerhafter Header | Der Header mit dem Base64-codierten String, der an die BasicAuthentication-Richtlinie übergeben wird, ist fehlerhaft. |
Ursache: Ungültige Quellvariable
Dieser Fehler tritt auf, wenn die Variable mit dem Base64-codierten String, der im <Source>
-Element der BasicAuthentication-Richtlinie angegeben ist, keinen gültigen Wert enthält.
Der Fehler tritt beispielsweise dann auf, wenn die Variable, die im <Source>
-Element der BasicAuthentication-Richtlinie angegeben ist, keinen gültigen Base64-codierten String enthält.
Diagnose
Ermitteln Sie die Variable, die für das
<Source>
-Element in der BasicAuthentication-Richtlinie verwendet wird. Sie finden diese Information imfaultstring
-Element der Fehlerantwort. Im folgendenfaultstring,
ist beispielsweiserequest.header.Authorization
die Variable, die für das<Source>
-Element verwendet wird:"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"
Prüfen Sie alle BasicAuthentication-Richtlinien im jeweiligen API-Proxy, in dem der Fehler aufgetreten ist. Es können eine oder mehrere BasicAuthentication-Richtlinien vorhanden sein. Ermitteln Sie die spezifischen BasicAuthentication-Richtlinien, in denen die im
<Source>
-Element angegebene Variable mit dem im Fehlerstring angegebenen Variablennamen übereinstimmt (siehe Schritt 1 oben).Die folgende Richtlinie legt beispielsweise das
<Source>
-Element auf eine Variable namensrequest.header.Authorization
fest, die mit dem übereinstimmt, was infaultstring
enthalten ist:<?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>
Wenn der Wert in der im
<Source>
-Element angegebenen Variable kein gültiger Base64-codierter String ist,ist dies die Ursache des Fehlers.
In der obigen Beispielrichtlinie BasicAuthentication ist die Variable
request.header.Authorization
, die vom Client als Header gesendet wurde, wie im Folgenden gezeigt ungültig:curl -v "http://$EXTERNAL_IP /basicauth" -H "Authorization: Basic 23435"
Dabei ist
$EXTERNAL_IP
die IP-Adresse des externen Load-Balancers. Diese IP-Adresse ist im Internet sichtbar. Weitere Informationen finden Sie unter Zugriffs-Routing anpassen.Da die Variable
request.header.Authorization
einen ungültigen Base64-codierten String23435"
enthält, erhalten Sie folgenden Fehlercode:steps.basicauthentication.InvalidBasicAuthenticationSource
Lösung
Achten Sie darauf, dass die in der BasicAuthentication-Richtlinie für das <Source>
-Element angegebene Variable einen gültigen Base64-codierten String enthält.
Um das Problem mit der obigen BasicAuthentication-Richtlinie zu beheben, stellen Sie eine API-Anfrage und übergeben Sie dafür wie im Folgenden dargestellt einen gültigen Base64-codierten String im Autorisierungs-Header:
curl -v "http://$EXTERNAL_IP/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
Dabei ist $EXTERNAL_IP
die IP-Adresse des externen Load-Balancers.
Diese IP-Adresse ist im Internet sichtbar. Weitere Informationen finden Sie unter Zugriffs-Routing anpassen.
Ursache: Header ist fehlerhaft/ungültig
Dieser Fehler tritt auf, wenn der an die BasicAuthentication-Richtlinie übergebene Header fehlerhaft oder ungültig ist.
Der Fehler tritt beispielsweise dann auf, wenn in der BasicAuthentication-Richtlinie im <Source>
-Element die Variable request.header.Authorization
angegeben ist und der Header, der als Teil der API-Anfrage übergeben wird, fehlerhaft bzw. ungültig ist.
Diagnose
Ermitteln Sie die Variable, die für das
<Source>
-Element in der BasicAuthentication-Richtlinie verwendet wird. Sie finden diese Information imfaultstring
-Element der Fehlerantwort. Im Folgenden wird beispielsweise für das<Source>
-Element die Variablerequest.header.Authorization
verwendet:"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"
Prüfen Sie alle BasicAuthentication-Richtlinien im jeweiligen API-Proxy, in dem der Fehler aufgetreten ist. Es können eine oder mehrere BasicAuthentication-Richtlinien vorhanden sein. Ermitteln Sie die spezifischen BasicAuthentication-Richtlinien, in denen die im
<Source>
-Element angegebene Variable mit dem im Fehlerstring angegebenen Variablennamen übereinstimmt (siehe Schritt 1 oben).Die folgende Richtlinie legt beispielsweise das
<Source>
-Element auf eine Variable namensrequest.header.Authorization
fest, die mit dem übereinstimmt, was infaultstring
enthalten ist:<?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>
Wenn die Variable ein Header und fehlerhaft oder ungültig ist, d. h. wenn sie nicht den Authentifizierungstyp hat oder der Authentifizierungstyp nicht "Basic" ist, ist das die Ursache für den Fehler.
Der Autorisierungs-Header hat das folgende Format:
Authorization: <Authentication type> <credentials>
Ein fehlerhafter Header kann auf zwei Arten an die BasicAuthentication-Richtlinie übergeben werden:
Beispiel 1: Im Header ist kein Authentifizierungstyp vorhanden:
curl -v "http://$EXTERNAL_IP/basicauth" -H "Authorization: YWthc2g6MTIz"
Dabei ist
$EXTERNAL_IP
die IP-Adresse des externen Load-Balancers. Diese IP-Adresse ist im Internet sichtbar. Weitere Informationen finden Sie unter Zugriffs-Routing anpassen.Im obigen Beispiel hat der Autorisierungs-Header nicht den Authentifizierungstyp. Wenn dieser Header an die oben dargestellte BasicAuthentication-Richtlinie übergeben wird, erhalten Sie folgenden Fehlercode:
steps.basicauthentication.InvalidBasicAuthenticationSource
Beispiel 2: Der Authentifizierungstyp ist nicht vom Typ "Basic":
curl -v "http://$EXTERNAL_IP/basicauth" -H "Authorization: OAuth YWthc2g6MTIz"
Dabei ist
$EXTERNAL_IP
die IP-Adresse des externen Load-Balancers. Diese IP-Adresse ist im Internet sichtbar. Weitere Informationen finden Sie unter Zugriffs-Routing anpassen.Im obigen Beispiel hat der Autorisierungs-Header nicht den Authentifizierungstyp "Basic". Wird dieser Header an die oben dargestellte BasicAuthentication-Richtlinie übergeben, erhalten Sie folgenden Fehlercode:
steps.basicauthentication.InvalidBasicAuthenticationSource
Ebenso kann dieser Fehler auftreten, wenn im Autorisierungs-Header ein Authentifizierungstyp wie „Bearer“ oder „Digest Auth“ verwendet wird.
Lösung
Prüfen Sie, ob der Header, an den die Eingabe für die BasicAuthentication-Richtlinie übergeben wird, den Authentifizierungstyp hat und der Typ "Basic" lautet.
Um das Problem mit der obigen BasicAuthentication-Richtlinie zu beheben, stellen Sie eine API-Anfrage und übergeben dafür einen gültigen Base64-codierten String mit dem Authentifizierungstyp „Basic“ im Autorisierungs-Header, wie im Folgenden dargestellt:
curl -v "http://$EXTERNAL_IP/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
Dabei ist $EXTERNAL_IP
die IP-Adresse des externen Load-Balancers.
Diese IP-Adresse ist im Internet sichtbar. Weitere Informationen finden Sie unter Zugriffs-Routing anpassen.