仅允许Azure APIM访问特定ASP.NET Core控制器的方案咨询
解决方案建议
网络层IP限制
在应用服务器的防火墙(比如Azure NSG)或者ASP.NET Core中间件中,把那5个合作伙伴API的访问来源限制为Azure APIM的出站IP段。合作伙伴直接调用时,由于IP不在允许列表内会被拦截,只能通过APIM路由访问。需要注意定期同步APIM的IP段,避免因为Azure IP变动导致访问异常。专属OIDC客户端校验
给5个合作伙伴API单独配置一个专属的OIDC客户端,在APIM策略里强制用这个客户端的凭据获取token并转发请求。同时在ASP.NET Core的授权逻辑中,针对这几个控制器添加校验规则:只有token的客户端ID匹配专属APIM客户端ID的请求才允许通过。直接调用的请求拿不到这个专属客户端的token,自然会被拒绝。请求签名验证
在APIM里给转发的请求添加HMAC签名(结合请求参数、时间戳和双方约定的共享密钥),然后在ASP.NET Core里写一个中间件专门校验这个签名。合作伙伴直接调用时无法生成符合要求的签名,请求会被拦截。这种方式不依赖APIM的内置标识符,还能覆盖所有端点包括etc类的,安全性也更高。路径重映射隔离
把合作伙伴API的原路径设置为仅内部访问,同时在APIM里映射一个新的对外路径。比如原路径/api/partner/*只允许APIM的IP访问,APIM对外暴露/api/v1/partner/*供合作伙伴调用。这样合作伙伴只能通过APIM的新路径访问,直接访问原路径会被拒绝。
内容的提问来源于stack exchange,提问作者Akhilesh
相关产品推荐
相关产品推荐

