活动目录

时间:2011-06-01 12:05:44

标签: c# active-directory

C#应用程序是否有可能找到windows domain上的所有用户,使得应用程序在domain之外运行但不在同一网络上可能会超过http?< / p>

3 个答案:

答案 0 :(得分:0)

您需要在“区域”内运行应用程序的某个组件,以便查询Active Directory。

这可能是作为WCF Web服务公开的小型服务器端组件,您可以通过HTTP从任何地方查询所需内容(默认情况下不安全)。

答案 1 :(得分:0)

这取决于域的安全性设置。但是,不能直接通过http从域外绑定到域控制器。假设他们没有阻止防火墙端口,您可以使用常规LDAP连接或依赖.NET中的Active Directory类。您很可能必须使用安全连接,它将位于非标准端口上。您需要为连接提供域凭据才能进行连接。因为您在域外,您可能还必须指定要绑定的域控制器 - 请参阅System.DirectoryServices.AccountManagement中的PrincipalContext,特别是允许您提供凭据的控制器constructor和控制器名称/端口。

答案 2 :(得分:0)

public DataTable 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;
    }