2016-05-13 48 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 

實現類似的,也沒有必要編譯這個

相關問題