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

开启身份模拟后,用户‘NT Authority\Anonymous Logon’登录失败求助

解决Login Failed for user 'NT Authority\Anonymous Logon'问题

核心原因

当你开启Asp.Net impersonation(identity_impersonate = true),但网站未启用Windows身份验证时,应用会默认模拟匿名访问用户(NT Authority\Anonymous Logon),而非应用池的Network Service账户。使用Integrated Security = True连接SQL Server时,会以这个匿名账户尝试登录,因该账户无SQL Server访问权限导致失败。

具体解决方案

根据业务需求,可选择以下两种路径:

路径1:保留Asp.Net impersonation,启用Windows身份验证

若需模拟终端用户身份连接SQL,需确保网站启用Windows身份验证并关闭匿名访问:

  • 打开IIS管理器,找到目标网站,进入身份验证功能
  • 禁用匿名身份验证
  • 启用Windows身份验证
  • 确保访问网站的用户(域/本地用户)已被授予SQL Server登录权限及目标数据库的访问权限

路径2:关闭Asp.Net impersonation,使用应用池账户连接SQL

若无需模拟终端用户,直接用应用池的Network Service账户连接更简便:

  • 修改Web.config中的identity节点,将impersonate设为false:
    <identity impersonate="false" />
    
  • 给Network Service账户授予SQL Server权限:
    1. 打开SQL Server Management Studio,登录目标实例
    2. 在安全性 > 登录名右键选择新建登录名
    3. 登录名输入NT AUTHORITY\NETWORK SERVICE,选择Windows身份验证
    4. 切换到用户映射标签,勾选目标数据库,授予所需角色(如db_datareader、db_datawriter)
    5. 保存设置

额外排查点

  • 检查Web.config连接字符串,确保Integrated Security=True(或Trusted_Connection=True)配置无拼写错误
  • 确认应用池确实以Network Service运行:在IIS应用池的高级设置中查看标识为Network Service
  • 若SQL Server与Web服务器不在同一机器,需给Web服务器的机器账户(格式DOMAIN\MACHINE$)授予SQL Server登录权限——跨机器时Network Service会以机器账户身份访问远程资源

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 17:05:41