Active Directory LDAP Query by sAMAccountName and Domain

sAMAccountNameとDomainによるLDAPストアのクエリはどのように行うのですか? Active DirectoryやLDAP用語では、"domain"プロパティはどのような名前ですか?

今のところ、フィルターはこんな感じです。ドメインを追加できるようにしたいのですが。

(&(objectCategory=Person)(sAMAccountName=BTYNDALL))

"Domain"は、LDAPオブジェクトのプロパティではありません。むしろ、そのオブジェクトが格納されているデータベースの名前のようなものです。

つまり、そのデータベースで検索を行うためには、適切なデータベースに接続する必要があります(LDAP用語では、"bind to the domain/directory server")。

バインドに成功すれば、現在の形のクエリがすべて揃うことになります。

ところで、"ObjectCategory=Person""ObjectClass=user"ではなく"ObjectCategory=Person"にしたのは良い判断だったと思います。ADでは、前者は"indexed property"であり、優れたパフォーマンスを発揮しますが、後者はindexedではなく、若干遅くなります。

解説 (1)

検索はドメイン内で行う必要があります。

http://msdn.microsoft.com/en-us/library/ms677934(VS.85).aspxを参照してください。

つまり、基本的には、ドメイン内を検索するためには、そのドメインにバインドする必要があります。

解説 (0)

.NETをお使いの方は、DirectorySearcherクラスをお使いください。コンストラクタには、ドメインを文字列で渡すことができます。

// if you domain is domain.com...
string username = "user"
string domain = "LDAP://DC=domain,DC=com";
DirectorySearcher search = new DirectorySearcher(domain);
search.Filter = "(SAMAccountName=" + username + ")";
解説 (3)