Фон
Я экспериментировал с доступом к активному каталогу в C #, чтобы узнать, как подключать / проверять учетные данные различными способами. В нижней части этого ответа я включил несколько фрагментов кода, чтобы дать представление о том, что я сделал, может быть, это может быть построено для достижения моей цели.
Основная цель
Если у меня есть действительные учетные данные для подключения к Active Directory, могу ли я взять строку, представляющую имя пользователя / адрес электронной почты (при условии, что она существует в userPrincipalName
или аналогичном поле), и получить обратно objectGUID
?
Или мне нужно принимать во внимание другие вещи, такие как: разрешения, которые эти полномочия имеют для поиска других пользователей;знание структуры различных AD;если userPrincipalName
является правильным полем для поиска?
Фрагменты кода (экспериментальные начала, не полностью функциональные для моей цели)
var credentials = new NetworkCredential(username, password, hostname);
var serverId = new LdapDirectoryIdentifier(hostname);
var connection = new LdapConnection(serverId, credentials);
try
{
connection.Bind();
}
catch (Exception e)
{
//error
Console.WriteLine(e);
connection.Dispose();
return;
}
//success
var dirEntry = new DirectoryEntry(string.Format("LDAP://{0}/{1}", hostname, baseDn), username, password);
var searcher = new DirectorySearcher(dirEntry)
{
Filter = "(&(&(objectClass=user)(objectClass=person)))"
};
var resultCollection = searcher.FindAll();
searcher.Dispose();