Вы можете запросить AD, чтобы узнать, к каким группам принадлежит пользователь.
Это отличный ресурс: http://www.codeproject.com/KB/system/everythingInAD.aspx#39
Примерно так же должно работать:
using System.DirectoryServices.ActiveDirectory;
using System.DirectoryServices;
public bool IsUserInGroup(string group, string user)
{
string DomainName="";
string ADUsername="";
string ADPassword="";
DirectoryEntry entry=new DirectoryEntry(LDAPConnectionString, ADUsername, ADPassword);
DirectorySearcher dSearch=new DirectorySearcher(entry);
dSearch.Filter="(&(objectClass=user)(userPrincipalName=" + user + ")";
foreach(SearchResult sResultSet in dSearch.FindAll())
{
string strGroupList=GetProperty(sResultSet, "memberOf");
if(!string.IsNullOrEmpty(strGroupList) && strGroupList.IndexOf(group)>-1)
return true;
}
return false;
}
У меня не было времени проверить это или даже скомпилировать, поэтому я заранее извиняюсь за любую ошибку.if
в foreach
может быть недостаточно.Также может быть более эффективный способ выполнить запрос, но это было то, что я мог придумать быстро.