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

.NET 6 Azure App Service API调用401问题排查求助

排查Azure App Service上.NET 6 Web API 401未授权问题的步骤

1. 核对Azure AD应用注册配置一致性

  • 检查Azure App Service应用设置里的AzureAd:TenantId、AzureAd:ClientId,确保和本地开发环境配置完全一致,无拼写错误或新旧值混淆
  • 确认API的应用注册已启用对应令牌类型:如果用ID令牌则开启ID令牌,用访问令牌则开启访问令牌,保证与请求时的令牌类型匹配
  • 验证API应用注册的公开API模块中,已正确配置access_as_user等必要范围,且Postman请求时指定的范围完全匹配

2. 校验Postman令牌获取参数

  • 确认Postman使用的租户ID、客户端ID、客户端密钥(若用客户端凭证流)均对应生产环境的应用注册,而非本地测试用的配置
  • 解析Postman获取的令牌(可通过jwt.ms),检查aud字段是否与API的应用ID URI一致——即使代码未显式验证受众,Azure AD中间件可能默认校验该字段
  • 查看令牌的exp字段,确保请求时令牌未过期

3. 检查Azure App Service身份验证设置

  • 进入App Service的身份验证面板,确认已启用Azure AD身份验证,且关联的应用注册为当前API的正确应用注册
  • 确认“未经过身份验证的请求”设置为「HTTP 401 未授权」,避免跳转逻辑干扰API的令牌验证流程
  • 检查是否误启用了App Service的系统分配托管标识,若无需使用可暂时关闭后测试

4. 核查.NET 6 API中间件配置

  • 确认Program.cs/Startup.cs中,AddAuthentication(JwtBearerDefaults.AuthenticationScheme)和AddJwtBearer的配置正确,Authority参数需指向正确的Azure AD租户地址(格式:https://login.microsoftonline.com/{tenantId})
  • 即使你未显式验证受众,检查是否存在隐含校验逻辑:比如AddMicrosoftIdentityWebApi默认会启用受众验证,或代码中是否设置了TokenValidationParameters.ValidAudience
  • 确认app.UseAuthentication()和app.UseAuthorization()的顺序正确,前者必须在前者之前添加

5. 验证Azure AD权限与同意状态

  • 确认服务主体(应用注册)已被授予User.Read权限,且完成了对应同意:应用权限需管理员同意,委托权限需用户/管理员同意,避免权限被撤销或未同步
  • 排查最近是否有Azure AD权限变更操作,比如权限范围修改、应用注册权限被移除

6. 采集更详细的错误日志

  • 在App Service应用设置中添加以下配置,开启详细身份验证日志:
    ASPNETCORE_ENVIRONMENT=Development
    Microsoft.IdentityModel.Logging__LogLevel=Verbose
    
    重新发起API请求后,通过日志流查看令牌验证的具体错误细节(如签名失败、颁发者不匹配等)
  • 查看Azure AD的登录日志,搜索对应请求记录,获取失败原因的详细描述

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 00:10:37