2010-09-27 31 views
1

我有一個ASP.NET應用程序,它使用Ldap對活動目錄進行身份驗證。這就是說,用戶在Web窗體上輸入相同的Windows憑據以登錄到此應用程序。該應用程序基本上是一個SQL Server數據庫前端,在我有限的經驗中,我使用web.config中的標準connectionStrings標籤輸入登錄數據庫的信息(現在使用SQL Server登錄)。我想改變它,所以每當用戶連接時,他或她都會用他或她的Windows用戶執行數據庫操作。當然,數據庫已經爲用戶設置了這些權限,但我不知道我想用什麼連接字符串,因爲現在不會有靜態的用戶/密碼組合,而且我也不想創建SQL Server登錄到將要使用該應用程序的每個人。使用Windows用戶標識從ASP.NET頁面執行SQL Server操作

謝謝!

+0

有關連接字符串幫助,請參見[connectionstrings.com](http://www.connectionstrings.com/)。 – 2010-09-27 20:29:29

回答

2

使用ConnectionStringBuilder類,並從web.config中爲它提供初始連接字符串。從那裏,更改用戶名和密碼屬性以匹配當前用戶的用戶名和密碼屬性。

public String GetUsersConnectionString(CurrentUser user) { 
    string connectString = ConfigurationManager.ConnectionStrings["LocalSqlServer"] 
         .ConnectionString; 

    SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(connectString); 
    builder.UserId = user.UserId; 
    builder.Password = user.Password; 

    return builder.ToString(); 
} 
+0

這將要求網頁知道用戶的活動目錄密碼。對於運行Windows身份驗證的IIS,通常不是這樣的 – Andomar 2010-09-27 20:31:01

+0

@Andomar在身份驗證期間的某個時刻,您需要獲取用戶的密碼並根據LDAP源對其進行身份驗證。那時,如果LDAP源成功認證用戶,您可以創建連接字符串並將其存儲在用戶的會話狀態中。從那時起,所有網頁都知道連接字符串是什麼。 – villecoder 2010-09-27 20:33:49

+0

只有在通過線路發送明文密碼時,這隻適用於基本身份驗證。在大多數情況下,服務器要求客戶端將密碼的MD5哈希添加到其他文本中。 Web服務器將不知道密碼。 – Andomar 2010-09-27 20:39:49

1

您將不得不配置ASP.NET機器進行委派。對於SQL 2000,請參見此knowledge base article或SQL 2008的newer one.

我們在工作中嘗試了幾次,但未能使其順利運行。

+0

+1感謝您的解釋! – 2010-09-27 21:04:31

相關問題