Гораздо проще использовать AWS SDK , чем напрямую вызывать интерфейс REST.
Все SDK предоставляют методы для создания сегментов и загрузки файлов.
Отказ от ответственности: Этот код не ищет одно точное совпадение , поэтому для domain \ j_doe
он может вернуть адрес электронной почты домена \ j_doe_from_external_department
, если такая учетная запись с таким же именем также существует. Если такое поведение нежелательно, то либо используйте фильтр samAccountName вместо целого anr , использованного ниже, либо дополнительно отфильтруйте результаты .
Я использовал это код успешно (где "account" - это имя пользователя для входа в систему без домена (домен \ account):
// get a DirectorySearcher object
DirectorySearcher search = new DirectorySearcher(entry);
// specify the search filter
search.Filter = "(&(objectClass=user)(anr=" + account + "))";
// specify which property values to return in the search
search.PropertiesToLoad.Add("givenName"); // first name
search.PropertiesToLoad.Add("sn"); // last name
search.PropertiesToLoad.Add("mail"); // smtp mail address
// perform the search
SearchResult result = search.FindOne();
Кроме того, откуда вы извлекаете имя пользователя (сохранено, ввод пользователя, текущая идентификация)? Имя пользователя может быть легко изменено (переименовано) - с другой стороны, идентификатор входа в систему SID / Windows не изменяется, поэтому вам лучше будет выполнять фильтрацию / поиск по идентификатору безопасности, а не по имени пользователя, если это возможно и / или необходимо для разработки. ..
Вы забыли фильтр.
Попробуйте добавить его перед вызовом FindOne:
search.Filter = String.Format("(sAMAccountName={0})", account);
обновление : Фредрик прибил его ...
Якоб прав. Вам нужно отфильтровать ваш поиск. Вы можете делать все виды и
s и или
s там, если вам нужно, но я думаю, что sAMAccountName
достаточно. Возможно, вы захотите запустить инструмент ADSI (он находится в комплекте ресурсов, я думаю), который позволяет вам работать с AD как с реестром. это здорово смотреть на свойства. Затем найдите пользователя, определите, какой реквизит вы хотите (в данном случае - mail) и каков его первичный ключ
- sAMAccountName
- хороший вариант, но вы также можете отфильтровать тип узла.
Я на Mac, поэтому я не могу проверить его для вас, но у каждого узла в AD есть тип, и вы можете добавить его в свой фильтр. Я думаю, что это выглядит так:
((sAMAccountName=bob) & (type=User))
Опять, проверь, я это знаю.