2016-05-13 47 views
0

我已经编写了以下代码来检查域用户是否已启用并存在于我们的Active Directory中。我想知道的是,对于AD查询而言,我是新手:我需要查询AD的哪些AD权限?此代码在我的帐户下运行时运行良好,但我想将其作为服务运行,并且想知道服务帐户的必要访问权限?通过.NET查询Active Directory时所需的访问权限和潜在的副作用

此外,在发送这些查询时,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帐户或应用配置为在加入Active Directory域的计算机上使用NetworkService帐户(https://msdn.microsoft.com/en-us/library/windows/desktop/ms684272(v=vs.85).aspx),则该帐户将正常工作。

以这种方式访问​​Active Directory的基本注意事项是性能和安全性。所以你应该确保你不用(不必要的)查询来重载你的环境,并且确保你以安全的方式访问Active Directory。

还要考虑使用PowerShell的像这样简单的任务 - 您可以通过运行

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

实现类似的,也没有必要编译这个

相关问题