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

.NET 6 MVC项目Kestrel Windows身份验证配置异常排查

解决.NET 6 MVC项目Kestrel下Windows身份验证的配置问题

1. 配置认证服务(Startup.cs)

在ConfigureServices方法中,需明确添加Windows身份验证相关服务,并指定默认的认证与挑战方案:

using Microsoft.AspNetCore.Authentication.Negotiate;

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllersWithViews();

    // 添加并配置Windows身份验证服务
    services.AddAuthentication(NegotiateDefaults.AuthenticationScheme)
        .AddNegotiate();

    // 显式设置默认认证、挑战方案,彻底规避报错
    services.Configure<AuthenticationOptions>(options =>
    {
        options.DefaultAuthenticateScheme = NegotiateDefaults.AuthenticationScheme;
        options.DefaultChallengeScheme = NegotiateDefaults.AuthenticationScheme;
    });
}

2. 调整中间件顺序

在Configure方法中,确保UseAuthentication中间件位于UseRouting之后、UseAuthorization之前:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Home/Error");
        app.UseHsts();
    }

    app.UseHttpsRedirection();
    app.UseStaticFiles();

    app.UseRouting();

    // 启用身份验证逻辑,必须在授权前执行
    app.UseAuthentication();

    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
}

3. 确认launchSettings.json配置

确保配置文件中已开启Windows身份验证、关闭匿名访问:

"profiles": {
  "YourProjectName": {
    "commandName": "Project",
    "dotnetRunMessages": true,
    "launchBrowser": true,
    "applicationUrl": "https://localhost:5001;http://localhost:5000",
    "environmentVariables": {
      "ASPNETCORE_ENVIRONMENT": "Development"
    },
    "windowsAuthentication": true,
    "anonymousAuthentication": false
  }
}

关键说明

  • 报错核心是未指定默认认证/挑战方案,通过AddAuthentication直接传入默认方案,或通过AuthenticationOptions显式配置,均可解决该问题。
  • AddNegotiate()是.NET 6官方提供的Windows身份验证方案,支持NTLM与Kerberos协议,会在需要时自动触发Windows凭据输入弹窗。
  • 中间件顺序不可颠倒,UseAuthentication必须先于UseAuthorization执行,否则认证逻辑无法生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 12:20:02