Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X. информация
IPDeniedAccess
Код ошибки
accesscontrol.IPDeniedAccess
Тело ответа об ошибке
{ "fault": { "faultstring": "Access Denied for client ip : client_IP", "detail": { "errorcode": "accesscontrol.IPDeniedAccess" } } }
Пример сообщения об ошибке
{
"fault": {
"faultstring": "Access Denied for client ip : 104.132.196.83",
"detail": {
"errorcode": "accesscontrol.IPDeniedAccess"
}
}
}
Причина
Эта ошибка возникает, если IP-адрес клиента или любой IP-адрес, переданный как часть запроса API, соответствует любому IP-адресу, указанному в элементе <SourceAddress>
в элементе <MatchRule>
политики контроля доступа, и action
Атрибуту элемента <MatchRule>
присвоено значение DENY
.
Например, предположим, что <SourceAddress>
определен, как показано ниже:
<SourceAddress mask="32">104.132.196.83</SourceAddress>
Если указанный выше IP-адрес совпадает с IP-адресом клиентской системы (указанным переменной proxy.client.ip
) или с любым из IP-адресов, переданных как часть запроса API, произойдет ошибка.
Диагностика
Определите IP-адреса, которым запрещен доступ для определенного запроса API. Эту информацию можно найти в элементе
faultstring
ответа об ошибке.Например, в следующей
faultstring
IP-адрес —104.132.196.83:
"faultstring": "Access Denied for client ip : 104.132.196.83"
Проверьте все политики контроля доступа в неисправном прокси-сервере API и определите конкретную политику, в которой IP-адреса, указанные в элементе
<SourceAddress>
, соответствуют IP-адресам, указанным вfaultstring
(шаг 1 выше).Например, следующая политика определяет IP
<SourceAddress>
как104.132.196.83,
что соответствует значению вfaultstring
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AccessControl async="false" continueOnError="false" enabled="true" name="Access-Control"> <DisplayName>Access-Control</DisplayName> <Properties/> <IPRules noRuleMatchAction="ALLOW"> <MatchRule action="DENY"> <SourceAddress mask="32">104.132.196.83</SourceAddress> </MatchRule> </IPRules> </AccessControl>
Определите IP-адреса, с которых был сделан запрос API. Это можно сделать несколькими способами:
Использование трассировки пользовательского интерфейса
- Запишите трассировку неудачного запроса API.
- Выберите конкретную политику контроля доступа, которая не удалась, на правой панели.
Проверьте значение переменной
proxy.client.ip
как показано на следующем снимке экрана с примером трассировки.Если
proxy.client.ip
отсутствует в списке, проверьте значение заголовков сообщений X-Forwarded-For или True-Client-IP.
Использование пользовательских отчетов
Вы можете создавать пользовательские отчеты, чтобы определить, был ли выдан код состояния 403 во время выполнения политики контроля доступа в прокси-сервере API, а также определить IP-адрес клиента. Это особенно полезно, если проблема возникала в прошлом или если проблема носит периодический характер и вы не можете отследить ее в пользовательском интерфейсе.
См. раздел Создание и управление настраиваемыми отчетами, чтобы понять, как создавать настраиваемые отчеты. В пользовательском отчете выберите:
Сумма трафика как метрика и
Прокси , код состояния ответа , IP-адрес прокси-клиента и X-Forwarded-For в качестве измерений.
Это должно помочь вам определить IP-адрес клиента или переданные IP-адреса, которые привели к ошибке.
Если IP-адрес клиента (указанный переменной
proxy.client.ip
) или любой IP-адрес, переданный как часть запроса API, соответствует IP-адресу(ам), указанным в элементе<SourceAddress>
в элементе<MatchRule>
Политика контроля доступа, в которой для атрибутаaction
установлено значениеDENY
, является причиной ошибки.В приведенном выше примере значение, установленное в ссылочной переменной
proxy.client.ip
(как видно на снимке экрана трассировки выше), соответствует IP-адресу, определенному в элементе<SourceAddress>
политики контроля доступа, что вызывает ошибку. ответ:"faultstring": "Access Denied for client ip : 104.132.196.83"
Разрешение
Если политика контроля доступа предназначена для запрещения доступа к запросам API, поступающим с определенных IP-адресов, перечисленных в faultstring
, то ожидается сообщение об ошибке. В этом случае никаких дополнительных действий не требуется.
Однако если вы определите, что определенным IP-адресам может быть предоставлен доступ к запросам API для определенного прокси-сервера API, измените политику контроля доступа, чтобы разрешить доступ к этим IP-адресам. Альтернативно вы можете удалить политику контроля доступа из прокси-сервера API, если не хотите запрещать доступ к каким-либо IP-адресам.
Вот пример, показывающий, как разрешить доступ только к определенному IP-адресу 104.132.196.83
и запретить доступ остальным:
<AccessControl name="ACL">
<IPRules noRuleMatchAction = "DENY">
<MatchRule action = "ALLOW">
<SourceAddress mask="32">104.132.196.83</SourceAddress>
</MatchRule>
</IPRules>
</AccessControl>