Estás consultando la documentación de Apigee y Apigee Hybrid.
Consulta la documentación de
Apigee Edge.
IPDeniedAccess
Código de error
accesscontrol.IPDeniedAccess
Cuerpo de respuesta de error
{ "fault": { "faultstring": "Access Denied for client ip : client_IP", "detail": { "errorcode": "accesscontrol.IPDeniedAccess" } } }
Ejemplo de mensaje de error
{
"fault": {
"faultstring": "Access Denied for client ip : 104.132.196.83",
"detail": {
"errorcode": "accesscontrol.IPDeniedAccess"
}
}
}
Causa
Este error se produce si la dirección IP del cliente o cualquier dirección IP que se haya enviado como parte de la solicitud de la API coincide con alguna de las direcciones IP especificadas en el elemento <SourceAddress>
del elemento <MatchRule>
de la política de control de acceso y el atributo action
del elemento <MatchRule>
tiene el valor DENY
.
Por ejemplo, supongamos que <SourceAddress>
se define como se muestra a continuación:
<SourceAddress mask="32">104.132.196.83</SourceAddress>
Si la dirección IP anterior coincide con la dirección IP del sistema cliente (indicada por la variable proxy.client.ip
) o con alguna de las direcciones IP enviadas como parte de la solicitud a la API, se producirá el error.
Diagnóstico
Identifica las direcciones IP a las que se ha denegado el acceso para una solicitud de API específica. Puede encontrar esta información en el elemento
faultstring
de la respuesta de error.Por ejemplo, en el siguiente
faultstring
, la dirección IP es104.132.196.83:
."faultstring": "Access Denied for client ip : 104.132.196.83"
Examina todas las políticas de control de acceso del proxy de API que ha fallado y determina la política específica en la que las direcciones IP especificadas en el elemento
<SourceAddress>
coinciden con las direcciones IP identificadas en el elementofaultstring
(paso 1 anterior).Por ejemplo, la siguiente política define la IP
<SourceAddress>
como104.132.196.83,
, que coincide con lo que hay enfaultstring
:<?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>
Determina las direcciones IP desde las que se ha enviado la solicitud a la API. Esto se puede hacer de varias formas:
Usar UI Trace
- Captura el rastreo de la solicitud a la API que falla.
- En el panel de la derecha, selecciona la política de control de acceso específica que ha fallado.
En el panel Detalles de la fase, comprueba el valor de la variable
proxy.client.ip
, tal como se muestra en la siguiente captura de pantalla de un ejemplo de traza.Si no aparece, comprueba el valor de los encabezados de mensaje X-Forwarded-For o True-Client-IP.
proxy.client.ip
Usar informes personalizados
Puedes crear informes personalizados para determinar si se ha devuelto un código de estado 403 durante la ejecución de la política de control de acceso en el proxy de la API y también determinar la dirección IP del cliente. Esto es especialmente útil si el problema se ha producido en el pasado o si es intermitente y no puedes capturar el seguimiento en la interfaz de usuario.
Consulte el artículo Crear y gestionar informes personalizados para saber cómo crear informes personalizados. En el informe personalizado, elija una de las siguientes opciones:
Suma de tráfico como métrica
Proxy, Código de estado de la respuesta, IP del cliente proxy y X-Forwarded-For-IP como dimensiones.
Esto debería ayudarte a determinar la dirección IP o las direcciones IP del cliente que han provocado el error.
Si la dirección IP del cliente (indicada por la variable
proxy.client.ip
) o cualquier dirección IP que se haya enviado como parte de la solicitud de la API coincide con las direcciones IP especificadas en el elemento<SourceAddress>
del elemento<MatchRule>
de la política de control de acceso, donde el atributoaction
tiene el valorDENY
, esa es la causa del error.En el ejemplo que se muestra arriba, el valor definido en la variable de referencia
proxy.client.ip
(como se ve en la captura de pantalla del seguimiento anterior) coincide con la dirección IP definida en el elemento<SourceAddress>
de la política de control de acceso, lo que provoca la respuesta de error:"faultstring": "Access Denied for client ip : 104.132.196.83"
Resolución
Si la política de control de acceso tiene como objetivo denegar el acceso a las solicitudes de la API procedentes de las direcciones IP específicas que se indican en faultstring
, el mensaje de error es el esperado. En este caso, no es necesario que hagas nada más.
Sin embargo, si determinas que se puede dar acceso a las solicitudes de API a las direcciones IP específicas del proxy de API, modifica la política de control de acceso para permitir el acceso a esas direcciones IP. También puedes quitar la política de control de acceso del proxy de API si no quieres denegar el acceso a ninguna dirección IP.
Aquí tienes un ejemplo que muestra cómo permitir el acceso solo a una dirección IP específica 104.132.196.83
y denegar el acceso al resto:
<AccessControl name="ACL">
<IPRules noRuleMatchAction = "DENY">
<MatchRule action = "ALLOW">
<SourceAddress mask="32">104.132.196.83</SourceAddress>
</MatchRule>
</IPRules>
</AccessControl>