ASP.NET,IIS安全设置Windows Auth和SQL Server Access

时间:2011-02-11 12:31:50

标签: asp.net iis iis-6

我无法配置ASP.NET web.config和我的IIS网站以获取我想要的设置。这就是我想要的结果:

  • 应用程序使用特定的NT ID连接到SQL Server
  • 用于连接到SQL Server的NT ID不在web.config中。或者至少它的密码不是。
  • 我可以使用HttpContext.Current.User.Identity.Name(或其他方法)来获取连接到应用程序的真实用户的NT ID。

如果我在Visual Studio 2008中设置ASP.NET 3.5,这基本上都在本地工作。但是当我部署到IIS时,我可以成功获得前两个子弹,但我无法获得第三个子弹。 Identity.Name为null。我现在部署它的方式是在web.config中将模拟设置为true,并且IIS启用了匿名访问,匿名用户设置为我想要连接到SQL Server的NT ID。

我用来连接SQL Server的连接字符串如下所示:

Server=[My Server];Database=[My DB];Trusted_Connection=Yes;

我尝试过设置其他帖子中建议的授权,但这只会让Internet Explorer弹出一个登录框。

这是运行IIS 6.0的Windows Server 2003。

这可能是一个愚蠢的问题,和/或重复的问题。但我已经做了很多搜索和反复试验,我似乎无法获得神奇的设置。

2 个答案:

答案 0 :(得分:0)

默认情况下,机器\ ASPNET帐户或NETWORK_SERVICE帐户,具体取决于您使用的IIS版本(我不确定IIS 7是否正在使用NETWORK_SERVICE但是6确实如此)。如果您需要其他帐户,则会在配置文件(用户名和密码)上应用模拟以运行帐户。现在,您可以使用aspnet_regiis实用程序加密配置部分的这一部分。但你必须提供一个帐户。我不认为你可以在没有我知道的情况下逃脱......除非它可以通过IIS完成。

HTH。

答案 1 :(得分:0)

这称为Double-Hop Problem,禁止将用户凭据转发给第三方。当他们从一台计算机,另一台(第一跳)上的站点进行浏览,并将凭据转发到第三台计算机(第二跳)时,就会发生这种情况。

如果您在同一台计算机上托管IIS和SQL Server,则不会出现此问题。

How to use the System.DirectoryServices namespace in ASP.NET上发布了更多技术细节,解释了双跳问题以及主要和次要令牌。