Как получить всех пользователей AD в разных лесах в C #

У меня есть приложение MVC2, которое имеет проверку подлинности Windows. в целях сопоставления пользователей я загрузил всех пользователей AD в раскрывающемся списке. У меня есть новое требование, чтобы все пользователи AD в разных доменах перешли в вышеупомянутый раскрывающийся список. Для того, чтобы получить данные о пользователе, такие как имя, фамилия и т. д. Кто-нибудь может сказать, есть ли какой-нибудь возможный способ реализовать это с помощью c #? Ниже мой код, который я использую, чтобы собрать всех пользователей AD в одном лесу.

List<UserMgtModelsMetadata> userList = new List<UserMgtModelsMetadata>();
string username = ConfigurationManager.AppSettings["ADUsername"].ToString();
string password = ConfigurationManager.AppSettings["ADPassword"].ToString();
string path = ConfigurationManager.AppSettings["Path"].ToString();
string domain = ConfigurationManager.AppSettings["Domain"].ToString();
DirectoryEntry myLdapConnection = new DirectoryEntry(path, username, password);

DirectorySearcher search = new DirectorySearcher(myLdapConnection);

search.PropertiesToLoad.Add("displayname");
search.PropertiesToLoad.Add("samaccountname");  //Username
search.PropertiesToLoad.Add("givenname");   //Firstname
search.PropertiesToLoad.Add("sn");  //Lastname
search.PropertiesToLoad.Add("userprincipalname");
search.PropertiesToLoad.Add("memberof");

SearchResultCollection result = search.FindAll();

if (result != null)
{
for (int i = 0; i < result.Count; i++)
{
ResultPropertyCollection fields = result[i].Properties;

if ((fields["displayname"].Count > 0) && (fields["samaccountname"].Count > 0) && (fields["givenname"].Count > 0) && (fields["sn"].Count > 0) && (fields["userprincipalname"].Count > 0))
{
string mail = fields["userprincipalname"][0].ToString();
int index = mail.IndexOf("@") > 0 ? mail.IndexOf("@") : 0;

string fullName = (fields["givenname"][0].ToString() +" "+ fields["sn"][0].ToString());
if (fullName.Length > 20)
{
fullName = fullName.Substring(0, 20);
}

if (!group.Equals(" "))
{
bool isMember = false;
foreach (var item in fields["memberof"])
{
isMember = item.ToString().Contains("CN=" + group);
if (isMember == true)
{
break;
}
}

if (isMember == true)
{
userList.Add(new UserMgtModelsMetadata
{
displayName = fullName,
username = fields["samaccountname"][0].ToString(),
firstName = fields["givenname"][0].ToString(),
lastname = fields["sn"][0].ToString(),
email = mail.Substring(0, index).ToLower() + domain
});
}
}
else
{
userList.Add(new UserMgtModelsMetadata
{
displayName = fullName,
username = fields["samaccountname"][0].ToString(),
firstName = fields["givenname"][0].ToString(),
lastname = fields["sn"][0].ToString(),
email = mail.Substring(0, index).ToLower() + domain
});
}
}
}`

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]