Компания, в которой я работаю, имеет 2 леса Active Directory.Один лес называется нас, где я вхожу утром с моим профилем (us \ maflorin), а другой лес (mail.us), который предназначен для Exchange.
Я создал приложение asp.netкоторый запускается в SharePoint и получает имя SPContext.Current.Web.CurrentUser.LoginName, которое является именем входа в домен США.(для нас \ maflorin например для меня).Я хотел бы получить от нас учетные данные соответствующего объекта в лесу Exchange, чтобы записать изменения в глобальный список адресов (GAL) для пользователя, открывшего страницу после процесса утверждения линейного менеджера.
Я написалследующий рабочий код для получения объекта Exchange, но он использует два запроса ldap для поиска объекта:
private Dictionary<string,AdRecod> FindExchangeAdProperties(string samAccountName,string description)
{
Dictionary<string,AdRecod> properties = null;
if (!string.IsNullOrEmpty(samAccountName))
{
properties = GetUserProperties(@"(&(objectCategory=person)(mailNickname=" +
samAccountName + "))");
if (properties != null) return properties;
}
if ((description == "") || (description == "0"))
throw new Exception("No matching Description, couldn't find correct Exchange AD object");
properties = GetUserProperties(@"(&(objectCategory=person)(description=" +
description + "))");
return properties;
}
Возможно ли получить объект обмена одним запросом ldap непосредственно из us samAccountName?
Атрибут mailNickname в лесу обмена не всегда совпадает с sAMAccountName в лесу us.Если он не совпадает, я использую второй запрос ldap, чтобы узнать, возвращается ли запись, запрашивая поле описания.Поле описания во многих случаях одинаково для обоих лесов, но иногда администратор изменял его.
Можно ли легче найти соответствующий объект Exchange Active Directory для учетных данных домена us?Как Outlook находит из учетных данных США соответствующий почтовый ящик / рекламный объект?Я просматривал схему AD с adsiedit, но не смог найти чистое поле, которое используется для связывания двух объектов леса.
Кроме того, я искал службу автообнаружения управляемого веб-сервисов API api (почтовый ящик).атрибут dn), но в метод GetUserSettings необходимо передать SMTP-адрес, и это поле не заполняется в используемом домене.
Большое спасибо,
Матиас