Azure Function AAD客户端凭据流配置后跨函数调用返回401问题排查
Azure Function调用401问题排查
1. 令牌请求scope配置错误
客户端凭证模式请求令牌时未指定服务端函数作为目标受众,默认生成的令牌受众为Microsoft Graph,服务端身份验证模块无法识别。
- 修复步骤:
- 复制服务端函数关联应用注册的「应用程序ID URI」,格式通常为
api://<服务端应用注册client_id> - Postman请求令牌时,
scope参数填入api://<服务端应用注册client_id>/.default,重新获取令牌后测试
- 复制服务端函数关联应用注册的「应用程序ID URI」,格式通常为
2. 服务端允许的受众配置缺失
Azure Function内置身份验证模块默认仅校验令牌aud声明是否匹配函数应用域名,自定义应用注册场景需要手动补充允许的受众值:
- 修复步骤:
- 进入服务端函数「身份验证」面板,编辑Microsoft身份提供方配置
- 在「允许的受众」配置项中,新增服务端应用注册的客户端ID、应用程序ID URI两个值,保存后等待1-2分钟配置生效
3. 服务端授权校验逻辑冲突
单租户场景下默认要求客户端应用注册提前获得服务端的应用权限授权,如果你不需要做权限校验,可直接在服务端身份提供方配置中关闭「需要授权」选项,跳过权限校验步骤,仅校验身份有效性。
如果保留权限校验逻辑,按以下步骤修复:
- 修复步骤:
- 进入服务端应用注册的「公开API」面板,新增一个应用权限(命名可自定义,设置为仅管理员许可)
- 进入客户端应用注册的「API权限」面板,搜索并添加上述服务端应用权限,提交租户管理员同意
- 重新请求令牌后调用测试
4. 函数授权级别配置冲突
检查服务端HTTP触发函数的授权级别是否设置为Anonymous,如果设置为Function或Admin级别,即使身份验证通过,也会因缺少函数访问密钥返回401。
内容的提问来源于stack exchange,提问作者Rob Bowman
相关产品推荐
相关产品推荐

