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

为调用安全Web API的Blazor WASM应用实现Azure AD多租户

Blazor WASM 多租户Azure AD认证适配方案(支持任意AD用户+安全API调用)

基础配置修正

  • 调整appsettings.json的Azure AD认证配置为多租户模式:

    "AzureAd": {
      "Authority": "https://login.microsoftonline.com/common",
      "ClientId": "你的客户端ID",
      "ValidateAuthority": false
    }
    

    这里Authority使用common而非固定租户ID,ValidateAuthority设为false以跳过特定租户的验证逻辑。

  • 注册认证服务时明确启用多租户,并配置API访问范围:

    builder.Services.AddMsalAuthentication(options =>
    {
        builder.Configuration.Bind("AzureAd", options.ProviderOptions.Authentication);
        // 添加目标API的访问范围
        options.ProviderOptions.DefaultAccessTokenScopes.Add("https://your-api-resource-id/.default");
        options.ProviderOptions.LoginMode = "redirect";
        // 强制多租户配置
        options.ProviderOptions.Authority = "https://login.microsoftonline.com/common";
        options.ProviderOptions.ValidateAuthority = false;
    });
    

服务主体与API权限配置

  • 在用户AD中创建服务主体后,必须为其分配目标API的应用权限(而非委托权限),并完成租户管理员的权限同意操作。如果是自建Web API,需先在API的Azure AD注册中定义应用权限,再在用户租户的服务主体上绑定该权限。

  • 调用安全API时,确保HttpClient使用正确的令牌获取逻辑:

    // 注册带认证的HttpClient
    builder.Services.AddHttpClient("SecureApiClient", client =>
    {
        client.BaseAddress = new Uri("https://your-api-base-url/");
    }).AddHttpMessageHandler<BaseAddressAuthorizationMessageHandler>();
    
    // 在组件中注入使用
    @inject IHttpClientFactory HttpClientFactory
    
    var client = HttpClientFactory.CreateClient("SecureApiClient");
    var response = await client.GetAsync("api/your-endpoint");
    
  • API端的认证配置需支持多租户令牌:

    builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
        .AddJwtBearer(options =>
        {
            options.Authority = "https://login.microsoftonline.com/common";
            options.TokenValidationParameters = new TokenValidationParameters
            {
                ValidateIssuer = false, // 允许任意租户颁发的令牌
                ValidAudience = "你的API客户端ID/资源ID"
            };
        });
    

常见报错排查

  • 若出现invalid_token或issuer_invalid错误:检查API端TokenValidationParameters的ValidateIssuer是否设为false,或通过ValidIssuers配置允许的租户Issuer列表。
  • 若服务主体调用API提示权限不足:确认已完成管理员同意,且分配的是应用权限而非委托权限。
  • 登录后跳转报错:检查Azure AD客户端注册中的RedirectUri是否包含当前环境的完整URL(本地开发、生产环境都需配置)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 19:49:53