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 - faultstringdella 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 in- faultstring(passaggio 1 sopra).- Ad esempio, il seguente criterio definisce l'IP - <SourceAddress>come- 104.132.196.83,, che corrisponde a quanto indicato in- 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>
- 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.ipcome mostrato nello screenshot seguente di una traccia di esempio. 
- Se - proxy.client.ipnon è elencato, 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'attributo- actionè impostato su- DENY, 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 è possibile concedere agli indirizzi IP specifici 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 gli altri:
<AccessControl name="ACL">
  <IPRules noRuleMatchAction = "DENY">
    <MatchRule action = "ALLOW">
      <SourceAddress mask="32">104.132.196.83</SourceAddress>
    </MatchRule>
  </IPRules>
</AccessControl>