Estás viendo la documentación de Apigee Edge.
Ve a la
documentación de Apigee X. info
IPDeniedAccess
Código de error
accesscontrol.IPDeniedAccess
Cuerpo de la respuesta del 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 pasada como parte de la solicitud de la API coincide con cualquier dirección IP especificada en el elemento <SourceAddress>
dentro del elemento <MatchRule>
de la Política de control de acceso. El atributo action
del elemento <MatchRule>
se establece en DENY
.
Por ejemplo, supongamos que se define <SourceAddress>
de la siguiente manera:
<SourceAddress mask="32">104.132.196.83</SourceAddress>
Si la dirección IP anterior coincide con la dirección IP del sistema cliente (indicado por la variable proxy.client.ip
) o en cualquiera de las direcciones IP pasadas como parte de la solicitud a la API, se producirá el error.
Diagnóstico
Identifica las direcciones IP de acceso denegado a una solicitud a la API específica. Puedes encontrar esta información en el elemento
faultstring
de la respuesta de error.Por ejemplo, en el siguiente campo
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 con errores y determina la política específica en la que las direcciones IP especificadas en el elemento
<SourceAddress>
coinciden con las direcciones IP identificadas enfaultstring
(paso 1 anterior).Por ejemplo, la siguiente política define la IP
<SourceAddress>
como104.132.196.83,
que coincide con lo que se encuentra en lafaultstring
:<?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 realizó la solicitud a la API. Esto se puede hacer de varias maneras:
Usa el seguimiento de la IU
- Captura el seguimiento de la solicitud a la API con errores.
- Selecciona la política de control de acceso específica que falló en el panel derecho.
Verifica el valor de la variable
proxy.client.ip
como se muestra en la siguiente captura de pantalla de un seguimiento de muestra.Si
proxy.client.ip
no está en la lista, verifica el valor de los encabezados de mensajes X-Forwarded-For o True-Client-IP.
Usa informes personalizados
Puede crear informes personalizados para determinar si se emitió un código de estado 403 durante la ejecución de la política de Control de acceso en el proxy de API y, además, determinar la dirección IP del cliente. Esto es particularmente útil si el problema ocurrió en el pasado o si el problema es intermitente y no puedes capturar el seguimiento en la IU.
Consulta Crea y administra informes personalizados a fin de obtener información para crear informes personalizados. En el informe personalizado, selecciona lo siguiente:
Suma de tráfico como métrica, y
Proxy, Código de estado de respuesta, IP de cliente de proxy y X-Forwarded-For como dimensiones.
Esto debería ayudarte a determinar la dirección IP de cliente o las direcciones IP que generaron el error.
Si la dirección IP del cliente (indicada por la variable
proxy.client.ip
), o cualquier dirección IP que se pasa como parte de la solicitud a la API, coincide con las direcciones IP especificadas en el<SourceAddress>
dentro del elemento<MatchRule>
de la política de control de acceso, en la cual el atributoaction
se establece enDENY
, significa que esa es la causa del error.En el ejemplo anterior, el valor establecido en la variable de referencia
proxy.client.ip
(como se ve en la captura de pantalla anterior) coincide con la dirección IP definida en el elemento<SourceAddress>
de la política de control de acceso, lo que activa la respuesta de error:"faultstring": "Access Denied for client ip : 104.132.196.83"
Solución
Si la política de control de acceso está destinada a denegar el acceso a las solicitudes a la API provenientes de las direcciones IP específicas enumeradas en faultstring
, se esperará el mensaje de error. En este caso, no es necesario que realices ninguna acción adicional.
Sin embargo, si determinas que las direcciones IP específicas pueden recibir acceso a las solicitudes a la API para el proxy de API específico, modifica la política de control de acceso a fin de permitir el acceso a esas direcciones IP. Como alternativa, puede quitar la política de control de acceso del proxy de API si no deseas denegar el acceso a ninguna dirección IP.
A continuación, puedes ver un ejemplo de cómo permitir el acceso solo a una dirección IP específica 104.132.196.83
y denegar el acceso para el resto:
<AccessControl name="ACL">
<IPRules noRuleMatchAction = "DENY">
<MatchRule action = "ALLOW">
<SourceAddress mask="32">104.132.196.83</SourceAddress>
</MatchRule>
</IPRules>
</AccessControl>