I've written various pieces of code that connect to LDAP servers and run queries, but it's always been voodoo to me. One thing I don't really understand is the concept of a bind DN. Here's an example using the ldapsearch
command-line tool available from openldap. (Ignore the lack of authentication.)
ldapsearch -h 1.2.3.4 -D dc=example,dc=com [query]
What is the purpose and function of the -D dc=example,dc=com
part of this? Why do we need to bind to a particular location in the directory hierarchy? Is it to establish which part of the directory my queries should apply to? E.g. if the root node of the directory is dc=com
, and it has two children (dc=foo
and dc=bar
), maybe I want my queries to be against the dc=foo,dc=com
subtree and not the dc=bar,dc=com
subtree?