使用Windows身份验证登录sql server

时间:2010-06-04 16:24:53

标签: c# asp.net sql-server

我在我们的Intranet上设置了一个使用Windows身份验证(成功)的Web应用程序,我试图链接到在单独服务器上运行的数据库。

我遇到的问题是,当我尝试使用可信连接登录sql server时,应用程序通过NT AUTHORITY \ ANONYMOUS,而不是传递使用该网站的人的域/用户名。登录。

我检查了身份验证工作是通过让网站在我登录网站时显示正确识别我的用户名的问候语,因此这不是匿名访问问题。尽管在应用程序的web.config文件中设置了这一事实,但我认为这是一个冒充问题。

奇怪的是,当我在我的开发机器上运行它时,或者甚至通过生产服务器上的远程桌面本地运行它时,Web应用程序运行正常。我不确定这里发生了什么。

最后,我正在运行iis 7.5,windows server 2008 r2和sql server 2008

3 个答案:

答案 0 :(得分:3)

这称为Constrained Delegation。基本上这意味着默认情况下模拟的上下文不能委派给网络上的资源进行身份验证。如果约束委派不会到位,任何人都可以在企业中创建一个网站并公开一些良性的应用程序。但在下面,一旦用户通过该网站进行身份验证,它就可以冒充该用户任何,例如,代表他阅读他的邮件,销售股票,给网站开发人员加油,*任何东西。这就是冒充用户的机器外部不信任模拟上下文的原因。

要允许模拟上下文连接到远程资源(如文件共享或数据库服务器),域管理员必须显式设置约束委派,该委派允许模拟上下文使用一个特定的<进行身份验证/ em>资源。

有许多文章描述了问题和解决方案:

答案 1 :(得分:1)

答案 2 :(得分:0)

如果您的Web应用程序尝试访问您的数据库,则会使用运行IIS w3wp.exe进程的帐户(默认情况下为networkservice)执行此操作。 如果您想更改此设置,则需要使用模拟。

This document解释得非常好。

正如文档还根据您的应用程序解释的那样,您可能希望使用受信任的子系统而不是模拟。