跳至內容

ActiveDirectoryServiceInterface

出自Taiwan Tongues 台語維基
這是此頁批准,以及是最近的修訂。

Active Directory Service Interface( ADSI ) 是一組植基於 COM 技術上的應用程式開發介面,程式開發人員會當利用遮的介面來連接共存取 Active Directory,閣執行查詢,閣較新或者是管理功能,ADSI 同時會當支援 LDAP(輕量級 kha-tá-lok-guh 存取協定)為主的 kha-tá-lok-guh 服務(比如講 Novell Directory Service), 以及以及 Windows NT 網域為主所組成的 WinNT 網域 kha-tá-lok-guh。

介面結構

ADSI 由 COM 以及原生函式庫所組成,並封裝佇咧 activeds . dll 檔案中,部份則予人封裝佇 advaip 三十二 . dll 中,以 COM 原生介面的方式表現,以提供予 C / C + + 程式語言透過 COM 介面來取用,毋過因為所有的原生介面攏支援 COM Automation,所以 Visual Basic 抑是講 . NET Framework 語言嘛會當用 COM Interop 能力存取 ADSI 中的介面。

原生介面 ( Native interfaces )

activeds . dll 中封裝幾个 ADSI 上核心的介面:

  • IADs:作為所有 Active Directory 物件上頂層的介面,擁有上基礎的功能,
  • IADsContainer:做為所有可收納 Active Directory 物件的收納器 ( Container ) 上頂層的介面,有收納器的基礎功能。
  • IADsOpenDSObject:連接 Active Directory 之用(伊干焦 OpenDSObject ( ) 一个方法), 同時伊會緊取住用來連接的安全資訊內容。
  • IADsNamespace:由 kha-tá-lok-guh 服務提供者 ( directory service provider ) 提供,用來識別 kha-tá-lok-guh 結構的號名空間之用。

activeds . dll 亦提供幾个依東西無仝款實作的介面,像講:

  • IADsComputer:提供 kha-tá-lok-guh 服務中的電腦 ( computer ) 東西。
  • IADsDomain:提供 kha-tá-lok-guh 服務中的網域 ( domain ) 東西。
  • IADsUser:提供 kha-tá-lok-guh 服務的使用者 ( user ) 東西。
  • IADsGroup:提供 kha-tá-lok-guh 服務的使用者群組 ( group ) 東西。
  • IADsOU:提供 kha-tá-lok-guh 服務的組織單元 ( organization unit ) 東西。
  • IADsCollection:提供 kha-tá-lok-guh 服務物件集合。

咧使用 ADSI 之時,有當時仔需要一寡工具型的功能,像講 DOMAIN \ user 和 User Principal Name 中央的轉換,抑是取得系統資訊等等,ADSI 嘛提供這類的介面:

  • IADsNameTranslate:佇咧 kha-tá-lok-guh 服務中佇咧無仝款的名稱間轉換。
  • IADsWinNTSystemInfo:佇咧 kha-tá-lok-guh 服務內底取得 Windows NT Directory Service 系統資訊。
  • IADsADSystemInfo:佇咧 kha-tá-lok-guh 服務內底取得 LDAP Directory Service 系統資訊。
  • IADsPathname:分析 X . 五百名講和路徑。

咱遮的介面多攏是使用 C / C + + 程式語言來存取,如果使用 VB 抑是講 Scripting Language 時,則會當使用另外的方法來存取。

函式

ADSI 除了介面以外,嘛將部份功能用函式方式顯露,以簡化呼叫原生介面需要處理工課,較重要而且定定予人使用的有:

  • ADsOpenDSObject ( ),封裝取得 IADs 抑是 IADsContainer 這个物件的工課。
  • ADsGetObject ( ),封裝利用已經開啟的 Active Directory Session 取得物件的工作。
  • ADsGetLastError ( ),取得佇 ADSI 作業中,最後一个引發的錯誤。
  • AllocADsMem ( ),FreeADsMem ( ),AllocADsStr ( ),FreeADsStr ( ),組態佮釋放 ADSI 使用的資源。
  • ADsBuildEnumerator ( ),ADsEnumerateNext ( ),ADsFreeEnumerator ( ):處理 ADSI 物件的列舉工作。

