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

如何在Azure静态Web应用与Azure应用服务间配置访问控制?

问题解答

Azure API Management方案是否可行?

完全可行。Azure API Management(APIM)作为全托管的API网关,非常适合解决这类前后端访问控制的问题。它可以作为中间层隔离后端App Service与外部请求,同时提供精细的访问控制能力,从网关层面拦截未授权请求。

最有效的配置方法

方案1:Azure API Management + App Service访问限制(推荐)

这是最可靠的双重保障方案:

  1. 部署并配置APIM:创建APIM实例,将你的FastAPI后端导入为APIM中的API(可通过后端URL直接导入,或手动定义API结构)。
  2. 限制App Service仅允许APIM访问:在App Service的「网络」→「访问限制」中添加规则,将APIM实例的出站IP地址段设为唯一允许的来源(APIM的IP可在门户「概述」页面获取,或通过Azure CLI命令az apim show --name <apim-name> --resource-group <rg-name> --query "publicIpAddresses"批量导出)。
  3. 配置静态Web Apps路由:在静态Web Apps根目录创建staticwebapp.config.json,添加路由规则将前端的API请求转发到APIM的API URL,示例:
    {
      "routes": [
        {
          "route": "/api/*",
          "backend": {
            "url": "https://<your-apim-name>.azure-api.net/api/*"
          }
        }
      ]
    }
    
  4. 可选增强:在APIM中添加策略,验证请求的Origin或Referer头是否匹配你的静态Web Apps域名,进一步拦截非前端来源的请求。

方案2:Azure Front Door + App Service访问限制

若不想使用APIM,Azure Front Door作为CDN+网关服务也能实现类似效果:

  1. 创建Front Door实例:将你的App Service添加为后端池,配置Front Door的前端域名。
  2. 限制App Service仅允许Front Door访问:在App Service访问限制中添加Front Door的官方IP地址段(可通过Azure官方文档获取Front Door的IP范围)。
  3. 配置Front Door规则:通过路由规则或WAF策略,限制请求来源仅为你的静态Web Apps域名。
  4. 前端通过Front Door域名访问API:修改前端API请求地址为Front Door的域名。

方案3:增强应用层验证(轻量替代方案)

若暂时不想引入额外服务,可以改进现有代码的验证逻辑,弥补CORS的不足:

  • CORS仅作用于浏览器端,恶意请求可直接绕过浏览器调用API,因此需添加服务器端验证:
    from fastapi import Request, HTTPException
    
    @app.middleware("http")
    async def verify_request_source(request: Request, call_next):
        allowed_origin = "https://xxxx.x.azurestaticapps.net"
        origin = request.headers.get("origin")
        referer = request.headers.get("referer")
        
        # 验证Origin或Referer头是否匹配授权域名
        if not (origin == allowed_origin or (referer and allowed_origin in referer)):
            raise HTTPException(status_code=403, detail="Unauthorized request source")
        
        response = await call_next(request)
        return response
    
  • 配合Azure AD身份验证:让前端通过Azure AD获取访问令牌,后端验证令牌的有效性和受众(Audience),确保只有授权的前端应用能访问API。

注意:当前仅依赖CORSMiddleware的方案安全性不足,因为CORS是浏览器的同源策略限制,无法阻止直接发起的API请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 17:21:04