Azure APIM配置IP过滤策略后,如何允许开发者门户请求?
解决Azure APIM启用IP过滤后拦截开发者门户请求的方案
问题原因
开发者门户的API测试功能并非从门户服务器转发请求,而是由用户本地浏览器直接向APIM网关发起请求,所以请求的源IP是你本地设备的公网IP,不是你通过nslookup获取的开发者门户VIP地址,这就是添加VIP后仍被拦截的核心原因。
可行解决方案
1. 直接添加本地公网IP到允许列表(适合测试场景)
查询你本地设备的公网IP,将其加入ip-filter的允许地址中:
<ip-filter action="allow"> <address>13.**.**.72</address> <address>你的本地公网IP</address> </ip-filter>
2. 通过请求头识别开发者门户测试请求(更灵活)
开发者门户发起的测试请求会携带特定请求头,可结合条件策略放行这类请求:
<choose> <!-- 放行带测试标识或来自开发者门户的请求 --> <when condition="@(context.Request.Headers.ContainsKey("Ocp-Apim-Test-Key") || (context.Request.Headers.ContainsKey("Referer") && context.Request.Headers.GetValueOrDefault("Referer","").Contains("你的开发者门户域名")))"> <ip-filter action="allow"> <address>0.0.0.0/0</address> </ip-filter> </when> <!-- 对其他请求应用原有IP过滤规则 --> <otherwise> <ip-filter action="allow"> <address>13.**.**.72</address> </ip-filter> </otherwise> </choose>
注意将你的开发者门户域名替换为实际地址,比如xxx.developer.azure-api.net。
3. 添加托管开发者门户的IP段(适合生产环境)
若使用微软托管的开发者门户,可查阅Azure官方发布的APIM托管服务IP范围,将对应门户的IP段批量加入允许列表,避免单个IP维护的麻烦。
验证方法
修改策略并保存后,在开发者门户重新测试API,确认请求不再被拦截。
内容的提问来源于stack exchange,提问作者Shafeeq
相关产品推荐
相关产品推荐

