2009-12-01 45 views
2

我需要驗證用戶的Windows憑據,給出userId,域和密碼。我們的Active Directory中包含多個域,其中一些我們可以使用下面的代碼清單:在全局編錄中驗證用戶

var domains = System.DirectoryServices.ActiveDirectory.Forest.GetCurrentForest().Domains; 

然而,我們也有屬於森林外域的用戶。但是,我可以通過全球目錄(GC)訪問它們。下面的代碼允許我獲取用戶標識的目錄條目。

System.DirectoryServices.DirectoryEntry globalCatalogDE = new System.DirectoryServices.DirectoryEntry("GC://DC=nsroot,DC=net"); 
var ds = new System.DirectoryServices.DirectorySearcher(globalCatalogDE); 
ds.Filter = "(&(objectClass=user)(sAMAccountName=" + userId + "))"; 
System.DirectoryServices.DirectoryEntry userDE = ds.FindAll()[0].GetDirectoryEntry(); 

如何驗證屬於某個域的用戶我無法直接訪問該用戶,但在GC中可以使用該用戶嗎?

回答

3

您無法通過查看全局編錄來驗證用戶,它僅用於搜索(每個域的架構中標記爲isMemberOfPartialAttributeSet的任何屬性都將複製到GC)。

密碼不復制到它;否則,從安全和複製的角度來看,每個域控制器上的所有用戶的密碼都是非常糟糕的。您需要建立到用戶憑據存儲的域的連接(即,您需要訪問LDAP端口389或636)。

+0

聽起來合理,足以讓我將其標記爲答案,即使它沒有解決我的問題。 – 2009-12-07 22:04:05