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

如何为基于Adal.js的多租户单页应用配置ASP.Net Core Bearer授权

针对你这套SPA + ASP.NET Core的Bearer认证场景,我整理了完整的实现要点和Startup配置示例:

SPA结合ASP.NET Core的JWT认证实现方案

前端认证逻辑

  • 采用Adal.js完成用户身份认证流程,认证通过后,前端会自动在所有向后端发起的API请求中携带Authorization: Bearer <token>请求头,确保请求携带合法身份凭证。

后端校验配置

后端依赖Microsoft.AspNetCore.Authentication.JwtBearer组件完成请求的身份校验,以下是完整的Startup类核心配置代码:

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    // 配置服务容器,添加认证及业务服务
    public void ConfigureServices(IServiceCollection services)
    {
        // 注册JWT Bearer认证服务
        services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddJwtBearer(options =>
            {
                // 从配置文件读取AD租户地址和API受众ID
                options.Authority = Configuration["AzureAd:Authority"];
                options.Audience = Configuration["AzureAd:Audience"];
                
                // 配置Token校验规则
                options.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuer = true,          // 校验令牌签发者
                    ValidateAudience = true,        // 校验令牌受众
                    ValidateLifetime = true,        // 校验令牌有效期
                    ValidateIssuerSigningKey = true // 校验签名密钥
                };
            });

        // 添加WebAPI控制器服务
        services.AddControllers();
    }

    // 配置HTTP请求管道
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseHttpsRedirection();
        app.UseRouting();

        // 必须按顺序添加认证、授权中间件,且位置要在路由之后、端点之前
        app.UseAuthentication();
        app.UseAuthorization();

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

关键配置说明

  • ConfigureServices中,通过AddJwtBearer绑定的Authority和Audience需要和前端Adal.js配置的租户、API客户端ID保持一致,通常这些配置会存放在appsettings.json中。
  • TokenValidationParameters中的校验规则可根据业务需求调整,比如某些场景下可以关闭ValidateLifetime(不推荐生产环境这么做)。
  • 中间件顺序非常重要:UseAuthentication和UseAuthorization必须放在UseRouting之后、UseEndpoints之前,否则认证逻辑无法正确拦截请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:04:58