赢取auth NT AUTHORITY \ ANONYMOUS LOGON

时间:2015-07-23 11:47:11

标签: sql-server asp-classic iis-7 windows-authentication

我在IIS上检查了Integrated Windows authentication的asp网页应用程序并清除了匿名访问框。从高级Windows身份验证我已Enable kernel-mode authentication已检查。

应用程序池以管理域用户和集成模式运行。

当用户点击此应用内的某个网页时,我可以从日志中看到域用户名已发送到服务器,并且我还有Request.ServerVariables("AUTH_USER")中的值。

一切都很好,应该如此。我可以看到哪个用户访问应用程序。

现在,网页也访问SQL数据库。 我有连接字符串,如:

"Provider=SQLOLEDB.1;Integrated Security=SSPI;..."

但是当我访问数据库时,我收到以下错误:

  

Microsoft OLE DB Provider for SQL Server错误“80040e4d”

     

用户'NT AUTHORITY \ ANONYMOUS LOGON'登录失败。

我怎么说,与sql server的连接是使用app pool帐户而不是匿名?

2 个答案:

答案 0 :(得分:1)

我认为如果你检查网站的配置文件中的身份标签,你会发现它设置如下:

<identity impersonate="true"/>

在您的配置中应该是:

<identity impersonate="false"/>

这样你就告诉iis不要模仿通过网络远程登录但使用应用程序池中指定的帐户的人。

rules是一个页面,其中简要介绍了该主题。

答案 1 :(得分:1)

经过2天的测试,我终于设法让它发挥作用。 有两种形式的冒充: &#34; identity impersonate = false&#34;是应用程序在应用程序池中定义的用户或用户的上下文中运行。 但也有模拟应用程序池使用用户访问磁盘上的资源。它位于“基本设置”和“连接为”下。 默认是传递身份验证。 我不知道它与访问外部数据库有什么关系,但在将其设置为应用程序池的同一用户之后,现在一切正常。 我希望它会对某人有所帮助。