Вопрос по c#, active-directory, directoryservices, .net – C # доступ к активной директории с разными учетными данными пользователя

6

Существует новое приложение для создания пользователей, которое мы только что предоставили нашим пользователям. Однако этим пользователям нужна возможность создания пользователей с помощью приложения, даже если у них нет разрешения на создание пользователей.

В C # как вы выдаете себя за другого пользователя, чтобы иметь эту функциональность. Это приложение первичное использованиеSystem.DirectoryServices.

Фрагмент кода:

DirectoryEntry dEntry = new DirectoryEntry("LDAP://OU=");
DirectorySearcher dSearcher = new DirectorySearcher(dEntry);
//filter just user objects
dSearcher.SearchScope = SearchScope.Subtree;
dSearcher.Filter = "(&(objectClass=user)(mail=" + excel_Holding_Table.Rows[i]["EmailAddress"].ToString() + "))";
dSearcher.PageSize = 1000;
sResults = dSearcher.FindAll();
Запустить процесс / сервис от имени администратора? Я знаю, как сделать это вручную, но я не знаю, как это будет работать в .NET автоматически. JAB

Ваш Ответ

4   ответа
9

DirectoryEntry Класс непосредственно и укажите имя пользователя и пароль:

DirectoryEntry de = new DirectoryEntry(path);

de.Username = "username";
de.Password = "password";

И получить доступ к Active Directory из объекта de. Или вы можете использоватьWindowsIdentity Класс и и выдать себя за пользователя:

WindowsIdentity newId = new WindowsIdentity(safeTokenHandle.DangerousGetHandle());
WindowsImpersonationContext impersonatedUser = newId.Impersonate();

Полный пример кода доступен по адресу:

Олицетворение и DirectoryEntry

0

DirectoryEntry constructor that takes username, password and authenticationType parameters.

Помимо этого,DirectoryEntry DirectorySearcher а такжеSearchResultCollection типыIDisposable - вам нужно избавиться от них, вероятно, сusing заявления.

0

String, String, AuthenticationTypes), который принимает имя пользователя и пароль вместо олицетворения.

DirectoryEntry directoryEntry = new DirectoryEntry("IIS://" + serverName + "/W3SVC/1/Root", @"domain\username", "password", AuthenticationTypes.Secure | AuthenticationTypes.Sealing); 

Ссылка

0

я к AD или выдавать себя за привилегированного пользователя, как предлагали другие ответы.

Но это имеет значение для безопасности, поскольку это означает, что ваши пользователи смогут использовать эти привилегированные учетные данные для других, неавторизованных целей.

Более безопасным решением было бы создание веб-службы, работающей под учетной записью службы с соответствующими разрешениями AD. Пользователи могут проходить проверку подлинности в веб-службе с использованием проверки подлинности Windows, и веб-служба будет создавать пользователей от их имени. Он может использовать авторизацию, чтобы ограничить действия пользователей (например, создавать пользователей только в своем отделе).

Похожие вопросы