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ではなく、若干遅くなります。
.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 + ")";