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

Blazor WebAssembly独立应用调用API未携带JWT授权头问题

解决Blazor WebAssembly Azure B2C调用API时未携带JWT令牌的问题

可能的问题及修复步骤:

  1. 验证BaseAddressAuthorizationMessageHandler的匹配逻辑
    BaseAddressAuthorizationMessageHandler只会自动为请求地址与客户端BaseAddress完全匹配的请求附加令牌。如果你的API地址和应用BaseAddress不一致,或者请求路径超出BaseAddress范围,令牌不会被添加。这种情况下,改用AuthorizationMessageHandler并显式指定目标API范围:
builder.Services.AddHttpClient("WebAPI", client => client.BaseAddress = new Uri(baseAddress))
    .AddHttpMessageHandler(sp =>
    {
        var handler = sp.GetRequiredService<AuthorizationMessageHandler>()
            .ConfigureHandler(
                authorizedUrls: new[] { baseAddress },
                scopes: new[] { "https://{domain}.onmicrosoft.com/{App ID}/Api.Access" });
        return handler;
    });
  1. 确保正确注入HttpClient
    确认在组件中注入的是你配置的命名客户端"WebAPI",而非默认HttpClient。例如:
[Inject]
public IHttpClientFactory HttpClientFactory { get; set; }

// 调用API时
var client = HttpClientFactory.CreateClient("WebAPI");
var response = await client.GetAsync("/api/your-endpoint");

或者直接注入命名客户端(需在Program.cs中对应注册):

[Inject]
public HttpClient WebAPIClient { get; set; }
  1. 检查AccessToken范围的正确性
  • 确认Azure B2C应用注册中,已为API配置Api.Access范围,且客户端应用已获得该范围的授权。
  • 验证options.ProviderOptions.DefaultAccessTokenScopes中添加的范围字符串完全正确,包括域名、应用ID,无拼写错误。
  1. 强制获取有效令牌(备选方案)
    如果令牌缓存中无匹配令牌,可使用IAccessTokenProvider主动获取并手动附加到请求头:
[Inject]
public IAccessTokenProvider TokenProvider { get; set; }

var result = await TokenProvider.RequestAccessToken(
    new AccessTokenRequestOptions
    {
        Scopes = new[] { "https://{domain}.onmicrosoft.com/{App ID}/Api.Access" }
    });

if (result.TryGetToken(out var token))
{
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.Value);
}

额外验证步骤:

  • 用浏览器开发者工具(F12)查看网络请求,确认请求头是否包含Authorization: Bearer <token>,同时检查控制台是否有相关错误提示。
  • 查看Azure B2C令牌日志,确认令牌是否正确颁发且包含指定范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 10:25:39