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

Blazor WASM获取的Azure AD B2C访问令牌与Postman不一致无法调用Azure Functions

解决方案
  • 第一步:匹配NuGet包版本
    安装与你Blazor WASM项目目标.NET版本主版本号一致的Microsoft.Authentication.WebAssembly.Msal包,比如项目目标为.NET 6就装6.x版本,.NET 8就装8.x版本,即可解决目标平台无可用运行时库的报错。
  • 第二步:修改Azure AD B2C应用注册配置
    分别打开Blazor客户端应用、Azure Functions API应用的注册清单,找到accessTokenAcceptedVersion字段,将值修改为2,保存配置。
  • 第三步:修改Blazor项目认证配置
    编辑wwwroot/appsettings.json中的Azure AD B2C配置,显式指定v2.0端点,参考配置如下:
    "AzureAdB2C": {
      "Authority": "https://<你的租户名>.b2clogin.com/<你的租户名>.onmicrosoft.com/B2C_1_signupsignin/v2.0/",
      "ClientId": "<Blazor客户端应用的ID>",
      "ValidateAuthority": false
    }
    
  • 第四步:调整Program.cs认证服务注册逻辑
    编辑Program.cs,在注册MSAL认证时显式指定API访问scope,示例代码:
    builder.Services.AddMsalAuthentication(options =>
    {
        builder.Configuration.Bind("AzureAdB2C", options.ProviderOptions.Authentication);
        // 替换为你的API实际暴露的作用域
        options.ProviderOptions.DefaultAccessTokenScopes.Add("https://<租户名>.onmicrosoft.com/<Azure Functions应用ID>/user_impersonation");
    });
    
  • 第五步:验证令牌有效性
    重新运行项目登录后获取的访问令牌,ver字段会显示为2.0,此时调用Azure Functions API即可正常通过认证。你之前观测到的azp与aud不一致是正常现象:azp是Blazor客户端应用的ID,aud是API应用的ID,v2.0令牌支持该场景,不会触发401错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:36:03