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

Azure B2C登录后调用ASP.NET Core 8 Web API遇401 Invalid_token问题

可能导致Azure B2C Token验证401 Invalid_token的原因
  • Token受众(Audience)不匹配

    • Access Token的aud声明必须与API的Azure B2C应用程序ID完全一致。如果前端请求Token时指定的Scope错误,或者API配置的受众值不正确,都会触发验证失败。
    • ID Token的设计用途是供前端验证用户身份,它的aud声明是前端应用的ID,而非API的应用ID,因此用ID Token调用API必然会报无效,这是设计层面的问题,ID Token不能用于访问后端API。
  • Token签名验证失败

    • 后端ASP.NET Core未正确配置Azure B2C的元数据地址,导致无法获取有效公钥验证Token签名。检查appsettings.json中的Authority字段,确认其为正确的B2C策略地址,格式应为https://<tenant>.b2clogin.com/<tenant>.onmicrosoft.com/<policy>/v2.0/。
    • 若Token由旧策略生成,但后端配置了新策略,会因签名密钥不匹配导致验证失败。
  • Token过期或被吊销

    • 解码Token查看exp声明,确认Token是否已过期。可通过JWT解析工具直接查看过期时间。
    • 若Azure B2C中用户会话被吊销,或Token被主动撤销,也会触发无效验证。
  • 后端Azure B2C配置缺失或错误

    • 确认Program.cs中是否正确添加了B2C认证服务,示例代码:
      builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
          .AddMicrosoftIdentityWebApi(builder.Configuration.GetSection("AzureAdB2C"));
      
    • 检查appsettings.json内的AzureAdB2C配置,确保ClientId为API的应用ID,Domain、SignUpSignInPolicyId等参数与Azure B2C后台配置一致。
  • Scope配置错误

    • 前端请求Access Token时,必须包含API的自定义Scope(例如https://<tenant>.onmicrosoft.com/api/access_as_user),若Scope不正确,Access Token的scp声明将不包含API所需权限,后端会拒绝请求。
    • 确认API在Azure B2C后台已暴露对应Scope,且前端应用已被授予该Scope的访问权限。
  • Token加密方式不兼容

    • 若Azure B2C配置了加密Token,但后端未配置对应的解密密钥,会导致无法解析Token而报无效。检查Azure B2C应用程序的Token加密设置,确认后端是否配置了匹配的解密参数。
  • Postman请求配置问题

    • 确认Postman中Bearer Token的格式正确,无多余空格或特殊字符。虽然该报错核心是Token本身,但请求头的非法字段也可能间接引发验证问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 23:09:58