Существует новое приложение для создания пользователей, которое мы только что предоставили нашим пользователям. Однако этим пользователям нужна возможность создавать пользователей через приложение, даже если у них самих нет разрешения на создание пользователей.
В С#, как вы выдаете себя за другого пользователя, чтобы иметь эту функциональность. Это основное приложение, использующее 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();
Ответ 1 · рейтинг 10 · Darren
Вы можете напрямую использовать класс 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
Ответ 3 · danielQ
Используйте конструктор DirectoryEntry (String, String, String, AuthenticationTypes), который принимает имя пользователя и пароль вместо олицетворения.
DirectoryEntry directoryEntry = new DirectoryEntry("IIS://" + serverName + "/W3SVC/1/Root", @"domain\username", "password", AuthenticationTypes.Secure | AuthenticationTypes.Sealing);
Справочник
Ответ 4 · Joe
Вы можете использовать привилегированные учетные данные для подключения к AD или для олицетворения привилегированного пользователя, как предлагалось в других ответах.
Но это имеет последствия для безопасности, поскольку это означает, что ваши пользователи смогут использовать эти привилегированные учетные данные для других, неавторизованных целей.
Более безопасным решением было бы создание веб-службы, работающей под учетной записью службы с соответствующими разрешениями AD. Пользователи могут аутентифицироваться в веб-службе, используя проверку подлинности Windows, и веб-служба будет создавать пользователей от их имени. Он может использовать авторизацию для ограничения того, что пользователям разрешено делать (например, создавать пользователей только в своем собственном отделе).