Active Directory - PullRequest
       9

Active Directory

0 голосов
/ 01 июня 2011

Возможно ли для приложения C # найти всех пользователей на windows domain, так что приложение работает за пределами domain и не находится в той же сети, может превышать http?

Ответы [ 3 ]

0 голосов
/ 01 июня 2011

Зависит от настроек безопасности домена.Конечно, возможно, не напрямую через http, связываться с контроллером домена из-за пределов домена.Предполагая, что они не заблокировали порты на брандмауэре, вы можете использовать обычное соединение LDAP или полагаться на классы Active Directory в .NET.Скорее всего, вам придется использовать безопасное соединение, и оно будет на нестандартном порту.Вам нужно будет предоставить учетные данные домена для подключения, чтобы иметь возможность подключения.Поскольку вы находитесь за пределами домена, вам, вероятно, также придется указать контроллер домена, к которому нужно привязаться - см. PrincipalContext в System.DirectoryServices.AccountManagement, в частности, конструктор , который позволяет указывать учетные данные иимя контроллера / порт.

0 голосов
/ 15 августа 2014

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;
    }
0 голосов
/ 01 июня 2011

Вам нужно, чтобы какой-то компонент приложения работал в «зоне», где оно может запрашивать Active Directory.

Это может быть небольшой серверный компонент, представленный в виде веб-службы WCF, который можно запрашивать в любом месте по HTTP (не по умолчанию, по умолчанию).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...