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

を実行することにより、同様の達成することができ、これ

をコンパイルする必要はありません
関連する問題