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

Azure Function配置Easy Auth后调用返回403 Forbidden求助

解决Azure Function Easy Auth客户端凭证模式403禁止访问问题

问题背景

外部Web应用通过Azure AAD OAuth2调用配置了Easy Authentication的Azure Function,已创建两个应用注册:

  1. 配置Easy Auth时自动生成的API应用注册
  2. 已配置必要应用权限的客户端应用注册

使用客户端凭证模式获取Token后,携带Bearer Token调用Function地址返回403 Forbidden,提示无权限访问,请求未到达Function逻辑即被Azure拦截。Token包含正确的FunctionReader角色,但验证失败。

排查与解决方案

1. 验证API应用注册配置

  • 受众(Audience)匹配:确认Token中的aud值(api://50a-xx-xxx-xxx)与API应用注册的应用ID URI完全一致,检查是否存在拼写错误或格式问题(必须是api://<client-id>格式)。
  • 应用角色与权限授予:
    1. 进入API应用注册的应用角色页面,确认FunctionReader角色已正确定义,且允许应用程序类型访问。
    2. 进入客户端应用注册的API权限页面,确认已添加API应用的FunctionReader权限,且已完成管理员同意(客户端凭证流需要管理员同意应用权限)。

2. 检查Azure Function的Easy Auth配置

  • 令牌验证设置:
    1. 在Function App的Authentication > Azure Active Directory > 管理中,查看令牌验证设置。
    2. 确保颁发者与Token中的iss值完全匹配:v1.0令牌颁发者为https://sts.windows.net/<tenant-id>/,v2.0为https://login.microsoftonline.com/<tenant-id>/v2.0。
    3. 在允许的令牌受众中添加Token的aud值(api://50a-xx-xxx-xxx),若未配置此项,Easy Auth会拒绝不符合受众的令牌。
  • 访问控制(IAM)补充检查:为客户端应用的服务主体添加Function App的Function App Contributor或Reader角色,部分场景下Easy Auth结合IAM才能完成权限校验。

3. 规范请求与Token使用

  • 确保请求头的Authorization格式正确:Bearer <your-access-token>,无多余空格或特殊字符。
  • 客户端凭证流必须使用Access Token,禁止使用ID Token(ID Token仅用于用户身份验证,不支持客户端应用的权限校验)。

临时规避方法(仅限测试场景)

  • 使用函数密钥调用:在Function App的Functions > 目标函数 > 密钥中获取函数密钥,请求时添加x-functions-key: <function-key>请求头,跳过Easy Auth验证。
  • 临时关闭Easy Auth:在Function App的Authentication设置中,将操作改为允许匿名请求,测试完成后立即恢复身份验证配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 19:57:20