2016-05-13 1 views
0

Я написал следующий код, чтобы проверить, включен ли пользователь домена и существует ли он в нашей Active Directory. Что мне интересно, поскольку я новичок в AD-запросе: Какие права в отношении прав доступа для AD мне нужно запросить AD? Этот код отлично работает при запуске под моей учетной записью, но я хотел бы запустить его как службу и интересно узнать о необходимых правах доступа для учетной записи службы?Необходимые права доступа и потенциальные побочные эффекты при обращении к Active Directory через .NET.

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

PrincipalContext context = new PrincipalContext(ContextType.Domain); 
foreach (String x in new String[] { "mydomain\blub", "mydomain\blab", "mydomain\blib" }) 
{ 
    UserPrincipal user = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, x); 

    if (user == null || user.Enabled == false) 
     Console.WriteLine(x + " --> Account kaputt!"); 
    else 
     Console.WriteLine(x + " --> Account enabled!"); 
} 

ответ

1

По умолчанию вам не нужны дополнительные разрешения для запроса учетной записи пользователя из Active Directory. Если учетная запись, используемая вашим приложением, является обычной учетной записью Active Directory, или приложение настроено на использование учетной записи NetworkService (https://msdn.microsoft.com/en-us/library/windows/desktop/ms684272(v=vs.85).aspx) на компьютере, подключенном к домену Active Directory, это просто сработает.

Основные соображения для доступа к Active Directory таким образом - это производительность и безопасность. Поэтому вы должны убедиться, что вы не перегружаете среду (ненужными) запросами и убедитесь, что вы безопасно получаете доступ к Active Directory.

рассмотреть также с помощью PowerShell для выполнения простых задач, как это - вы можете получить аналогичный, запустив

@('blub', 'blab', 'blib') | Get-ADUser | select Name, Enabled 

и нет необходимости компилировать этот

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