Как получить адрес электронной почты пользователя от Active Directory?

Гораздо проще использовать AWS SDK , чем напрямую вызывать интерфейс REST.

Все SDK предоставляют методы для создания сегментов и загрузки файлов.

23
задан TylerH 26 July 2018 в 20:02
поделиться

4 ответа

Отказ от ответственности: Этот код не ищет одно точное совпадение , поэтому для 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();
40
ответ дан 29 November 2019 в 01:20
поделиться

Кроме того, откуда вы извлекаете имя пользователя (сохранено, ввод пользователя, текущая идентификация)? Имя пользователя может быть легко изменено (переименовано) - с другой стороны, идентификатор входа в систему SID / Windows не изменяется, поэтому вам лучше будет выполнять фильтрацию / поиск по идентификатору безопасности, а не по имени пользователя, если это возможно и / или необходимо для разработки. ..

1
ответ дан 29 November 2019 в 01:20
поделиться

Вы забыли фильтр.

Попробуйте добавить его перед вызовом FindOne:

search.Filter = String.Format("(sAMAccountName={0})", account);
2
ответ дан 29 November 2019 в 01:20
поделиться

обновление : Фредрик прибил его ...

Якоб прав. Вам нужно отфильтровать ваш поиск. Вы можете делать все виды и s и или s там, если вам нужно, но я думаю, что sAMAccountName достаточно. Возможно, вы захотите запустить инструмент ADSI (он находится в комплекте ресурсов, я думаю), который позволяет вам работать с AD как с реестром. это здорово смотреть на свойства. Затем найдите пользователя, определите, какой реквизит вы хотите (в данном случае - mail) и каков его первичный ключ - sAMAccountName - хороший вариант, но вы также можете отфильтровать тип узла.

Я на Mac, поэтому я не могу проверить его для вас, но у каждого узла в AD есть тип, и вы можете добавить его в свой фильтр. Я думаю, что это выглядит так:

((sAMAccountName=bob) & (type=User))

Опять, проверь, я это знаю.

0
ответ дан 29 November 2019 в 01:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: