Stai visualizzando la documentazione di Apigee e Apigee hybrid.
Visualizza la documentazione di
Apigee Edge.
IPDeniedAccess
Codice di errore
accesscontrol.IPDeniedAccess
Corpo della risposta di errore
{ "fault": { "faultstring": "Access Denied for client ip : client_IP", "detail": { "errorcode": "accesscontrol.IPDeniedAccess" } } }
Esempio di messaggio di errore
{
"fault": {
"faultstring": "Access Denied for client ip : 104.132.196.83",
"detail": {
"errorcode": "accesscontrol.IPDeniedAccess"
}
}
}
Causa
Questo errore si verifica se l'indirizzo IP del client o qualsiasi indirizzo IP passato nell'ambito della richiesta dell'API corrisponde a uno o più indirizzi IP specificati nell'elemento <SourceAddress>
all'interno dell'elemento <MatchRule>
del criterio di controllo dell'accesso e l'attributo action
dell'elemento <MatchRule>
è impostato su DENY
.
Ad esempio, supponiamo che <SourceAddress>
sia definito come mostrato di seguito:
<SourceAddress mask="32">104.132.196.83</SourceAddress>
Se l'indirizzo IP riportato sopra corrisponde all'indirizzo IP del sistema client (indicato dalla variabile proxy.client.ip
) o a uno degli indirizzi IP trasmessi nell'ambito della richiesta API, si verifica l'errore.
Diagnosi
Identifica gli indirizzi IP a cui è stato negato l'accesso per una richiesta API specifica. Puoi trovare queste informazioni nell'elemento
faultstring
della risposta all'errore.Ad esempio, nel seguente
faultstring
, l'indirizzo IP è104.132.196.83:
"faultstring": "Access Denied for client ip : 104.132.196.83"
Esamina tutte le norme di controllo dell'accesso nel proxy API non riuscito e determina la norma specifica in cui gli indirizzi IP specificati nell'elemento
<SourceAddress>
corrispondono agli indirizzi IP identificati infaultstring
(passaggio 1 sopra).Ad esempio, il seguente criterio definisce l'IP
<SourceAddress>
come104.132.196.83,
, che corrisponde a quanto indicato infaultstring
:<?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 gli indirizzi IP da cui è stata effettuata la richiesta API. Questa operazione può essere eseguita in diversi modi:
Utilizzo di UI Trace
- Acquisisci la traccia della richiesta API non riuscita.
- Seleziona il criterio di controllo dell'accesso specifico che ha avuto esito negativo dal riquadro a destra.
Nel riquadro Dettagli fase, controlla il valore della variabile
proxy.client.ip
come mostrato nello screenshot seguente di una traccia di esempio.Se
proxy.client.ip
non è presente nell'elenco, controlla il valore delle intestazioni del messaggio X-Forwarded-For o True-Client-IP.
Utilizzare i report personalizzati
Puoi creare report personalizzati per determinare se è stato generato un codice di stato 403 durante l'esecuzione del criterio di controllo dell'accesso all'interno del proxy API e anche per determinare l'indirizzo IP del client. Questa operazione è particolarmente utile se il problema si è verificato in passato o se è intermittente e non riesci a acquisire la traccia nell'interfaccia utente.
Per informazioni su come creare report personalizzati, consulta Creare e gestire i report personalizzati. Nel report personalizzato, scegli:
Somma del traffico come metrica e
Proxy, Codice di stato della risposta, IP client proxy e X-Forwarded-For-IP come dimensioni.
In questo modo dovresti riuscire a determinare l'indirizzo IP o gli indirizzi IP client trasmessi che hanno causato l'errore.
Se l'indirizzo IP del client (indicato dalla variabile
proxy.client.ip
) o qualsiasi indirizzo IP passato nell'ambito della richiesta API corrisponde agli indirizzi IP specificati nell'elemento<SourceAddress>
all'interno dell'elemento<MatchRule>
del criterio di controllo dell'accesso, dove l'attributoaction
è impostato suDENY
, questa è la causa dell'errore.Nell'esempio riportato sopra, il valore impostato nella variabile di riferimento
proxy.client.ip
(come mostrato nello screenshot della traccia sopra) corrisponde all'indirizzo IP definito nell'elemento<SourceAddress>
del criterio di controllo dell'accesso, attivando così la risposta di errore:"faultstring": "Access Denied for client ip : 104.132.196.83"
Risoluzione
Se il criterio di controllo dell'accesso ha lo scopo di negare l'accesso alle richieste API provenienti dagli indirizzi IP specifici elencati in faultstring
, il messaggio di errore è previsto. In questo caso, non è richiesta alcuna azione aggiuntiva.
Tuttavia, se stabilisci che agli indirizzi IP specifici può essere concesso l'accesso alle richieste API per il proxy API specifico, modifica il criterio di controllo dell'accesso per consentire l'accesso a questi indirizzi IP. In alternativa, puoi rimuovere il criterio di controllo dell'accesso dal proxy API se non vuoi negare l'accesso a nessun indirizzo IP.
Ecco un esempio che mostra come consentire l'accesso solo a un indirizzo IP specifico 104.132.196.83
e negarlo per il resto:
<AccessControl name="ACL">
<IPRules noRuleMatchAction = "DENY">
<MatchRule action = "ALLOW">
<SourceAddress mask="32">104.132.196.83</SourceAddress>
</MatchRule>
</IPRules>
</AccessControl>