You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同一Azure App Service Plan下,如何限制API应用仅允许前端应用访问?

解决方案:限制Azure App Service中API仅接受指定前端应用访问

针对同一App Service Plan下API应用需仅允许前端应用访问、且出站IP不固定的场景,推荐以下几种可行方案:

1. Azure AD身份验证(推荐方案)

  • 给API应用启用Azure AD身份验证,设置为仅允许已认证用户/应用访问,拒绝匿名请求。
  • 在Azure AD中为前端应用注册应用程序,配置其对API应用的访问权限(添加API权限,选择API应用的自定义范围)。
  • 前端应用调用API时,使用MSAL库获取针对API应用的访问令牌,在请求头中携带Authorization: Bearer <令牌>。
  • API应用验证令牌的发行者(iss)和受众(aud),同时检查令牌中的appid声明是否为前端应用的客户端ID,确保请求来自指定前端。
  • 优势:完全基于身份验证,不受IP变更影响;符合Azure安全最佳实践,无需依赖网络配置。

2. 托管标识(Managed Identity)+ 自定义中间件

  • 为前端应用启用系统分配的托管标识。
  • 前端调用API时,获取托管标识的访问令牌(目标资源为API应用的应用ID URI),并在请求头中传递。
  • API应用添加自定义中间件,验证令牌的appid是否匹配前端应用的托管标识客户端ID,验证通过则允许访问。
  • 可选:结合API应用的访问限制规则,先允许所有Azure服务流量进入,再通过中间件做身份校验,进一步缩小访问范围。

3. 虚拟网络(VNet)集成隔离

  • 将所有三个应用配置为集成到同一个Azure虚拟网络(VNet)中(需App Service Plan为Basic及以上层级)。
  • 在API应用的访问限制中,添加规则仅允许来自该VNet的私有IP范围访问。
  • 优势:网络层面实现隔离,无需额外身份验证逻辑;但需要配置VNet资源,可能产生额外成本,且迁移现有应用到VNet需注意网络配置兼容性。

4. 自定义API密钥验证(简易方案)

  • 前端与API应用约定一个强密钥(如随机生成的长字符串),前端调用API时在请求头(如X-API-Key)中携带该密钥。
  • API应用在接收请求时,校验请求头中的密钥是否与预存的密钥一致,一致则允许访问。
  • 注意:需定期轮换密钥,避免密钥泄露;该方案安全性低于身份验证方案,仅适合低敏感场景。

内容的提问来源于stack exchange,提问作者Arsalan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 07:22:15