2012-07-17 180 views
1

我最近一直在爲客戶端開發ASP.NET項目。該項目將數據庫從舊的Oracle數據庫遷移到新的SQL Server 2008數據庫。遷移進展順利,大部分程序並沒有花費很長時間才能解決。然而,我們現在有一個問題,直到現在,我們一直在使用SQL Server身份驗證並使用用戶名和密碼從.NET代碼訪問數據庫。下面顯示連接字符串:.NET身份驗證問題

<add key="DatabaseConnectionString" value="Data Source=DATASOURCE;Initial Catalog=DATABASE;User Id=USERID;Password=PASSWORD;"/> 

這是工作的罰款不過最近我收到來自客戶說電子郵件:

「而不是使用本地SQL帳戶的.NET應用程序訪問數據庫你可以使用Active Directory帳戶嗎?在web.config中,它會說<domain name>/<username>,而不僅僅是<username>。「

我感到困惑的是:

我一定到SQL Server中的身份驗證模式更改爲Windows身份驗證? 客戶是否有意將其從<username>更改爲<domain>/<username>或其他方式? 在web.config中,我需要對用戶名進行更改嗎?它在連接字符串中嗎?

對此的任何幫助將是偉大的。

還林不知道,如果你需要知道這一點,但我無論如何都加入它...

這是web.config中的身份驗證部分:

<identity impersonate="true"/> 
<authentication mode="Windows"/> 

回答

2

我是否必須將SQL Server中的身份驗證模式更改爲Windows身份驗證?

不,因爲Windows身份驗證始終處於啓用狀態。但是,禁用Sql Server身份驗證是一種很好的做法。

客戶是否意味着它從「用戶名」更改爲「域/用戶名」

號這不僅是有關添加域名。您需要根據活動目錄對用戶進行身份驗證,併爲sql連接使用委派。要使用Windows帳戶,您需要決定是否希望特定帳戶訪問Sql Server或網站登錄用戶帳戶。 我認爲第一種方式幾乎總是更好。爲此,您需要從連接字符串中刪除用戶標識和密碼,並將其替換爲「Integrated Security = SSPI」,並將應用程序池標識設置爲活動目錄用戶帳戶。在Sql Server中,你需要給這個賬戶做你需要的權利。 對於第二種方法,您需要在您的網站上爲用戶進行Windows身份驗證,並使用委派進行連接。我不知道假冒是否足夠。

+0

登錄過程在應用程序內工作的方式(我認爲)它允許用戶連接到數據庫,如果他們在數據庫授權的域內。然後,一旦他們連接,它會檢查用戶名(域/用戶名)是否存在於Users表中。如果它們被授予訪問權限。 – 2012-07-17 15:08:06

+0

我已經添加了Intergrated Security = SSPI,這讓我連接到數據庫。但是在我的數據庫中,我有一個模式前綴。所以我的所有存儲過程都在一個模式中。當.NET代碼嘗試調用過程時,它不會添加前綴架構,也無法找到存儲過程。我知道改變deafult模式可以解決這個問題,但是因爲我們使用一組用戶(域用戶組),所以我們無法改變默認模式。 – 2012-07-17 15:08:28

+0

在更改爲集成安全性之前,是否在過程調用中添加了前綴? – 2012-07-18 02:55:49