2017-02-01 4 views
0

Мне нужно получить сетевое доменное имя, связанное с текущим пользователем, без ввода пароля пользователя или учетных данных.Есть ли способ получить роль пользователя и группу из Ad/Ldap без указания пароля пользователя?

Я попытался получить группу пользователей и получить ошибку «произошла локальная ошибка».

Ниже код Я использовал.

using (PrincipalContext context = new PrincipalContext(ContextType.Domain, Environment.UserDomainName)) 
{ 
    try 
    { 
     // add the users groups to the result 
     var groupList = 
      UserPrincipal 
       .FindByIdentity(context, IdentityType.SamAccountName, Environment.UserName) 
       .GetGroups() 
       .Select(group => group.Name) 
       .ToList(); 
     groupList.ToList(); 
    } 
    catch (Exception ex) 
    { 
     // TODO: LogError("Unable to query Active Directory.", ex); 

    } 
} 

ответ

0

Active Directory не разрешает анонимный доступ по умолчанию. Так что да, вам нужно будет привязать сначала, используя тот метод, который вам подходит, если вы хотите получить что-то еще, кроме записи RootDSE.

+0

Не могли бы вы подробнее рассказать об этом, поскольку я врывался в RootDSE? Когда я нахожу какое-либо значение свойства, чем оно будет охватывать исключение «Возникла локальная ошибка». –

+0

Ваш первый вопрос был о домене текущего пользователя. Обычно это не информация, которую вы получаете через LDAP, но если вас интересуют атрибуты, связанные с доменом rootDSE, вы можете получить это через LDAP с анонимным сеансом - используйте пустую базу baseDn и базу данных поиска. Информация пользователя, однако, недоступна без успешной операции связывания. Я не знаю о вашем сообщении об ошибке, похоже, что вы можете подключиться, так что ваша связь может быть виновником. – marabu

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