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

如何在ASP.NET Core 7.0应用中实现Windows组身份验证?

解决ASP.NET Core 7.0本地非域环境下Windows组授权403问题

你在本地非域工作站创建ASP.NET Core 7 MVC应用,启用Windows身份验证后,给HomeController的Index方法添加[Authorize(Roles = @"LOCAL-WORKSTATION\AuthTestGroup")]特性出现403错误,可按以下步骤排查解决:

1. 确认机器名与组名的准确性

  • 打开命令提示符,执行echo %COMPUTERNAME%获取真实机器名,确保特性中填写的LOCAL-WORKSTATION与实际机器名完全一致
  • 检查本地组AuthTestGroup的拼写,Windows组名不区分大小写,但建议完全匹配避免潜在问题

2. 确保用户组权限已生效

  • 本地用户添加到组后,必须注销当前Windows会话并重新登录,组权限才会被系统加载(Windows登录时会缓存组信息,不重启会话新添加的组不会生效)
  • 登录后执行whoami /groups命令,查看输出列表中是否包含AuthTestGroup,确认用户确实属于该组

3. 配置认证中间件加载Windows组角色声明

默认Negotiate认证可能不会自动将Windows组转换为Role类型的声明,需手动配置:
修改Program.cs中的认证服务配置:

builder.Services.AddAuthentication(NegotiateDefaults.AuthenticationScheme)
    .AddNegotiate(options =>
    {
        options.Events = new NegotiateEvents
        {
            OnAuthenticated = context =>
            {
                var windowsIdentity = context.Principal.Identity as WindowsIdentity;
                if (windowsIdentity != null)
                {
                    // 将Windows组转换为Role类型的声明
                    var groupRoles = windowsIdentity.Groups
                        .Select(group => group.Translate(typeof(NTAccount)).Value);
                    foreach (var role in groupRoles)
                    {
                        context.Principal.AddIdentity(
                            new ClaimsIdentity(new[] { new Claim(ClaimTypes.Role, role) })
                        );
                    }
                }
                return Task.CompletedTask;
            }
        };
    });

4. 验证中间件顺序与服务器设置

  • 确保Program.cs中中间件顺序正确,身份验证必须在授权之前执行:
    app.UseRouting();
    
    app.UseAuthentication(); // 先执行身份验证
    app.UseAuthorization(); // 再执行授权
    
    app.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
    app.MapRazorPages();
    
  • 如果使用IIS Express运行:右键项目→属性→调试→Web服务器设置,确认Windows身份验证启用、匿名身份验证禁用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 19:57:40