伊下列的例,是使用 ADsOpenDSObject ( ) 取得 IADs 物件的範例程式碼:

. NET Framework 原生介面

佇咧 . NET Framework 中,另外提供一个 . NET 專用的 ADSI 介面程式庫 System . DirectoryService . dll,程式開發人員會當加入這寡程式的參考來取得 ADSI 的功能,佇這个原生類別庫內底,封裝兩个類別,做一个存取 Active Directory 的入口之用。

  • DirectoryEntry:這類別封裝了 IADs 以及 IADsContainer 等原生介面,用來儉取 Active Directory 的物件資料,以及 Schema 封裝的資訊等等。
  • DirectorySearcher:這類別封裝了 IDirectorySearch 介面,做為搜揣 Active Directory 的主要工具,並使用 SearchResult 物件封裝搜揣結果,予 . NET 開發人員會當簡單來處理搜揣結果的工課。

截至 . NET Framework 三-c五為止,ADSI 佇咧 Managed Class Library 中間有四个號名空間:

  • System . DirectoryServices:原生的 ADSI Managed 介面,封裝 DirectoryEntry 和 DirectorySearcher 佮工具類別。
  • System . DirectoryServices . AccountManagement:封裝嘿 IADsUser , IADsComputer , IADsGroup 等介面,簡化處理物件的工具。
  • System . DirectoryServices . ActiveDirectory:封裝嘿 Active Directory 結構物件的工具。
  • System . DirectoryServices . Protocol:封裝嘿 LDAP 協定佮 kha-tá-lok-guh 服務通訊的工具佮基礎類別。

下列為使用 C # 存取 DirectoryEntry 的範例程式碼:

kha-tá-lok-guh 服務提供者 ( directory service provider )

ADSI 因為是使用了 LDAP 以及開放式 kha-tá-lok-guh 等標準,因此只要 kha-tá-lok-guh 服務的平台是以開放式 kha-tá-lok-guh 標準實作 IADsNamespace 佮其他 kha-tá-lok-guh 服務提供者的時陣,即可由 ADSI 來支援,目前 ADSI 有五種提供者:

  • ADSI LDAP Provider:Active Directory 官方主要的支援介面,連接字串使用 LDAP : / / 為主。
  • ADSI WinNT Provider:以 Windows NT 為主的支援介面,連接字串使用 WinNT : / / 為主。
  • ADSI NDS Provider:支援 Novell Directory Service,連接字串使用 NDS : / / 為主。
  • ADSI NWCOMPAT Provider:支援 Novell Netware 三 . x 的網路服務,連接字串使用 NWCOMPAT : / / 為主。
  • ADSI IIS Provider:支援 IIS 內部的提供者,連接字串以 IIS : / / 為主,用佇存取 IIS Metabase。

OLE DB Provider for Directory Services

除了 ADSI 原生介面外,軟勢嘛為著 SQL Server 抑是講 ADO 應用程式開發人員發展矣會當使用 ADO 來儉取 Active Directory 的驅動程式,此驅動程式使用 OLE DB 來開發,並且使用類似 SQL 指令的方式來存取 Active Directory,此驅動的程式號做 OLE DB Provider for Directory Service,其實 COM 的 Prog ID 為ADsDSOObject

下例為使用 ADO 存取 Active Directory 的範例程式碼:

下列指令為使用 SQL Server 查詢來合併存取 Active Directory 的指令碼:

開發 Directory-Enabled 應用程式的時陣會當用的工具

因為 ADSI 和 Active Directory 的特性,開發人員若無用適當的工具的時陣,真歹發展佮 kha-tá-lok-guh 服務連結 ( directory-enabled ) 的應用程式,就按呢微軟仔為 Active Directory 提供著兩種工具:

  • Active Directory Explorer:由 Sysinternals 團隊所開發,伊這馬敆入去 Microsoft TechNet 團隊內底,會當用來瀏覽 AD 網路抑是樹系的 LDAP 階層字串,以及物件的資料。
  • ADSIEdit:佇咧 Windows 兩千和 Windows Server 二千空三時,由 Resource Kit Support Tools 安裝包提供,到位矣 Windows Server 兩千空八時,則內起佇咧系統內底。

參考資料

內容參考:

文章參考:

一 . MSDN Library : Active Directory Service Interface 二 . Directory Service in . NET Framework