Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X. информация
НеразрешеннаяПеременная
Код ошибки
steps.basicauthentication.UnresolvedVariable
Тело ответа об ошибке
{
"fault": {
"faultstring": "Unresolved variable : [variable_name]",
"detail": {
"errorcode": "steps.basicauthentication.UnresolvedVariable"
}
}
}
Пример сообщения об ошибке
{
"fault": {
"faultstring": "Unresolved variable : request.header.Authorization",
"detail": {
"errorcode": "steps.basicauthentication.UnresolvedVariable"
}
}
}
Причина
Эта ошибка возникает, если переменная, содержащая строку в кодировке Base64, указанную в элементе <Source>
политики BasicAuthentication :
- Вне области действия (недоступно в конкретном потоке, в котором выполняется политика)
- Не может быть решено (не определено)
Например, эта ошибка возникает, если в политике BasicAuthentication есть переменная, указанная как request.header.Authorization
в элементе <Source>
, но заголовок авторизации не передается как часть запроса API.
Диагностика
Определите переменную, используемую для элемента
<Source>
в политике BasicAuthentication. Эту информацию можно найти в элементеfaultstring
ответа об ошибке. Например, в следующейfaultstring,
для элемента<Source>
используется переменнаяrequest.header.Authorization
:"faultstring": "Unresolved variable : request.header.Authorization"
Проверьте все политики BasicAuthentication в конкретном прокси-сервере API, где произошел сбой. Может существовать одна или несколько политик BasicAuthentication. Определите конкретную политику или политики BasicAuthentication, в которых переменная, указанная в элементе
<Source>
, соответствует имени переменной, указанному в строке ошибки (шаг № 1 выше).Например, следующая политика присваивает элементу
<Source>
переменную с именемrequest.header.Authorization
, которая соответствует значению вfaultstring
:<?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>
Определите, определена ли переменная и доступна ли она в потоке, в котором выполняется политика BasicAuthentication.
Если переменная:
- Вне области действия (недоступно в конкретном потоке, в котором выполняется политика)
- Не может быть решено (не определено)
Тогда это и есть причина ошибки.
В примере политики BasicAuthentication, показанном выше, переменная
request.header.Authorization
не была передана как часть запроса. То есть запрос API был сделан без заголовка авторизации, как показано ниже:curl -v "http://org-env.apigee.net/basicauth"
Поскольку переменная, используемая в политике BasicAuthentication, недоступна, вы получаете код ошибки:
steps.basicauthentication.UnresolvedVariable
Разрешение
Убедитесь, что переменная, используемая в политике BasicAuthentication, определена или передана в качестве входных данных и доступна в потоке, в котором выполняется политика.
Чтобы устранить проблему с примером политики BasicAuthentication, описанной выше, сделайте запрос API, как показано ниже:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
Инвалидбасикаутентикатионсаурце
Код ошибки
steps.basicauthentication.InvalidBasicAuthenticationSource
Тело ответа об ошибке
{
"fault": {
"faultstring": "Source variable : [variable_name] for basic authentication decode policy is not valid",
"detail": {
"errorcode": "steps.basicauthentication.InvalidBasicAuthenticationSource"
}
}
}
Пример ошибки Сообщение об ошибке
{
"fault": {
"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid",
"detail": {
"errorcode": "steps.basicauthentication.InvalidBasicAuthenticationSource"
}
}
}
Возможные причины
Возможные причины этой ошибки:
Причина | Описание |
---|---|
Неверная исходная переменная | Входная переменная источника для политики BasicAuthentication не является допустимой строкой в кодировке Base64. |
Заголовок имеет неверный формат | Заголовок, содержащий строку в кодировке Base64, переданную в политику BasicAuthentication, имеет неверный формат. |
Причина: неверная исходная переменная.
Эта ошибка возникает, если переменная, содержащая строку в кодировке Base64, указанную в элементе <Source>
политики BasicAuthentication , не содержит допустимого значения.
Например, эта ошибка возникает, если переменная, указанная в элементе <Source>
политики BasicAuthentication, не имеет допустимой строки в кодировке Base64.
Диагностика
Определите переменную, используемую для элемента
<Source>
в политике BasicAuthentication. Эту информацию можно найти в элементеfaultstring
ответа об ошибке. Например, в следующейfaultstring,
для элемента<Source>
используется переменнаяrequest.header.Authorization
:"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"
Проверьте все политики BasicAuthentication в конкретном прокси-сервере API, где произошел сбой. Может существовать одна или несколько политик BasicAuthentication. Определите конкретную политику (политики) BasicAuthentication, в которой переменная, указанная в элементе
<Source>
, соответствует имени переменной, указанному в строке ошибки (шаг № 1 выше).Например, следующая политика устанавливает для элемента
<Source>
переменную с именемrequest.header.Authorization
, которая соответствует значению вfaultstring
:<?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>
Если значение, хранящееся в переменной, указанной в элементе
<Source>
, не является допустимой строкой в кодировке Base64, товот причина ошибки.
В примере политики BasicAuthentication, показанном выше, переменная
request.header.Authorization
, отправленная клиентом в качестве заголовка, была недействительной, как показано ниже:curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic 23435"
Поскольку переменная
request.header.Authorization
содержит недопустимую строку в кодировке Base64 «23435"
, вы получаете код ошибки:steps.basicauthentication.InvalidBasicAuthenticationSource
Разрешение
Убедитесь, что переменная, указанная для элемента <Source>
в политике BasicAuthentication, имеет допустимую строку в кодировке Base64.
Чтобы устранить проблему с примером политики BasicAuthentication, описанной выше, сделайте запрос API, передав действительную строку в кодировке Base64 в заголовке авторизации, как показано ниже:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
Причина: заголовок неверный/недействительный.
Эта ошибка возникает, если заголовок, переданный в политику BasicAuthentication, имеет неправильный или недопустимый формат.
Например, эта ошибка возникает, если в политике BasicAuthentication есть переменная, указанная как request.header.Authorization
в элементе <Source>
, а заголовок, переданный как часть запроса API, имеет неверный формат или недействителен.
Диагностика
Определите переменную, используемую для элемента
<Source>
в политике BasicAuthentication. Эту информацию можно найти в элементеfaultstring
ответа об ошибке. Например, в следующей ошибке для элемента<Source>
используется переменнаяrequest.header.Authorization
:"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"
Проверьте все политики BasicAuthentication в конкретном прокси-сервере API, где произошел сбой. Может существовать одна или несколько политик BasicAuthentication. Определите конкретную политику (политики) BasicAuthentication, в которой переменная, указанная в элементе
<Source>
, соответствует имени переменной, указанной в строке ошибки (шаг № 1 выше).Например, следующая политика устанавливает для элемента
<Source>
переменную с именемrequest.header.Authorization
, которая соответствует значению вfaultstring
:<?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>
Если переменная является заголовком и имеет неверный формат или недействительна, т. е. не имеет типа аутентификации или если тип аутентификации не «Базовый», то это и есть причина ошибки.
Заголовок авторизации имеет следующую форму:
Authorization: <Authentication type> <credentials>
Неверный заголовок можно передать в политику BasicAuthentication двумя способами:
Пример 1. В заголовке нет типа аутентификации:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: YWthc2g6MTIz"
В приведенном выше примере заголовок авторизации не имеет типа аутентификации. Если этот заголовок передается в политику BasicAuthentication, показанную выше, вы получаете код ошибки:
steps.basicauthentication.InvalidBasicAuthenticationSource
Пример 2. Тип аутентификации отличается от типа «Базовый»:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: OAuth YWthc2g6MTIz"
В приведенном выше примере заголовок авторизации не имеет типа аутентификации «Базовый». Если это будет передано в политику BasicAuthentication, показанную выше, вы получите код ошибки:
steps.basicauthentication.InvalidBasicAuthenticationSource
Аналогично, эта ошибка также может возникнуть, если в заголовке авторизации используется тип аутентификации, такой как носитель, дайджест-аутентификация и т. д.
Разрешение
Убедитесь, что заголовок, в котором передаются входные данные для политики BasicAuthentication, имеет тип аутентификации и тип «Basic».
Чтобы устранить проблему с примером политики BasicAuthentication, описанной выше, сделайте запрос API, передав действительную строку в кодировке Base64 с типом аутентификации «Basic» в заголовке авторизации, как показано ниже:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"