开启Windows身份验证时经典ASP应用服务账号连接SQL Server失败如何解决
问题根因
这是IIS开启Windows身份验证后的默认身份模拟行为导致的问题。开启Windows身份验证后,IIS默认会将当前请求的访问用户身份模拟传递给下游数据库连接,而非使用应用池的服务账号身份,你遇到的NT Authority\Anonymous Logon报错是典型的Kerberos双跳(Double Hop)问题,客户端身份未被授权跨服务器委托访问SQL Server。
开启匿名身份验证时IIS默认不启用用户模拟,请求直接以应用池服务账号身份运行,因此数据库连接正常。
解决步骤
- 关闭Classic ASP应用的客户端身份模拟
- 打开IIS管理器,定位到目标Classic ASP站点/应用
- 进入「ASP」功能模块,展开「调试属性」分类
- 将「启用客户端模拟」选项设置为False
(也可直接在站点根目录的web.config中添加如下配置)
<system.web> <identity impersonate="false" /> </system.web> - 确认应用池身份配置正确
- 检查目标应用池的高级设置,确认「进程模型」下的「标识」为你预设的、拥有SQL Server访问权限的服务账号
- 确认该服务账号已在SQL Server中创建对应登录名,且已授予目标数据库的必要访问权限
- 验证配置生效
保存所有配置后重启对应站点与应用池,原有连接字符串保持Trusted_Connection=yes不变,此时请求将直接以应用池服务账号身份连接数据库,无需传递前端访问用户的身份。
内容的提问来源于stack exchange,提问作者eliteproxy
相关产品推荐
相关产品推荐

