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

ASP.NET Core Web API集成AAD认证调用报401令牌签名无效错误

AAD集成场景下Vue3调用ASP.NET Core Web API返回401排查指南

调用接口返回401未授权时,响应头WWW-Authenticate字段返回如下错误:

Bearer error="invalid_token", error_description="The signature is invalid"

可按照以下优先级逐一排查:

核心高频诱因(90%以上此类问题由以下配置错误导致)

  • 前端获取令牌的scope配置错误
    必须使用后端Web API在AAD中暴露的委托权限scope作为令牌请求的资源参数,格式为api://<后端API注册的ClientId>/<自定义scope名>。禁止使用Microsoft Graph相关scope(如User.Read)、前端SPA自身的ClientId作为scope值,这类scope拿到的令牌是签发给其他资源的,后端用自身对应的公钥验签必然返回签名无效。
  • 令牌受众(aud)不匹配
    直接把前端拿到的JWT令牌中间payload段做base64解码,检查aud字段值,必须和后端appsettings.json中AzureAd节点配置的ClientId完全一致,字符偏差、错填为前端应用ClientId都会直接触发验签失败。

AAD应用注册配置校验项

  • 确认后端API对应的应用注册类型为Web API,而非单页应用(SPA)、桌面客户端等其他类型;在「公开API」配置页设置的应用ID URI,必须和前端请求令牌时使用的资源地址完全匹配。
  • 确认前端SPA对应的应用注册,已经被授予后端API的对应委托权限,避免租户特殊配置下的令牌签发异常。
  • 确认TenantId配置为AAD租户的GUID格式值,不要填租户域名、错误租户ID,否则拿到的令牌为其他租户签发,公钥不匹配会直接报签名错误。

后端配置与环境校验

  • 清理冗余配置:当前appsettings.json的AzureAd节点同时存在Secret和ClientSecret两个密钥字段,属于连接服务自动生成的冗余项,仅保留ClientSecret字段即可,删除多余的Secret字段避免配置读取异常。现有配置参考如下:
builder.Services
       .AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
       .AddMicrosoftIdentityWebApi(builder.Configuration.GetSection("AzureAd"))
       .EnableTokenAcquisitionToCallDownstreamApi()
       .AddInMemoryTokenCaches();
"AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "TenantId": "你的租户GUID",
    "ClientId": "后端API的应用ClientId",
    "Domain": "你的租户域名",
    "CallbackPath": "/signin-oidc",
    "ClientSecret": "后端API的客户端密钥",
    "ClientCertificates": []
  }
  • 校验服务器时间:后端部署服务器的系统时间偏差不能超过5分钟,JWT验签会校验令牌生效、过期时间,时间偏差过大也会被判定为令牌无效。
  • 确认元数据拉取正常:如果后端部署在内网/代理环境,需要保证服务能正常访问AAD的OpenID Connect元数据地址,拉取对应租户最新的签名公钥;如果是离线环境,需要手动配置最新签名公钥,旧公钥验签新令牌会直接报签名错误。

令牌传输校验

  • 解码JWT的header段,确认alg字段值为RS256,AAD默认给公共客户端签发RS256非对称签名令牌,若返回HS256算法的令牌说明令牌获取流程完全错误。
  • 检查请求头格式:Authorization头必须符合Bearer <完整JWT令牌>格式,Bearer和令牌之间保留一个半角空格,令牌前后不能有多余引号、换行、转义字符,避免截断导致的验签失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 18:51:05