Stai visualizzando la documentazione di Apigee e Apigee hybrid.
Visualizza
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 descritto 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 specifica richiesta API. 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 tutti i criteri di controllo dell'accesso nel proxy API non riuscito e determina il criterio specifico 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. Esistono diversi modi per farlo:
Utilizzo della traccia UI
- 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 nel proxy API e per determinare anche l'indirizzo IP del client. Ciò è particolarmente utile se il problema si è verificato in passato o se il problema è intermittente e non è possibile acquisire il tracciamento 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.
Questo dovrebbe aiutarti a determinare l'IP del client o gli indirizzi IP passati che hanno portato all'errore.
Se l'indirizzo IP del client (indicato dalla variabile
proxy.client.ip
) o qualsiasi indirizzo IP passato nell'ambito della richiesta API corrisponde all'indirizzo o agli indirizzi IP specificati nell'elemento<SourceAddress>
all'interno dell'elemento<MatchRule>
del criterio di controllo di accesso, dove l'attributoaction
è impostato suDENY
, questo è 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 da indirizzi IP specifici elencati in faultstring
, è previsto il messaggio di errore. In questo caso, non sono richieste ulteriori azioni.
Tuttavia, se stabilisci che è possibile concedere a determinati indirizzi IP l'accesso alle richieste API per lo specifico proxy API, modifica il criterio di controllo dell'accesso per consentire l'accesso a quegli 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 negare l'accesso agli altri:
<AccessControl name="ACL">
<IPRules noRuleMatchAction = "DENY">
<MatchRule action = "ALLOW">
<SourceAddress mask="32">104.132.196.83</SourceAddress>
</MatchRule>
</IPRules>
</AccessControl>