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

.NET Core 6+React开发环境Windows身份验证失效求助

解决方案:.NET Core 6 + React SPA 开发环境Windows身份验证失效问题

针对开发环境Windows身份验证不生效的问题,结合你的配置,以下是逐一排查和修正的步骤:


1. 为Kestrel启动配置Windows身份验证

你的StudentApp3 Profile使用Kestrel服务器(commandName: Project),但当前仅在IIS Express配置中启用了Windows身份验证,Kestrel需单独配置:

方式一:代码配置Kestrel

在Program.cs中添加Kestrel的Windows身份验证配置:

var builder = WebApplication.CreateBuilder(args);

// 新增Kestrel身份验证配置
builder.WebHost.ConfigureKestrel(serverOptions =>
{
    serverOptions.ListenLocalhost(5058, options =>
    {
        options.UseWindowsAuthentication();
    });
});

// 其余原有配置...

方式二:通过launchSettings.json配置

在StudentApp3的environmentVariables中添加:

"ASPNETCORE_Kestrel__WindowsAuthentication__Enabled": "true"

2. 修正代理配置,传递身份验证凭据

SetupProxy.js缺少传递Windows凭据的配置,需添加withCredentials: true,确保NTLM/Kerberos令牌能通过代理传递到后端:

module.exports = function(app) {
  const appProxy = createProxyMiddleware(context, {
      target: target,
      secure: false,
      withCredentials: true, // 新增此选项
  });    
  app.use(appProxy);
};

3. 清理Program.cs中的重复配置

你的Program.cs重复调用了builder.Services.AddAuthentication();,这会覆盖后续的Negotiate配置,需删除该行:

// 移除重复的配置行
// builder.Services.AddAuthentication();

// 保留正确的身份验证配置
builder.Services.AddAuthentication(options =>
{
    options.DefaultAuthenticateScheme = NegotiateDefaults.AuthenticationScheme;
    options.DefaultChallengeScheme = NegotiateDefaults.AuthenticationScheme;
}).AddNegotiate();

4. 调整React请求的模式设置

React请求中设置的mode: 'cors'不适用于代理转发的同域请求,改为默认的same-origin(或直接删除mode配置):

fetch("/student/getstudent", {
    method: "GET",
    credentials: 'include', // 保留此选项以传递凭据
    headers: {
        "Connection": 'keep-alive',
    }
}).then((res) => res.json()).then((data) => {
    console.log(data)
});

5. 验证IIS Express配置文件(若使用IIS Express启动)

如果用IIS Express启动,手动检查applicationhost.config确保Windows身份验证已启用:

  1. 打开路径:%USERPROFILE%\Documents\IISExpress\config\applicationhost.config
  2. 找到你的站点配置,确认以下节点:
<site name="StudentApp3" id="...">
  <!-- 其他配置 -->
  <applicationDefaults applicationPool="Clr4IntegratedAppPool">
    <authentication>
      <windowsAuthentication enabled="true" />
      <anonymousAuthentication enabled="true" />
    </authentication>
  </applicationDefaults>
</site>

6. 确认开发环境启动方式

  • 使用IIS Express启动时,确保VS调试目标选择IIS Express
  • 使用Kestrel启动时,以管理员权限运行VS(避免权限不足导致身份验证失败)

完成以上配置后,重启开发服务器和React应用,测试Windows身份验证即可生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 08:37:45