2012-02-29 81 views
2

我已經老了傳統的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

回答

3

請注意,如果您使用匿名身份驗證,這將基於您的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憑據,並在連接字符串中使用它。

0

其遺憾的是,您還沒有回覆我對您問題的評論,所以我必須給出更廣泛的答案。 (雖然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