У меня есть веб-приложение, которое работает под управлением Windows Authentication, используя наш Active Directory. У меня есть новое требование, чтобы вытащить некоторую личную информацию через элемент Active Directory. Каким будет самый простой способ получить доступ к этой информации?Active Directory: Получить информацию о пользователе
ответ
Доступ к пользователю непосредственно через DirectoryEntry кажется наиболее простой подход. Вот некоторые из лакомых кусочков AD, которые я узнал из своего первого проекта, связанного с AD:
- В URI напишите LDAP в нижнем регистре. В противном случае вы получите загадочную ошибку. Я потратил больше одного дня на этот удручающий вопрос ...
- Чтобы очистить однозначное свойство, установите его в пустую строку, а не в нуль. Null вызывает исключение.
- Чтобы очистить многозначное свойство, используйте метод DirectoryEntry.Property.Clear().
- Ссылка на схему Active Directory укажет, какой тип данных будет иметь значение и будет ли он многозначным или однозначным.
- Вам не нужно вручную обновлятьCache() в каталоге Directory, но если вы когда-либо используете его и указываете, какие свойства кэшировать, знайте, что он не будет автоматически извлекать любые другие свойства в будущем.
- COMException может быть брошен в абсолютно любое время, когда вы используете классы в System.DirectoryServices. Следите за этими блоками try. Не думайте, что что-то безопасно.
Возможно, вам понадобится использовать DirectorySearcher, чтобы получить запись в каталоге вашего пользователя, если вы не знаете его пути (чего бы вы не хотели, просто зарегистрировавшись в нем). Использование этого было довольно легко, но остерегайтесь причуд в синтаксисе LDAP; а именно, для кодирования символов, отличных от ASCII (и других?). Строка поиска, которую вы использовали бы, вероятно, будет примерно такой: (& (sAMAccountName = whatever) (class = user)). Это от верхней части головы и может быть немного неправильным.
Active Directory schema reference будет полезен. Поймите, что схема может быть изменена и расширена (например, установка Exchange добавит пользователям информацию о почтовых ящиках).
AD Explorer - полезный инструмент, который вы можете использовать для отладки и управления данными AD низкого уровня. Я нашел это полезным, когда я знаю, какое свойство я хочу установить, но не могу найти правильное диалоговое окно в инструменте управления AD.
Я использовал стандартную библиотеку LDAP для извлечения информации с сервера Active Directory, но вам нужно убедиться, что необходимые вам данные доступны через схему сервера LDAP. В общем, вы можете получить любую информацию, хранящуюся в InetOrganizationalPerson, и большую часть информации, относящейся к группе (ей), к которой они принадлежат.
Посмотрите на пространство имен System.DirectoryServices:
+1 для современного ответа. – 2012-10-31 16:55:30
Возможно, вы найдете следующий фрагмент, полезный как стартер.
public static bool IsUserInGroup(string lanid, string group)
{
DirectoryEntry entry = new DirectoryEntry("LDAP://" + LDAPPATH);
if(entry != null)
{
[email protected]"LDAPUSER";
entry.Password="LDAPPASSWORD";
DirectorySearcher srch = new DirectorySearcher(entry);
srch.Filter = String.Format("(&(objectClass=person)(sAMAccountName={0}))", lanid);
srch.PropertiesToLoad.Add("memberOf");
SearchResult result = srch.FindOne();
if(result != null)
{
if(result.Properties.Contains("memberOf"))
{
string lookfor = String.Format("cn={0},", group.ToLower());
foreach(string memberOf in result.Properties["memberOf"])
{
if(memberOf.ToLower().StartsWith(lookfor))
return true;
}
}
}
return false;
}
throw new Exception(String.Format("Could not get Directory lanid:{0}, group{1}", lanid, group));
}
Очень хорошая ссылка: Howto: (Almost) Everything In Active Directory via C#
- 1. Как получить информацию о пользователе от Azure Active Directory
- 2. Возврат информации о найденном пользователе Active Directory
- 3. Получить информацию о пользователе
- 4. Получить информацию о текущем пользователе?
- 5. получить информацию о пользователе twitter
- 6. Получить информацию о пользователе facebook
- 7. Цоколь: Получить информацию о пользователе
- 8. PHP получить информацию о пользователе
- 9. Получить информацию о пользователе с помощью PowerShell
- 10. Получить информацию о пользователе из Active Directory на основе ввода пользователем
- 11. Получить информацию о пользователе во время проверки подлинности из Azure Active Directory
- 12. Получить информацию о диспетчере пользователя из Active Directory
- 13. Active Directory: Как получить информацию о группе, принадлежащую другому домену?
- 14. Как получить информацию о Active Directory из единого входа?
- 15. Использование информации о пользователе Active Directory с SQL
- 16. Извлечь информацию о пользователе из Active Directory при входе в систему
- 17. Подключитесь к нескольким Azure Active Directory с одним приложением и получите информацию о пользователе
- 18. Active Directory
- 19. ASP.NET C# Получить информацию о пользователе Facebook
- 20. Twitter API получить информацию о пользователе
- 21. Получить информацию о пользователе в JSP?
- 22. PHP войти и получить информацию о пользователе
- 23. Laravel friendship получить информацию о пользователе
- 24. facebook php sdk: получить информацию о пользователе
- 25. Как получить информацию о пользователе от Facebook?
- 26. Получить информацию о пользователе от token C#
- 27. получить информацию о пользователе в spring client
- 28. Получить стандартную информацию о пользователе в Haxe
- 29. получить информацию о пользователе в laravel
- 30. Infragistics Ultralistview MouseHover Получить информацию о пользователе
Только что закончил прокручивать какой-то код, который в основном вы говорили.Использовал DirectorySearcher и получил необходимую мне информацию. К счастью, мне нужно только получить самую основную информацию. – 2008-09-25 09:37:45
для меня, написав ldap в нижнем регистре, выбросил COMException. – 2013-04-24 08:48:02