如何允许匿名访问我的IIS站点,但使用Windows身份验证连接到SQL Server?

时间:2011-01-06 00:15:33

标签: asp.net windows-authentication

我想做的是:

  • 允许匿名用户访问我的ASP .NET站点。
  • 使用Windows身份验证访问站点以访问Sql Server。它将使用专门为该站点预留的域帐户登录到Sql Server(最好在同一帐户下执行所有操作)。

网上的每篇文章都告诉您这样做:

<authentication mode="Windows"/>
<identity impersonate="true"/>
在Web.config中

。但是,如果您希望用户使用Windows身份验证登录,我认为这只是 。它与登录到SQL Server的服务器无关(除了上述2的组合意味着用户的身份验证也将用于连接到数据库)。它是否正确?鉴于我的Windows帐户可以访问服务器上的文件以及该站点连接的数据库,这似乎很难测试....

似乎如果我:

  • 将应用池标识设置为域帐户
  • 使用域帐户启用网站匿名访问
  • 使用带有Windows身份验证的连接字符串

然后该站点将通过Windows身份验证连接到SQL Server。此外,只要模拟已关闭,它就会使用域帐户。这是对的吗?

3 个答案:

答案 0 :(得分:2)

  在Web.config中

。但是,我收集到了   这仅在您希望用户登录时才有效   使用Windows身份验证。它有   与服务器日志记录无关   进入SQL Server

这是部分正确的。如果正确设置了委派,则模拟帐户将用于登录SQL Server。您没有看到这一点,因为在大多数环境中,需要明确设置委派。委派是一种更强大的模拟形式,它使服务器进程(在您的情况下,IIS进程)可以在充当客户端时访问远程资源(在您的情况下,SQL服务器)。有关详细信息,您可以谷歌ASP.NET委派。我说这部分是正确的,因为在一些简单的环境中,你甚至不需要任何特殊的配置。代表团正在努力。例如,如果您在与IIS服务器相同的计算机上运行SQL Server。另一种情况是您的IIS服务器在Active Directory域控制器上运行(非常罕见)。在这两种情况下,或者在配置正确的委托的机器上,您的上述陈述将是错误的。

  

似乎如果我:

     
      
  • 将应用程序池标识设置为   域帐户
  •   
  • 启用匿名   使用域访问网站   帐户
  •   
  • 使用连接字符串   Windows身份验证
  •   
     然后是网站   将通过Windows连接到SQL Server   验证。此外,它将使用   域帐户只要   冒充了。这是对的吗?

是的,这是正确的。

  

鉴于我的Windows帐户已经存在   访问服务器上的文件和   站点正在连接的数据库   来,这似乎很难测试......

如果您有两个域帐户(或一个域帐户和一个本地帐户),则可以轻松测试。设置应用程序池标识以使用您的DomainAccount1。仅授予 DomainAccount1以获得访问数据库的权限。使用其他帐户(域帐户或本地帐户)访问其他计算机上的Web应用程序。测试Web应用程序是否可以正确访问您的数据库。

答案 1 :(得分:1)

如果我正确地关注你,你是对的;您想要使用模拟/身份验证来执行您想要执行的操作。适当地设置应用程序池标识,并确保用户帐户具有对SQL Server的适当访问权限。

答案 2 :(得分:0)

您可以创建单独的Sql登录,即用户名/密码,而不是使用Windows帐户,而是在连接字符串中使用它。

相关问题