Azure Function认证失败:Function Key与OAuth2.0均返回401错误
Azure Function认证401问题排查方案
一、Function Key方式排查
- 核对密钥类型与函数授权级别:
- 查看函数的
function.json文件,确认authLevel字段值:- 若为
"function",需使用函数级密钥或主机密钥 - 若为
"admin",仅能使用管理员级主机密钥
- 若为
- 登录Azure门户,在Function App的「密钥」页面复制对应类型的最新密钥,避免使用已过期或重置的旧密钥
- 查看函数的
- 检查请求头正确性:
- 确保请求头字段为
x-functions-key(全小写,无空格),值为复制的密钥,未误放在URL参数或其他位置
- 确保请求头字段为
- 排查函数代码拦截:检查函数代码中是否存在自定义的认证逻辑,覆盖了默认的密钥验证规则
二、OAuth2.0(App Registration)方式排查
- 确认App Registration权限配置:
- 在Azure AD的App Registration中,添加「Azure Functions User」应用权限,并完成管理员同意
- 验证令牌的受众(Audience):使用JWT解码工具解析Bearer令牌,确认
aud字段与Function App的应用ID URI(格式为api://<function-app-client-id>)完全匹配
- 核对Function App认证配置:
- 在Function App的「认证」页面,确认已启用Azure AD身份验证,且租户ID、客户端ID与创建的App Registration一致
- 检查「允许的令牌颁发者」设置,确保包含你的Azure AD租户颁发的令牌(格式为
https://login.microsoftonline.com/<tenant-id>/v2.0)
- 验证令牌获取流程:
- 确认MVC后端获取令牌时,请求的token endpoint为
https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/token - 检查请求的
scope参数是否为Function App的应用ID URI拼接/.default(例如api://xxxx-xxxx-xxxx/.default)
- 确认MVC后端获取令牌时,请求的token endpoint为
- 排查令牌有效性:确认令牌未过期,且签名验证通过(可通过JWT解码工具查看
exp字段和签名状态)
三、通用排查项
- 检查IP限制配置:查看Function App的「网络」->「访问限制」,确认未设置仅允许特定IP访问,或已将MVC后端的IP加入允许列表
- 查看函数日志:在Azure门户的Function App「监控」->「日志」中,查看401错误的详细日志信息,定位具体错误原因(如令牌无效、密钥不匹配、权限不足等)
- 直接测试MVC后端调用:跳过Postman,使用MVC后端的实际代码发起请求,排除Postman配置错误的可能性
内容的提问来源于stack exchange,提问作者ChristianOConnor
相关产品推荐
相关产品推荐

