Проверьте, является ли текущий пользователь членом группы активных каталогов. - PullRequest
4 голосов
/ 06 февраля 2012

Мне нужно проверить, является ли текущий пользователь членом группы активных каталогов.Я начал с получения текущего пользователя, как показано ниже.Теперь я хочу узнать, как этот CurrentUser находится в группе активных каталогов "CustomGroup"

string CurrentUser = WindowsIdentity.GetCurrent().Name;

Ответы [ 2 ]

11 голосов
/ 06 февраля 2012

Вы можете использовать .NET 3.5 System.DirectoryServices.AccountManagement классы.Подробности см. В статье MSDN Управление принципами безопасности каталогов в .NET Framework 3.5 .Вы можете использовать что-то вроде:

string CurrentUser = WindowsIdentity.GetCurrent().Name;

PrincipalContext context = new PrincipalContext(ContextType.Domain, "Domain");
UserPrincipal upUser = UserPrincipal.FindByIdentity(context, CurrentUser);
if(upUser != null)
{
    if (upUser.IsMemberOf(context, IdentityType.SamAccountName, "CustomGroup")) 
    {
        // The user belongs to the group
    }
}
1 голос
/ 06 февраля 2012

Попробуйте это в .NET 3.5 или 4:

PrincipalContext infPC = new PrincipalContext(ContextType.Domain, "domain", "login", "password");
UserPrincipal infUP = new UserPrincipal(infPC);
PrincipalSearcher infPS = new PrincipalSearcher();
UserPrincipal foundUP;
GroupPrincipal infGP = new GroupPrincipal(infPC);
GroupPrincipal foundGP;
string CurrentUser = WindowsIdentity.GetCurrent().Name;

infUP.SamAccountName = CurrentUser;
infPS.QueryFilter = infUP;
foundUP = infPS.FindOne();
infGP.Name = "CustomGroup";
infPS.QueryFilter = infGP;
foundGP = infPS.FindOne();
bool ismember = foundUP.IsMemberOf(foundGP);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...