无法通过Postman成功认证Azure Function的Entra/Azure AD身份
确认权限类型是否正确:服务主体属于后台无用户上下文的应用,必须配置应用权限(而非委托权限)。如果之前给的是委托权限,哪怕完成了管理员同意,服务主体调用时依然会因无用户上下文导致权限不足。去Entra ID找到该服务主体,检查API权限类型,确保是Application类型权限且已完成管理员同意。
核对Function认证配置的受众:虽然你说令牌的
aud字段符合预期,但要确认Azure Function的Entra ID认证设置中,是否把这个受众(即Function对应的API ID URI)添加到了允许的受众列表里。有些场景下配置用户认证时仅添加了用户相关受众,漏掉了服务主体需要的API URI。验证令牌颁发者(iss)与租户匹配:检查令牌的
iss字段,确认其对应的租户ID和Function绑定的Entra租户ID完全一致。如果Postman的授权URL填错了租户(比如用了common而非具体租户ID),会导致iss不匹配,Function直接拒绝请求。查看Function的详细错误日志:登录Azure门户,进入Function App -> 监测 -> 日志,搜索401相关请求日志。日志里会给出具体失败原因——比如令牌签名验证失败、权限范围不匹配、受众无效等,这是最直接的排查线索。
检查请求头部格式:确保Postman的Authorization头部是
Bearer <你的令牌>格式,没有拼写错误(比如漏写Bearer、空格错误),头部名称正确(不要写成Auth或其他)。排查条件访问策略拦截:检查Entra ID的条件访问策略,看是否有策略限制了服务主体的访问(比如要求特定IP、阻止非托管设备等)。可以临时针对该服务主体排除策略,测试是否能正常访问。
内容的提问来源于stack exchange,提问作者frmrIntern

