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

使用Azure AD B2C示例代码时TokenResponse反序列化遇'<'错误求助

解决AcquireTokenByAuthorizationCodeAsync抛出的反序列化异常

这个问题我碰到过好几个开发者遇到,核心原因其实很直观:AcquireTokenByAuthorizationCodeAsync调用令牌端点时,收到的不是预期的JSON格式TokenResponse,而是HTML内容(异常里提到的意外字符'<'就是HTML标签的起始)——这说明Azure AD B2C返回了错误页面,而不是合法的令牌响应。

下面是一步步的排查和修复方案:

1. 先确认授权码和回调URL的一致性

  • 授权码是一次性的,如果你不小心重复使用了同一个授权码,B2C会返回错误页面,直接导致反序列化失败。检查你的代码里有没有多次调用AcquireTokenByAuthorizationCodeAsync使用同一个授权码的情况。
  • 重点检查回调URL:Azure B2C应用注册里配置的重定向URI必须和你代码里RedirectUri的配置完全一致,包括HTTP/HTTPS、端口、路径,甚至末尾的斜杠都不能差。比如代码里是http://localhost:5000/signin-oidc,但B2C里注册的是https://localhost:5000/signin-oidc,这种细微差别就会触发错误页面返回。

2. 核对ConfidentialClientApplication的核心配置

确保初始化ConfidentialClientApplication时的参数没有错误:

  • ClientId:必须和B2C应用注册里的客户端ID完全匹配,不能有拼写错误。
  • ClientSecret(或证书):如果用的是客户端密钥,确认密钥没有过期,并且复制的是完整的密钥值(不是密钥ID);如果用证书,确保证书的指纹和B2C里配置的一致。
  • Authority:格式必须正确,比如用户流的Authority应该是https://{你的租户名}.b2clogin.com/{你的租户名}.onmicrosoft.com/{你的用户流ID},比如https://contoso.b2clogin.com/contoso.onmicrosoft.com/B2C_1_signupsignin,不要漏了用户流部分。

3. 开启MSAL日志查看具体错误内容

要知道B2C到底返回了什么错误HTML,最直接的方式是开启MSAL的详细日志:

// 在初始化ConfidentialClientApplication时添加日志配置
var loggerFactory = new LoggerFactory();
loggerFactory.AddConsole(LogLevel.Debug);

var confidentialClient = ConfidentialClientApplicationBuilder
    .Create(yourClientId)
    .WithClientSecret(yourClientSecret)
    .WithAuthority(yourAuthority)
    .WithRedirectUri(yourRedirectUri)
    .WithLoggerFactory(loggerFactory)
    .Build();

运行代码后,查看控制台日志里的响应内容,通常能找到具体的错误代码(比如invalid_client、redirect_uri_mismatch),这些错误会被B2C包装成HTML页面返回,直接导致反序列化失败。

4. 检查用户流/自定义策略的配置

  • 如果使用的是自定义策略,确保策略里的OAuth2技术配置正确,令牌端点的URL没有写错,并且策略没有配置错误导致返回错误页面。
  • 确认你的用户流没有被禁用,租户状态正常(比如没有欠费或被限制)。

常见的修复案例

  • 之前有开发者把RedirectUri配置成了HTTP,但B2C里注册的是HTTPS,导致返回400错误的HTML;
  • 还有用户复制ClientSecret时只复制了部分内容,导致invalid_client错误,触发HTML返回;
  • 授权码被重复使用,也会触发这个异常。

总的来说,这个异常的本质是令牌请求没有得到合法的JSON响应,而是错误页面,所以通过日志定位具体错误、核对配置一致性是最快的解决路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:35:05