Найти, принадлежит ли пользователь группе - PullRequest
0 голосов
/ 09 ноября 2018

Я хочу узнать, принадлежит ли пользователь группе AD. Можете ли вы посоветовать, как добавить эту функцию , используя следующий код?

Я прошу пользователя ввести свое имя пользователя и пароль (через форму), чтобы не использовать учетные данные Windows. С помощью приведенного ниже кода я могу подтвердить пользователя, передав имя пользователя и пароль. Как я могу построить на коде, чтобы проверить, существует ли пользователь в группе AD. Есть ли другой способ сделать это? Пожалуйста, совет

DirectoryEntry adsEntry = new DirectoryEntry("domain", userid, password); 
DirectorySearcher adsSearcher = new DirectorySearcher(adsEntry); 
try   {   
    SearchResult adsSearchResult = adsSearcher.FindOne();
    context.Session.Timeout = 2;
    context.Session["ValidatedLoginID"] = userid;
    user.Verified = true;
    adsEntry.Close();  
} catch ( Exception ex )  {   
    // Failed to authenticate. Most likely it is caused by unknown user   
    // id or bad strPassword.   
    user.error = ex.Message;   
    adsEntry.Close();  
} 

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Вот как я решил это:

            DirectoryEntry adsEntry = new DirectoryEntry("domain", userid, password);
            DirectorySearcher adsSearcher = new DirectorySearcher(adsEntry);
            adsSearcher.Filter = "(&(objectClass=user)(objectCategory=person)(sAMAccountName=" + userid + "))";

        try
        {
            SearchResult adsSearchResult = adsSearcher.FindOne();
            string propertyName = "memberOf";
            ResultPropertyValueCollection rpvcResult = adsSearchResult.Properties[propertyName];

            foreach (Object PropertyValue in rpvcResult)
            {
                if (PropertyValue.ToString() == "Group Name")
                {
                    user.Verified = true;
                    user.FullName = GetFullName(userid);
                    adsEntry.Close();
                } else
                {
                    user.Verified = false;
                    user.error = "You do not belong to the Group so you cannot do this function";
                }
            }

        } catch (Exception ex)
        {
            user.error = "Please check your username and password credentials";
            adsEntry.Close();
        }
0 голосов
/ 09 ноября 2018

Вы можете использовать следующий код:

// set up domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "DOMAINNAME");

// find a user
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "SomeUserName");

 // find the group in question
GroupPrincipal group = GroupPrincipal.FindByIdentity(ctx, "YourGroupNameHere");

if(user != null)
{
   // check if user is member of that group
   if (user.IsMemberOf(group))
   {
     // do something.....
   } 
}

Также посмотрите: Как проверить, принадлежит ли пользователь группе AD?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...