2012-02-16 20 views
19

以前對於我們所有的asp.net應用程序,我們一直使用SQL Server中的sysadmin用戶來連接和添加/更新/刪除/獲取數據。我們的SQL管理員想要刪除該帳戶並創建一個域帳戶,以便我們可以在我們的.net應用程序中使用該帳戶。使用域用戶的連接字符串?

我現在的連接字符串是:

 
name="name" connectionString="Data Source=server;Initial Catalog=database;Persist Security Info=True;User ID=user;Password=password" providerName="System.Data.SqlClient" 

將連接字符串是什麼使用域帳戶?

我想:

 
name="name" connectionString="Data Source=server;Initial Catalog=database;Persist Security Info=True;User ID=domain\user;Password=password" providerName="System.Data.SqlClient" 

,它不工作。

是否有不同的方式使用域帳戶連接到SQL Server?

感謝您的幫助。

+1

**注**:您無法連接字符串登錄到SQL Server中的傳遞Windows用戶名和密碼,詳見[這裏](https://開頭stackoverflow.com/questions/830929/database-windows-authentication-username-password)。它必須是SQL用戶登錄名。 – RBT 2017-06-30 07:24:13

回答

27

看一看connectionstrings.com每一個可能的變化 - 一個非常方便的資源我用所有的時間

具體而言,您希望這種格式:

Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI; 

這當然只能當有問題的域名帳戶是打開連接的域帳戶。

有與任意憑據連接沒有簡單的方法 - 但你可以impersonate用戶的問題,然後再連接。

這可以是一個有點疼痛。如果用戶位於本地網絡(或者您控制其瀏覽器配置),另一種方法是在您的站點上使用Kerberos身份驗證。這些頁面將與相關用戶的權限一起提供 - 然後您可以使用上面的連接字符串,IIS將使用適合每個用戶的憑據連接到Db。從安全角度來看,這是非常有用的,因爲Db能夠以每個用戶爲基礎進行審計,並且權限可以是每用戶/行/列而不是僅每個應用。

+0

感謝您的回覆。現在又出現了另一個問題。所以要在連接字符串中使用域帳戶,我必須使用域帳戶登錄到Windows/PC才能使用它的唯一方式? – 2012-02-16 14:32:30

+2

這不是您登錄的人,而是網站的運行方式。例如進入應用程序池並將用戶更改爲(比如說)MyDomain \ MyWeb.Service - 然後將該數據庫的權限授予該用戶。這是最簡單的方法 - 但是所有連接都將作爲一個用戶完成到數據庫。如果你想連接具體到每個用戶的權限(如PCI合規),你需要考慮通過證書 - 無論是pickingthe適當的身份驗證模式或使用模擬 – Basic 2012-02-16 14:35:40

+0

真棒。非常感謝您的幫助。 – 2012-02-16 14:37:19

2
Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI; 

以上是針對SQL Server實例的Windows身份驗證的連接字符串。

4

是的,試試這個:

Data Source=server;Initial Catalog=database;Integrated Security=SSPI; 

此指定您希望使用集成的Windows身份驗證,你仍然要使用SQL Server身份驗證(即使你輸入的用戶名看上去像一個Windows域/用戶帳戶SQL服務器仍然把它當作標準的SQL Server身份驗證)

而且看看connectionstrings.com

+0

非常感謝回覆。 – 2012-02-16 14:35:28

3

使用集成安全性:

Integrated Security=SSPI 

其中有一個變體:

Trusted_Connection=True 

的不同連接字符串(用於各種的數據庫)可以在connectionstrings.com找到。

有了這兩個,你需要確保應用程序是你需要登錄的帳戶下運行。

2

如果要使用不同的用戶帳戶,然後在用戶登錄你有兩個選擇。

選項1

您可以將用戶添加到應用程序池標識。

爲了這個去推動應用程序池的設置和編輯使用您想要的用戶身份。

選項2

在網絡配置補充一點:

<identity impersonate="true" userName="Domain\User" password="Password" /> 

,並使用此連接stirng:

<add name="Name" connectionString="Data source=SqlServer;Initial Catalog=DbName;Integrated security=True" providerName="System.Data.SqlClient"/> 

更多詳情請參閱: https://msdn.microsoft.com/en-us/library/134ec8tc.aspx

還發現了另外一個很好的文章她 https://www.codeproject.com/tips/520341/implement-impersonation-in-asp-net