2012-10-16 4 views
0

Я хочу проверить, является ли пользователь членом группы в C#. Приложение работает на Windows Mobile 6.1, и я должен использовать функции ldap с [DllImport].Проверьте, является ли пользователь членом группы (ldap)

У кого-нибудь есть образец для этого? Подключение к серверу ldap и проверка работы пользователя/пароля.

ответ

1

Почему бы не использовать то, что уже находится в рамке.

Взгляните на это: WindowsPrincipal.IsInRole Method (String)

WindowsIdentity identity = WindowsIdentity.GetCurrent(); 
WindowsPrincipal principal = new WindowsPrincipal(identity); 
principal.IsInRole("role name"); 

ИЛИ

Если вы используете C#/VB.Net и System.DirectoryServices, этот фрагмент должен сделать трюк:

DirectoryEntry rootEntry = new DirectoryEntry("LDAP://dc=yourcompany,dc=com"); 

DirectorySearcher srch = new DirectorySearcher(rootEntry); 
srch.SearchScope = SearchScope.Subtree; 

srch.Filter = "(&(objectClass=user)(sAMAccountName=yourusername)(memberof=CN=yourgroup,OU=yourOU,DC=yourcompany,DC=com))"; 

SearchResultCollection res = srch.FindAll(); 

if(res == null || res.Count <= 0) 
    Console.WriteLine("This user is NOT a member of this group"); 
else 
    Console.WriteLine("This user is INDEED a member of this group"); 

Осторожно: это будет проверяться только на непосредственное членство в группах, и оно не будет проверять членство в так называемой «первичной группе» (обычно «cn = Пользователи») в вашем домене. Он не обрабатывает вложенные членства, например. Пользователь A является членом группы A, входящей в группу B, - тот факт, что Пользователь A действительно является членом группы B, также не отражается здесь.

Ссылка: How to write LDAP query to test if user is member of a group?

+0

Этот вопрос конкретно о Compact Framework (я выяснены в тегах), который не имеет никакой поддержки 'WindowsPrincipal' или' DirectoryEntry'. – ctacke

Смежные вопросы