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

ASP.NET Core中Azure AD B2C Web API认证测试返回invalid_request错误

排查Postman调用Azure AD B2C Web API返回invalid_request错误的方案

我之前也踩过类似的坑,结合你给出的配置信息,咱们一步步拆解可能的问题点:

1. 修正Postman授权URL的格式

你当前用?p=B2C_1_SiUpIn通过查询参数指定策略,这不符合Azure AD B2C的标准协议格式,很容易触发invalid_request。正确的授权URL应该是:

https://login.microsoftonline.com/tfp/trukafaire.onmicrosoft.com/B2C_1_SiUpIn/oauth2/v2.0/authorize

更推荐使用B2C专属域名的格式(避免潜在的跨域或协议兼容问题):

https://trukafaire.b2clogin.com/trukafaire.onmicrosoft.com/B2C_1_SiUpIn/oauth2/v2.0/authorize

2. 确认Postman应用的核心配置

  • Client ID别搞混:Postman里填的Client ID必须是你在Azure AD B2C中创建的Postman应用注册的ID,而不是Web API的Client ID(你的Web API ID是c9f1cb20-xxxx-xxxx-xxxx-xxxxxxxxxxxx,这俩千万别弄反)。
  • 回调URL严格匹配:Postman默认的回调URL是https://oauth.pstmn.io/v1/callback,你得确保这个URL已经完整添加到Azure AD B2C中Postman应用的「回复URL(重定向URI)」列表里,大小写、HTTPS前缀都不能错。

3. 验证API权限的授予状态

你的Scope包含了Web API的user_impersonation权限,需要确认:

  • 在Azure AD B2C的Postman应用注册中,已经添加了Web API的user_impersonation权限;
  • 已经点击「授予管理员同意」(B2C租户需要全局管理员身份操作,否则权限不会生效)。

4. 检查Web API的Startup配置

确保你在Startup.cs中正确配置了Azure AD B2C的Bearer认证,示例代码如下:

using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.Identity.Web;

public void ConfigureServices(IServiceCollection services)
{
    services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
        .AddAzureADB2CBearer(options => Configuration.Bind("AzureAdB2C", options));

    services.AddControllers();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // 其他中间件(如异常处理、静态文件)...

    app.UseAuthentication();
    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
}

注意UseAuthentication()必须在UseAuthorization()之前执行,顺序错了会导致认证逻辑不生效。

5. 启用详细日志抓细节

如果以上步骤都排查完还是有问题,建议开启Web API的详细认证日志:
修改appsettings.json的Logging配置:

"Logging": {
  "IncludeScopes": true,
  "Debug": {
    "LogLevel": {
      "Microsoft.AspNetCore.Authentication": "Debug",
      "Default": "Information"
    }
  },
  "Console": {
    "LogLevel": {
      "Microsoft.AspNetCore.Authentication": "Debug",
      "Default": "Information"
    }
  }
}

重新启动Web API后,控制台会输出认证流程的详细日志,能帮你定位到具体的协议错误点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 09:01:18