经典ASP集成的安全性在连接字符串

问题描述:

我已经老了传统的ASP应用程序(不asp.net),我需要配置为使用Microsoft SQL Server 2008的 它具有以下配置字符串效果很好:经典ASP集成的安全性在连接字符串

SERVER=myServer;DRIVER=SQL SERVER;DATABASE=myDatabase;UID=sa;PWD=somepass 

但我需要使用集成安全性。但在我尝试过的任何类型的声明中遇到错误。类似的东西和很多的变化不起作用:

SERVER=myServer;DRIVER=SQL SERVER;DATABASE=myDatabase;Integrated Security=SSPI; 

所以我的问题是:连接字符串应该怎么看起来像传统的ASP集成安全性。或者可能需要额外的Web服务器配置?

+0

您是否也在使用集成安全认证网站的用户或者是匿名用户帐户下运行的网站? – AnthonyWJones 2012-02-29 14:20:49

+0

我有一个问题:我在本地IIS上测试它,我想它使用不允许访问数据库的ASP.NET帐户。你能告诉我如何配置我的IIS或虚拟的dicrectory使用我自己的帐户(我用于登录到Windows)?本地IIS没有应用程序池,我不知道如何设置用于数据库访问的用户。 – Roman 2012-02-29 14:32:08

+0

我的IIS版本是5.1(Win XP Pro) – Roman 2012-02-29 14:48:02

请注意,如果您使用匿名身份验证,这将基于您的asp应用程序池的身份验证命中SQL。

我看到你添加了一条评论,注意到IIS 5,通过转到站点属性,选择“目录安全性”选项卡,然后单击“编辑”按钮,可以在ISS5上设置站点以使用Windows身份验证在“匿名访问和身份验证控制”部分。禁用匿名身份验证并勾选“集成Windows安全”选项。

(注:Web服务器将需要能够进行身份验证凭据,所以你可能会碰到NTLM和Kerberos问题,根据您的域配置 - 谨慎行事!)

这应该执行ASP文件作为经过身份验证的用户,在这种情况下,您的连接字符串将能够使用受信任的连接。

这里有几个选择取决于您可以使用哪些提供者。

例如,与SQL Native Client的9.0 OLE DB提供程序,您可以使用:

Provider=SQLNCLI;Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes; 

Native Client的10略有不同:

Provider=SQLNCLI10;Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes; 

我更喜欢SQLOLEDB提供商(IVE遇到了麻烦与SQL SERVER驱动程序和VARCHAR(MAX)在过去):

Provider=SQLOLEDB;Data Source=Your_Server_Name;Initial Catalog=myDataBase;Integrated Security=SSPI; 

注意:突然更改身份验证可能会破坏其他的东西 - 我当然只是建议在SQL服务器上添加一个SQL凭据,并在连接字符串中使用它。

其遗憾的是,您还没有回复我对您问题的评论,所以我必须给出更广泛的答案。 (虽然HeavenCore实际上给了你正确的连接字符串使用,SQLOLEDB之一)。

当使用匿名访问

当您运行的匿名访问一个经典ASP网站的安全性令牌执行acript线程属于IIS匿名用户。该用户默认在IIS5.1上是本地机器用户。因此,除非SQL服务器也在同一个框中运行,否则不能使用此用户授予对SQL Server的访问权限。

您需要在您的域中创建一个新用户以充当匿名帐户。然后,您会将您的应用程序的匿名用户更改为新帐户。在SQL服务器中,您可以授予适当的数据库访问权限。

如果我没有记错,您可以通过打开网站属性来设置匿名用户帐户。在目录安全性选项卡中,单击身份验证和访问控制下的编辑..在出现的身份验证方法对话框中,您可以将匿名账户更改为域中的成员。

当使用综合接入

如果在运行传统的ASP没有匿名访问的窗口,而是使用窗口集成安全性,那么每个脚本将运行使用验证用户的安全令牌进行身份验证的连接。因此,当在SQL连接中使用SSPI时,将使用与请求已到达的连接关联的用户。

为了让这些用户访问SQL DB,您需要创建适当的AD组并授予这些组访问数据库的权限。然后将用户分配到这些组。

这种方法的不足之处在于它从连接缓存中获得有限的好处,但考虑到其他配置可能不是太多问题。

+0

谢谢你的回答。但是我仍然无法使用集成安全性来运行它。我们在本地网络中有数据库。我的域帐户MYDOMAIN \ MyAccount有权访问数据库。当我使用Visual Studio中的Inegrated Security运行我的asp.net应用程序时,它运行良好。我想我需要强制IIS使用此帐户。我按照HeavenCore的说法(禁用匿名身份验证并勾选“集成Windows安全”选项),但仍得到相同的结果。无法建立数据库连接。 – Roman 2012-02-29 22:33:50

+1

@Roman请仔细阅读我的回答,然后要求澄清任何你不明白的事情。总之,您需要使用第3段中**使用匿名访问**时的说明将匿名用户更改为帐户MYDOMAIN \ Myaccount。 – AnthonyWJones 2012-03-01 12:33:31