[英]Active Directory
C# 應用程序是否有可能找到windows domain
上的所有用戶,以便應用程序在domain
運行並且不在同一網絡上可能超過http
?
公共數據表 getActiveDirectoryUsers() {
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("Name"));
dt.Columns.Add(new DataColumn("POCode"));
dt.Columns.Add(new DataColumn("Active"));
DataRow dtrow;
DirectoryEntry myLdapConnection = createDirectoryEntry();
List<Users> listAlluers = new List<Users>();
DirectorySearcher search = new DirectorySearcher(myLdapConnection);
SearchResult result;
SearchResultCollection resultCol = search.FindAll();
//search.PropertiesToLoad.Add("cn");//user name
//search.PropertiesToLoad.Add("title"); //design
if (resultCol != null)
{
for (int counter = 0; counter < resultCol.Count; counter++)
{
string UserNameEmailString = string.Empty;
result = resultCol[counter];
if (result.Properties.Contains("cn") && result.Properties.Contains("title"))
{
dtrow = dt.NewRow();
dtrow[0] = (String)result.Properties["cn"][0];
dtrow[1] = (String)result.Properties[BusinessLayer.UserConfig.UniqueField][0];
dtrow[2] = (String)result.Properties["useraccountcontrol"][0];
dt.Rows.Add(dtrow);
}
}
}
return dt;
}
static DirectoryEntry createDirectoryEntry()
{
String Path = "LDAP://your.server.Ip";
DirectoryEntry ldapConnection = new DirectoryEntry(Path, "username", "password");
return ldapConnection;
}
您需要應用程序的某些組件在可以詢問 Active Directory 的“區域”內運行。
這可能是作為 WCF web 服務公開的小型服務器端組件,您可以通過 HTTP 從任何地方查詢您需要的內容(默認情況下不安全),
這取決於域的安全設置。 當然,不是直接通過 http 從域外部綁定到域 controller 肯定是可能的。 假設他們沒有阻止防火牆上的端口,您可以使用常規 LDAP 連接或依賴 .NET 中的 Active Directory 類。 很可能您必須使用安全連接,並且它將位於非標准端口上。 您需要為連接提供域憑據才能進行連接。 因為您在域之外,您可能還必須指定要綁定到的域 controller - 請參見 System.DirectoryServices.AccountManagement 中的 PrincipalContext,特別是允許您提供憑據的構造函數和 controller 名稱/端口。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.