Problèmes de limitation des requêtes et HTTP 403 - Problèmes interdits
En faisant référence à l’article sur azure Gestion des API série de résolution des problèmes, il s’agit du cinquième scénario du labo. Vérifiez que vous avez suivi les instructions de configuration du labo en fonction de cela, pour recréer le problème.
Version du produit d’origine : service Gestion des API
Numéro de base de connaissances d’origine : 4464928
Symptômes
L’API Resources récupère les détails personnels de l’utilisateur, les publications sur les réseaux sociaux, les commentaires et les photos et utilise la réponse retournée pour un projet Machine Learning. Étrangement après quelques jours d’utilisation, l’opération GetPosts a commencé à lever l’erreur HTTP 403 - Interdit alors que les autres opérations fonctionnent correctement comme prévu.
{
« statusCode » : 403,
« message » : « Interdit »
}
En dehors de ce qui précède, nous rencontrons également une erreur HTTP 429 - Trop de requêtes lors de l’appel de l’opération GetComments pour chaque seconde requête. Le problème se résout automatiquement après 10 secondes, mais il se répète une fois le premier appel à l’API effectué. Le comportement n’est pas observé pour les autres opérations.
{
"statusCode": 429,
« message » : « La limite de débit est dépassée. Réessayez en 5 secondes.
}
Étapes de dépannage
HTTP 403 - Une erreur interdite peut être levée quand une stratégie de restriction d’accès est implémentée.
Vérifiez la trace de l’inspecteur APIM et vous devez remarquer l’existence d’une stratégie « ip-filter » qui filtre (autorise/refuse) les appels à partir d’adresses IP et/ou de plages d’adresses spécifiques.
Pour vérifier l’étendue de la stratégie « ip-filter », sélectionnez le bouton Calculer la stratégie effective. Si vous ne voyez aucune stratégie de restriction d’accès implémentée dans toutes les étendues, l’étape de validation suivante doit être effectuée au niveau du produit, en accédant au produit associé, puis en cliquant sur l’option Stratégies.
<inbound> <base /> <choose> <when condition="@(context.Operation.Name.Equals("GetPosts"))"> <ip-filter action="forbid"> <address-range from="0.0.0.0" to="255.255.255.255" /> </ip-filter> </when> </choose> </inbound>
Pour le deuxième problème (HTTP 429 - Trop de requêtes), nous suivrons la même procédure en vérifiant la trace de l’inspecteur APIM et en vérifiant s’il existe une stratégie « rate-limit » ou « rate-limit-by-key » implémentée à n’importe quelle étendue.
Si vous calculez la stratégie effective, vous devez remarquer une stratégie de restriction d’accès (limite de débit par clé) implémentée dans l’étendue globale, c’est-à-dire sous « Traitement entrant » dans l’option « Toutes les API ».
<inbound> <choose> <when condition="@(context.Operation.Name.Equals("GetComments"))"> <rate-limit-by-key calls="1" renewal-period="10" increment-condition="@(context.Response.StatusCode == 200)" counter-key="@(context.Request.IpAddress)" /> </when> </choose> </inbound>
En savoir plus sur les stratégies ip-filter et rate-limit-by-key dans APIM.
Contactez-nous pour obtenir de l’aide
Pour toute demande ou assistance, créez une demande de support ou posez une question au support de la communauté Azure. Vous pouvez également soumettre des commentaires sur les produits à la communauté de commentaires Azure.