Dépannage des erreurs d'environnement d'exécution de la règle AccessControl
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Vous consultez la documentation d'Apigee et d'Apigee hybrid. Consultez la documentation d'Apigee Edge.
IPDeniedAccess
Code d'erreur
accesscontrol.IPDeniedAccess
Corps de la réponse d'erreur
{
"fault": {
"faultstring": "Access Denied for client ip : client_IP",
"detail": {
"errorcode": "accesscontrol.IPDeniedAccess"
}
}
}
Exemple de message d'erreur
{
"fault": {
"faultstring": "Access Denied for client ip : 104.132.196.83",
"detail": {
"errorcode": "accesscontrol.IPDeniedAccess"
}
}
}
Cause
Cette erreur se produit si l'adresse IP du client ou toute adresse IP transmise dans le cadre de la requête API correspond à toute adresse IP spécifiée dans l'élément <SourceAddress> de l'élément <MatchRule> de la règle AccessControl. L'attribut action de l'élément <MatchRule> est défini sur DENY.
Par exemple, supposons que <SourceAddress> soit défini comme indiqué ci-dessous :
Si l'adresse IP ci-dessus correspond à l'adresse IP du système client (indiquée par la variable proxy.client.ip) ou à l'une des adresses IP transmises dans le cadre de la requête API, l'erreur se produit.
Diagnostic
Identifiez la ou les adresses IP qui se sont vues refuser l'accès à une requête API spécifique. Vous trouverez ces informations dans l'élément faultstring de la réponse d'erreur.
Par exemple, dans faultstring, l'adresse IP est 104.132.196.83:
"faultstring": "Access Denied for client ip : 104.132.196.83"
Examinez toutes les règles de contrôle d'accès AccessControl du proxy d'API défaillant et déterminez la règle spécifique où la ou les adresses IP spécifiées dans l'élément <SourceAddress> correspondent à la ou aux adresses IP identifiées dans faultstring (étape 1 ci-dessus).
Par exemple, la règle suivante définit l'adresse IP <SourceAddress> comme 104.132.196.83,, qui correspond à ce qui se trouve dans faultstring :
Déterminez la ou les adresses IP à partir desquelles la requête API a été effectuée. Pour ce faire, plusieurs possibilités s'offrent à vous :
Utiliser l'interface utilisateur Trace
Capturer la trace de la requête API défaillante.
Sélectionner la règle de contrôle d'accès AccessControl spécifique qui a échoué dans le panneau de droite.
Dans le volet Détails de la phase, vérifiez la valeur de la variable proxy.client.ip, comme indiqué dans la capture d'écran suivante d'un exemple de trace.
Si proxy.client.ip n'est pas répertorié, vérifiez la valeur des en-têtes de message "X-Forwarded-For" ou "True-Client-IP".
Utiliser les rapports personnalisés
Vous pouvez créer des rapports personnalisés pour déterminer si un code d'état 403 a été généré lors de l'exécution de la règle de contrôle des accès dans le proxy d'API, et déterminer l'adresse IP client. Ceci est particulièrement utile si le problème est survenu par le passé ou s'il est intermittent, et que vous ne parvenez pas à capturer la trace dans l'interface utilisateur.
Proxy, Code d'état de la réponse, Adresse IP du client proxy et X-Forwarded-For-IP en tant que dimensions.
Cela devrait vous aider à déterminer l'adresse IP du client ou les adresses IP transmises ayant généré l'erreur.
Si l'adresse IP du client (indiquée par la variable proxy.client.ip) ou une adresse IP transmise dans le cadre de la requête API correspond à la ou aux adresses IP spécifiées dans l'élément <SourceAddress> de l'élément <MatchRule> de la règle de contrôle d'accès AccessControl, où l'attribut action est défini sur DENY, alors il s'agit de la cause de l'erreur.
Dans l'exemple ci-dessus, la valeur définie dans la variable de référence proxy.client.ip (comme illustrée à la capture d'écran de la trace ci-dessus) correspond à l'adresse IP définie dans l'élément <SourceAddress> de la règle de contrôle d'accès AccessControl, déclenchant ainsi la réponse d'erreur :
"faultstring": "Access Denied for client ip : 104.132.196.83"
Solution
Si la règle de contrôle d'accès est conçue pour refuser l'accès aux requêtes API provenant des adresses IP spécifiques répertoriées dans faultstring, le message d'erreur est attendu. Dans ce cas, aucune autre action n'est requise.
Toutefois, si vous déterminez que la ou les adresses IP spécifiques peuvent être autorisées à accéder aux requêtes API pour le proxy d'API spécifique, modifiez la règle de contrôle d'accès AccessControl pour autoriser l'accès à cette ou à ces adresses IP. Vous pouvez également supprimer la règle de contrôle d'accès AccessControl du proxy d'API si vous ne souhaitez pas refuser l'accès à ces adresses IP.
Voici un exemple qui montre comment autoriser l'accès à une adresse IP spécifique 104.132.196.83 uniquement et refuser l'accès au reste :
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/09/04 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/09/04 (UTC)."],[[["\u003cp\u003eThis documentation pertains to the \u003ccode\u003eaccesscontrol.IPDeniedAccess\u003c/code\u003e error in Apigee and Apigee hybrid, which occurs when a client IP is denied access by an Access Control Policy.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eaccesscontrol.IPDeniedAccess\u003c/code\u003e error is triggered when the client's IP address, or an IP passed in the request, matches an IP in the \u003ccode\u003e<SourceAddress>\u003c/code\u003e element within the \u003ccode\u003e<MatchRule>\u003c/code\u003e of an Access Control Policy with the \u003ccode\u003eaction\u003c/code\u003e attribute set to \u003ccode\u003eDENY\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eTo diagnose the issue, identify the denied IP address from the \u003ccode\u003efaultstring\u003c/code\u003e in the error response, and locate the corresponding Access Control Policy where the IP is listed in the \u003ccode\u003e<SourceAddress>\u003c/code\u003e element.\u003c/p\u003e\n"],["\u003cp\u003eThe source IP address can be determined by examining the \u003ccode\u003eproxy.client.ip\u003c/code\u003e variable in a UI Trace or by creating a custom report that includes Proxy, Response Status Code, Proxy Client IP, and X-Forwarded-For-IP as dimensions.\u003c/p\u003e\n"],["\u003cp\u003eResolving this error involves either confirming the intended denial of access or modifying the Access Control Policy to allow the specific IP address by changing the \u003ccode\u003eaction\u003c/code\u003e to \u003ccode\u003eALLOW\u003c/code\u003e or removing the Access Control Policy altogether.\u003c/p\u003e\n"]]],[],null,["# AccessControl policy runtime error troubleshooting\n\n*You're viewing **Apigee** and **Apigee hybrid** documentation.\nView [Apigee Edge](https://docs.apigee.com/api-platform/troubleshoot/policies/runtime/access-control-runtime-errors) documentation.*\n| **Note:** Was this troubleshooting playbook helpful? Please let us know by clicking [Send Feedback]().\n\nIPDeniedAccess\n--------------\n\n### Error code\n\n accesscontrol.IPDeniedAccess\n\n### Error response body\n\n```scdoc\n{\n \"fault\": {\n \"faultstring\": \"Access Denied for client ip : client_IP\",\n \"detail\": {\n \"errorcode\": \"accesscontrol.IPDeniedAccess\"\n }\n }\n}\n```\n\n### Example error message\n\n {\n \"fault\": {\n \"faultstring\": \"Access Denied for client ip : 104.132.196.83\",\n \"detail\": {\n \"errorcode\": \"accesscontrol.IPDeniedAccess\"\n }\n }\n }\n\n### Cause\n\nThis error occurs if the client IP address, or any IP address passed as part of the API request, matches any IP address(es) specified in the `\u003cSourceAddress\u003e` element within the `\u003cMatchRule\u003e` element of the Access Control Policy, and the `action` attribute of the `\u003cMatchRule\u003e` element is set to `DENY`.\n\nFor example, let's say the `\u003cSourceAddress\u003e` is defined as shown below: \n\n \u003cSourceAddress mask=\"32\"\u003e104.132.196.83\u003c/SourceAddress\u003e\n\nIf the above IP address matches the IP address of the client system (indicated by the variable `proxy.client.ip`), or any of the IP addresses passed as part of the API request, the error will occur.\n\n### Diagnosis\n\n1. Identify the IP address(es) denied access for a specific API request. You can find this information in the `faultstring` element of the error response.\n\n For example, in the following `faultstring`, the IP address is `104.132.196.83:` \n\n \"faultstring\": \"Access Denied for client ip : 104.132.196.83\"\n\n2. Examine all the Access Control policies in the failed API Proxy and determine the specific policy where the IP address(es) specified in the `\u003cSourceAddress\u003e` element matches the IP address(es) identified in the `faultstring` (Step 1 above).\n\n For example, the following policy defines the `\u003cSourceAddress\u003e` IP as `104.132.196.83,` which matches what is in the `faultstring`: \n\n \u003c?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?\u003e\n \u003cAccessControl async=\"false\" continueOnError=\"false\" enabled=\"true\" name=\"Access-Control\"\u003e\n \u003cDisplayName\u003eAccess-Control\u003c/DisplayName\u003e\n \u003cProperties/\u003e\n \u003cIPRules noRuleMatchAction=\"ALLOW\"\u003e\n \u003cMatchRule action=\"DENY\"\u003e\n \u003cSourceAddress mask=\"32\"\u003e104.132.196.83\u003c/SourceAddress\u003e\n \u003c/MatchRule\u003e\n \u003c/IPRules\u003e\n \u003c/AccessControl\u003e\n\n3. Determine the IP address(es) from which the API request was made. This can be done in multiple ways:\n\n 1. Using UI Trace\n\n 1. Capture the trace for the failing API request.\n 2. Select the specific Access Control Policy that has failed from the right hand panel.\n 3. In the **Phase Details** pane, check the value of the variable `proxy.client.ip` as shown in the following screenshot of a sample trace.\n\n 4. If the `proxy.client.ip` is not listed, then check the value of the\n X-Forwarded-For or True-Client-IP message headers.\n\n 2. Using Custom Reports\n\n You can create Custom Reports to determine whether a 403 status code was thrown during the execution of the Access Control policy within the API proxy and also determine the client IP address. This is particularly useful if the issue has occurred in the past or if the issue is intermittent and you are unable to capture the trace in UI.\n\n Refer to [Creating and managing custom reports](/apigee/docs/api-platform/analytics/create-custom-reports) to understand how to create custom reports. In the custom report, choose:\n 1. **Sum of Traffic** as a Metric, and\n\n 2. **Proxy** , **Response Status Code** , **Proxy Client IP** , and **X-Forwarded-For-IP** as Dimensions.\n\n This should help you to determine the client IP or IP addresses passed that led to the error.\n4. If the client IP address (indicated by the variable `proxy.client.ip`), or any IP address passed as part of the API request, matches the IP address(es) specified in the `\u003cSourceAddress\u003e` element within the `\u003cMatchRule\u003e` element of Access Control Policy, where the `action` attribute is set to `DENY`, then that is the cause of the error.\n\n In the example shown above, the value set in the reference variable `proxy.client.ip` (as seen in the screenshot of the trace above) matches the IP address defined in the `\u003cSourceAddress\u003e` element of the Access Control policy, thus triggering the error response: \n\n \"faultstring\": \"Access Denied for client ip : 104.132.196.83\"\n\n### Resolution\n\nIf the Access Control policy is intended to deny access to API requests coming from the specific IP address(es) listed in the `faultstring`, then the error message is expected. In this case, there is no additional action is required.\n\nHowever, if you determine that the specific IP address(es) can be given access to the API requests for the specific API Proxy, then modify the Access Control Policy to allow access to those IP address(es). Alternatively, you can remove the Access Control Policy from the API Proxy if you don't want to deny access to any IP address(es).\n\nHere is an example that shows how to allow access to a specific IP Address `104.132.196.83` only and deny access for the rest: \n\n \u003cAccessControl name=\"ACL\"\u003e\n \u003cIPRules noRuleMatchAction = \"DENY\"\u003e\n \u003cMatchRule action = \"ALLOW\"\u003e\n \u003cSourceAddress mask=\"32\"\u003e104.132.196.83\u003c/SourceAddress\u003e\n \u003c/MatchRule\u003e\n \u003c/IPRules\u003e\n \u003c/AccessControl\u003e"]]