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

Postman调用启用Azure AD的Function App返回401认证失败如何解决

问题根因

你当前获取的令牌受众不匹配,这是返回401的核心原因。
你请求token时填的resource参数是https://management.azure.com/,拿到的是Azure资源管理平面专用令牌,仅能用于操作Azure资源管控接口(比如修改Function配置、重启服务这类管理操作),无法通过Function App内置AAD认证的校验逻辑——Function App的AAD认证会强制校验令牌的aud(受众)声明,只有令牌受众匹配Function App配置的允许值时才会放行。
另外补充:获取AAD令牌的接口规范要求使用POST方法,你当前用GET请求虽然临时拿到了令牌,但不符合接口规范,部分租户策略下会直接拦截该类请求。

正确认证配置步骤

1. 确认Function App的允许令牌受众

进入你的Function App「身份验证」页面,找到已配置的Azure AD身份提供程序,记录两个关键信息:

  • 该身份提供程序关联的AAD应用客户端ID
  • 「允许的令牌受众」列表,默认包含以下两个有效值:
    • https://AzureIdentity.azurewebsites.net(替换为你的Function App实际默认域名)
    • api://<前述AAD应用客户端ID>
      后续获取token时,资源参数必须从上述列表里选,不能用其他值。

2. 修正令牌获取请求

推荐使用v2.0版本的AAD令牌端点,请求配置如下:

POST https://login.microsoftonline.com/{你的租户ID}/oauth2/v2.0/token
请求头:
Content-Type: application/x-www-form-urlencoded

请求体(表单格式):
grant_type=client_credentials
&client_id=04e17699-64cd-42ec-96ec-23be345ef6ed
&client_secret={你生成的客户端密钥}
&scope=https://AzureIdentity.azurewebsites.net/.default

如果你坚持用v1.0端点,就把请求体里的scope参数换成resource,值填你之前记录的允许受众值即可,比如https://AzureIdentity.azurewebsites.net。

3. 携带令牌调用Function接口

调用Function App的业务接口时,在请求头中添加以下字段即可:

Authorization: Bearer <上一步请求拿到的access_token值>
常见排查点
  • 如果修正参数后还是返回401,把拿到的access_token解码(直接用JWT解码工具即可,不需要验签),检查aud字段的值是否和你在Function AAD配置里的允许受众完全一致,多一个末尾斜杠、字符错漏都会导致校验失败。
  • 如果你在AAD应用里开启了角色/权限分配校验,需要提前给调用方对应的服务主体授予Function关联AAD应用的应用权限,否则客户端凭据流的请求会被权限校验拦截。
  • 严格区分管理平面令牌和数据平面令牌:管控Azure资源用ARM受众的令牌,调用Function业务接口必须用Function自身受众的令牌,二者不能混用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 21:45:44