Active Directory: LDAP Provider 連線字串格式

若要使用 ADSI 來存取 AD,LDAP 字串才是正統的方法,本文將簡單說明如何指定 LDAP 的字串。

若要使用 ADSI 來存取 AD,LDAP 字串才是正統的方法,不過 LDAP 字串向來複雜不易學習,但若能抓到要點,其實 LDAP 字串沒有這麼難。

首先,LDAP 字串是一種類似 DNS URL,是具有階層的連線字串格式,其標準的格式為:

LDAP://[hostname]:[port]/[distinguishedName]

其中,若是要連到特定的主機,則要指定 hostname 和 port,否則 ADSI 的 LDAP Provider 會連到 Distinguished Name (DN) 所指定的 Domain Controller (dc=xxx, dc=xxx 所指定的 Domain Controller 的 DNS 位址) 去查詢,在大多數的案例中,最好 DN 所指向的 Domain Controller 是 Global Catalog (GC),因為 GC 中內含了整個 AD 結構的資訊,在查詢上較方便,但若無法存取 GC,或是只要存取某一個 Domain 的資料,則需要指定具有該 Domain 結構的 Domain Controller。

那麼 Distinguished Name 的結構是:

cn=xxx, cn=xxx, ou=xxx, dc=xxx, dc=xxx, dc=xxx

例如若要連 acme.com.tw 中,命名為 MyDepartment 的 OU 中,名稱為 Mary 的 User 物件,則 DN 要這樣設:

LDAP://cn=Mary, ou=MyDepartment, dc=acme, dc=com, dc=tw

其代字所代表的意義為:

StringAttribute type
DCdomainComponent
CNcommonName
OUorganizationalUnitName
OorganizationName
STREETstreetAddress
LlocalityName
STstateOrProvinceName
CcountryName
UIDuserid

如果 DN 有一個部份寫錯,那就有可能會找不到物件,所以在撰寫 LDAP 字串時要小心,但它確實能夠很精確的指定物件的位置,因此適合 ADSI 存取 AD 物件時使用。