如何为基于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
相关产品推荐
相关产品推荐

