2010-06-04 152 views
2

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

但是,我遇到的问题是,当我尝试使用可信连接登录到SQL Server时,而不是使用网站的人员的域/用户名时,应用程序正在通过NT AUTHORITY \匿名登录。

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

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

最后,我运行IIS 7.5和Windows Server 2008 R2和SQL Server 2008

回答

3

这叫做Constrained Delegation。基本上,这意味着默认情况下模拟的上下文无法委派给网络上的资源进行认证。如果约束委派不到位,任何人都可以在企业中创建一个网站并公开一些良性应用。但在下面,一旦用户通过网站验证,它可以模拟该用户做任何事情,如他的邮件,代表他的销售股票,提高网站开发人员,*任何事情。这就是为什么冒充用户的机器以外的模拟上下文不可信。

为了让模拟上下文连接到远程资源(如文件共享或数据库服务器)的域管理员必须明确设置了约束委派,这使得模拟上下文与一个特定资源认证。

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

0

如果您的Web应用程序尝试访问您的数据库,它将使用运行IIS w3wp.exe进程的帐户(默认情况下为networkservice)执行此操作。 如果你想改变这一点,你将需要使用模拟。

This document解释它很不错。

由于文档还根据您的应用程序进行了说明,因此您可能希望使用受信任的子系统而不是模拟。

相关问题