我有一个 asp 网页应用程序,在 IIS 上选中了集成 Windows 身份验证
,并清除了“匿名访问”框。在高级 Windows 身份验证中,我选中了启用内核模式身份验证
。
应用程序池以管理域用户和集成模式运行。
当用户单击此应用程序内的某些网页时,我可以从日志中看到域用户名已发送到服务器,并且我在 Request.ServerVariables("AUTH_USER")
中也有值。
一切都很好,正如它应该的那样。我可以看到哪个用户访问应用程序。
现在,网页也可以访问SQL数据库了。 我有连接字符串,例如:
"Provider=SQLOLEDB.1;Integrated Security=SSPI;..."
但是当我访问数据库时,出现以下错误:
Microsoft OLE DB Provider for SQL Server error '80040e4d'
Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.
我怎么说呢,与 SQL Server 的连接是通过应用程序池帐户而不是匿名建立的?
最佳答案
我认为,如果您检查网站的配置文件中的身份标签,您会发现它设置如下:
<identity impersonate="true"/>
在你的配置中它应该是:
<identity impersonate="false"/>
这样,您就可以告诉 iis 不要模拟通过 Web 远程登录的人,而是使用应用程序池中指定的帐户。
here是一个包含主题简短描述的页面。
关于sql-server - 赢得身份验证 NT 权限\匿名登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31586455/