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

如何正确配置AAD应用注册与WebAPI以启用[Authorize]特性

排查建议
  • 检查认证中间件顺序:确认Program.cs中app.UseAuthentication()要放在app.UseAuthorization()之前,且二者都在app.MapControllers()之前调用。顺序错误会导致授权逻辑不触发,请求直接被拦截。
  • 验证令牌受众(Audience):用JWT解码工具(如jwt.io离线版或自定义解码代码)检查客户端获取的AccessToken的aud字段,是否与WebAPI的AAD应用注册客户端ID完全一致。受众不匹配会被WebAPI直接拒绝,不会进入控制器。
  • 确认作用域配置匹配:
    • 客户端请求令牌时的作用域,必须是WebAPI应用注册中暴露的有效作用域(格式通常为api://{WebAPI-ClientID}/scope-name)。
    • 检查WebAPI的appsettings.json中AzureAd配置,确认Audience字段指向自身客户端ID,或Scope字段包含客户端请求的作用域。
  • 更新依赖包版本:确保Microsoft.Identity.Web为最新稳定版,旧版本可能存在兼容性问题。通过NuGet包管理器更新后重试。
  • 开启详细授权日志:在WebAPI的appsettings.json中添加日志配置,查看授权失败的具体原因:
    "Logging": {
      "LogLevel": {
        "Default": "Information",
        "Microsoft.AspNetCore": "Warning",
        "Microsoft.Identity.Web": "Debug"
      }
    }
    
    启动后查看控制台或日志文件中的授权错误详情,比如令牌签名无效、过期、权限不足等。
  • 验证企业应用权限状态:在AAD企业应用中,确认桌面客户端应用已被授予WebAPI的相关权限,且权限状态为已授予(管理员同意)(委托权限下管理员同意可避免部分环境的权限校验问题)。
  • 检查控制器授权策略:如果控制器[Authorize]特性指定了策略(如[Authorize(Policy = "CustomPolicy")]),需确认该策略在Program.cs中已正确配置,否则会导致请求被拦截;未指定策略时,确保默认授权逻辑正常启用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 19:12:18