ユーザー名が Active Directory に存在するかどうかを確認したいですか? それに応じて、コードを実行する必要があります。
ドメインとユーザー名があります。DirectorySearcher を使用してパスワードなしで Active Directory にユーザー名が存在するかどうかを確認する方法。
ユーザー名が Active Directory に存在するかどうかを確認したいですか? それに応じて、コードを実行する必要があります。
ドメインとユーザー名があります。DirectorySearcher を使用してパスワードなしで Active Directory にユーザー名が存在するかどうかを確認する方法。
プロセスは Active Directory ユーザーの下で実行する必要があります。それ以外の場合は、PrincipalContext を作成するときに Active Directory ユーザーの資格情報も提供する必要があります。これは、userName でユーザーを検索する単純なコードです。
var context = new PrincipalContext(ContextType.Domain, "yourDomainHost");
var userInfo = UserPrincipal.FindByIdentity(context, userName);
編集:
ディレクトリサーチャーを使用する必要がある場合は、次の方法を試すことができます。
bool ContainsUser(string domain, string userName)
{
string ldapBase = string.Format("LDAP://{0}", domain);
// in case if process is not running under AD user use: new DirectoryEntry(ldapBase, "userName", "password")
using (var entry = new DirectoryEntry(ldapBase))
{
using (var searcher = new DirectorySearcher(entry))
{
searcher.Filter = string.Format("(sAMAccountName={0})", userName);
return searcher.FindOne() != null;
}
}
}
このアプローチを試すことができます:
DirectoryEntry entry = new DirectoryEntry("LDAP://DomainName");
DirectorySearcher dsearcher = new DirectorySearcher(entry);
dsearcher.Filter = "samaccountname=" + username;
SearchResult result = dsearcher.FindOne();
if(null!=result) //User Exists
{
//Do your stuff here
}
else //User Not Exists
{
//Do your stuff here
}
上記のコードは、AD サーバーが匿名アクセスを許可していることを前提としています。