У меня есть имя пользователя и пароль для активного каталога, и я хочу войти в активный каталог с помощью С#. Как я могу сделать это в Windows Forms?
Как войти в Active Directory?
Ответы (4)
Ну вот. Этот метод проверяет username/password
относительно Active Directory и уже довольно давно является частью моего набора функций.
//NOTE: This can be made static with no modifications
public bool ActiveDirectoryAuthenticate(string username, string password)
{
bool result = false;
using (DirectoryEntry _entry = new DirectoryEntry())
{
_entry.Username = username;
_entry.Password = password;
DirectorySearcher _searcher = new DirectorySearcher(_entry);
_searcher.Filter = "(objectclass=user)";
try
{
SearchResult _sr = _searcher.FindOne();
string _name = _sr.Properties["displayname"][0].ToString();
result = true;
}
catch
{ /* Error handling omitted to keep code short: remember to handle exceptions !*/ }
}
return result; //true = user authenticated!
}
Программное обеспечение, выполняющее это, должно быть запущено на компьютере внутри домена, очевидно (иначе у вас не будет Active Directory для аутентификации ваших учетных данных).
Этот вопрос задан пару лет назад, я надеюсь, что этот ответ поможет людям в будущем. Это работает для меня:
Добавьте эти ссылки:
- с помощью System.DirectoryServices;
- с помощью System.DirectoryServices.AccountManagement;
После этого вы можете использовать этот код в своем приложении:
PrincipalContext pc = new PrincipalContext(ContextType.Domain, "YOUR DOMAIN");
bool Valid = pc.ValidateCredentials("User", "password");
Переменная с именем Valid покажет вам значение True, если вход в систему в порядке.
Для получения дополнительной информации посетите эту страницу. Страница отсюда, stackOverFlow, и она покажет вам много информации о: "войти с помощью MS Active Directory"
Решение
Подключиться к Active Directory очень просто.
Вы должны использовать объект DirectoryEntry
(в пространстве имен System.DirectoryServices
).
Конструктор для этого объекта принимает в параметрах три строки:
- путь к Active Directory. Этот путь имеет формат:
LDAP://your-name-AD
- имя пользователя для подключения
- соответствующий пароль
Пример
using System.DirectoryServices;
try
{
DirectoryEntry Ldap = new DirectoryEntry("LDAP://your-name-AD", "Login", "Password");
}
catch(Exception Ex)
{
Console.WriteLine(Ex.Message);
}
DirectoryEntry
? Я хочу пользователя using System.Security.Principal;
спасибо
- person Arian; 26.07.2012
NetworkCredential cred = new NetworkCredential("User", "Pass", "Domain");
? можете ли вы объяснить больше, пожалуйста
- person Arian; 26.07.2012
DirectoryEntry
обрабатывает все действия, выполняемые над AD; не NetworkCredential
.
- person GG.; 26.07.2012
более короткий ответ — добавить ссылку System.DirectoryServices.AccountManagement
Затем используйте UserPrincipal.Current.Context.ValidateCredentials("имя пользователя", "пароль");
Но я предполагаю, что вам нужно будет присоединиться к домену, который вы хотите проверить.
WCF
службы, у которых естьWS-Http Binding
- person Arian   schedule 26.07.2012NetworkCredential
? - person Arian   schedule 26.07.2012