You need to enable JavaScript to run this app. 如何解决Azure App Service访问Azure Function时的401授权错误
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Azure App Service访问Azure Function时的401授权错误

问题复盘
  • 已将Azure Function部署至Azure云环境,核心需求为:仅允许指定自有Azure App Service WebApp访问该Function,完全阻断公网匿名请求
  • 已在Function配置中开启身份验证规则:未登录请求强制跳转Azure AD完成登录,手动完成登录流程后可正常执行Function逻辑
  • 已完成Function对应的Azure AD应用注册,在应用注册的授权客户端应用板块添加了目标WebApp的应用ID
  • 实际调用异常:WebApp向Function发起HTTP GET请求时,持续返回401未授权错误,页面提示“您无权查看此目录或页面”

对应配置过程的截图:
Azure Function AAD配置界面
手动登录后Function访问成功
应用注册授权客户端应用配置
WebApp调用返回401错误

正确配置方案(解决401并满足访问管控需求)

出现401的核心原因:仅在应用注册页添加授权客户端ID,没有打通从WebApp获取令牌到Function校验令牌的全链路逻辑,导致请求无法通过身份验证中间件的校验。

具体操作步骤:

  • 调整Function端的身份验证基础配置
    • 进入Function的「身份验证」配置页,将未通过身份验证的请求处理规则设置为Azure Active Directory登录,彻底关闭匿名访问权限
    • 检查AAD提供程序的访问令牌版本,将其统一设置为2.0版本,和后续客户端获取令牌的版本保持一致,避免版本不匹配导致的校验失败
  • 打通WebApp到Function的令牌获取链路
    • 依托Azure App Service的内置身份能力为WebApp分配系统托管标识,不要在WebApp代码中硬编码客户端密钥来获取令牌
    • 在Function对应的应用注册的「API权限」板块,为WebApp的托管标识添加对应的应用访问权限,并完成租户级别的管理员授权同意
    • 开启WebApp的令牌存储功能,确保WebApp发起Function请求时,能自动在请求头中携带格式为Bearer <有效访问令牌>的授权信息
  • 修正应用注册的授权配置逻辑
    • 进入Function应用注册的「公开API」板块,确认已配置固定的应用ID URI(格式为api://<Function应用的客户端ID>),后续WebApp获取令牌时必须把这个URI作为请求资源,不能直接用Function的HTTP URL作为资源
    • 核对“授权客户端应用”列表中的ID值,必须和WebApp用于获取令牌的实际客户端ID完全匹配,ID填错会导致令牌直接被判定为无权限
  • 补充网络层的访问管控(双重保障满足禁公网需求)
    • 进入Function的「网络」配置页,配置访问限制规则,仅放行WebApp的固定出站IP段,从网络层直接阻断公网的无权限请求
    • 对安全要求较高的场景,可以为Function配置私有端点,将其接入和WebApp同一个虚拟网络,彻底关闭Function的公网接入入口
快速排查401的方法

开启Function的应用服务诊断日志,定位身份验证模块的报错日志,90%以上的401报错都属于三类问题:

  • WebApp发起的请求没有在请求头中携带有效的Authorization字段
  • 携带的访问令牌的受众(aud)字段和Function配置的应用ID URI不匹配
  • 令牌的签发版本和Function端配置的校验版本不一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.08 01:45:04