活動目錄編程指南 (含盤) 特色及評論
活動目錄是Windows 2000中的一個十分重要的概念,同時也是一個重要的組成部分。本書系統、全面地介紹了有關活動目錄的相關內容。��全書共分5部分,分別詳細介紹了活動目錄的基本概念、安全性、活動目錄結構和模式、配置命名上下文、域命名上下文、活動目錄服務接口(ADSI)、輕型目錄訪問協定(LDAP)以及編程參考。在附錄部分還列出了活動目錄支持的ADSI接口和微軟LDAP客戶庫提供的所有函式。��
本書適合具有一定C或C++編程基礎,並準備編寫活動目錄項目的程式開發人員。
活動目錄編程指南 (含盤) 本書目錄
第1部分 活動目錄基礎第1章 網路目錄介紹
1.1 什麼是目錄
1.1.1 簡單目錄
1.1.2 應用程式目錄
1.1.3 獨立網路目錄
1.1.4 NOS集成的目錄
1.1.5 全局目錄
1.2 1999年是目錄之年嗎
1.3 為什麼使用目錄
1.3.1 一次登錄
1.3.2 安全
1.3.3 設備識別和定位
1.3.4 位置無關
1.3.5 全局地址簿
1.3.6 簡化管理
1.3.7 可靠性
1.3.8 服務質量和DEN計畫
1.4 目錄――技術的挑戰
1.4.1 成功目錄的要求
1.4.2 解決方法
第2章 活動目錄介紹
2.1 活動目錄:Windows 2000中的目錄
2.1.1 基於標準的活動目錄
2.1.2 可擴縮性
2.1.3 安全性
2.1.4 集成與可集成性
2.1.5 可擴展的模式
2.1.6 向後兼容
2.2 與Windows 2000的集成
2.3 與微軟公司其他產品的集成
2.3.1 微軟公司的Exchange
2.3.2 零管理視窗和活動目錄
2.4 和其他目錄服務的集成
2.5 活動目錄與Windows NT 4域的比較
2.6 活動目錄與Novell目錄服務的比較
第3章 活動目錄組件
3.1 活動目錄的邏輯結構
3.1.1 活動目錄是一個對象集合
3.1.2 對象類
3.1.3 屬性和值
3.1.4 活動目錄模式
3.1.5 目錄信息樹
3.1.6 識別目錄對象
3.1.7 組織目錄樹
3.1.8 根域、域樹和森林
3.1.9 域名系統和活動目錄域
3.2 活動目錄的物理結構
3.2.1 域控制器
3.2.2 劃分和副本
3.2.3 全局類別
3.2.4 活動目錄複製
3.2.5 活動目錄站點
第4章 活動目錄安全
4.1 Windows 2000安全概述
4.1.1 Windows 2000安全特徵
4.1.2 Windows 2000安全系統的組成
4.1.3 預設訪問許可權
4.1.4 評估訪問許可權
4.2 Windows 2000安全與活動目錄
4.2.1 域控制器和本地安全授權
4.2.2 活動目錄域
4.2.3 域信任
4.2.4 訪問許可權繼承
4.2.5 預設訪問許可權
4.2.6 預設擁有者
4.2.7 屬性和屬性組訪問許可權
4.2.8 使用私有對象安全擴展Windows 2000安全
4.2.9 作為字元串的安全描述符
4.3 活動目錄安全編程
4.3.1 活動目錄安全屬性
4.3.2 活動目錄安全與LDAP
4.3.3 活動目錄安全與ADSI
第5章 活動目錄和DNS
5.1 DNS的起源和DNS基礎知識
5.2 DNS域
5.3 DNS區
5.4 主機名
5.5 名字伺服器
5.6 主次DNS眼務器
5.7 DNS記錄
5.8 名字解析
5.9 更新DNS
5.10 為什麼使用DNS
5.11 活動目錄和DNS
5.11.1 DNS如何定義活動目錄域結構
5.11.2 使用DNS定位域控制器
5.11.3 活動目錄:集成DNS伺服器
5.11.4 在活動目錄中找到DNS區信息及其存儲的位置
第2部分 活動目錄內容
第6章 活動目錄操作屬性
6.1 RootDSE
6.1.1 configurationNamingContext
6.1.2 currentTime
6.1.3 defaultNamlngContext
6.1.4 dnsHostName
6.1.5 dsServiceName
6.1.6 highestCommittedUSN
6.1.7 ldapServiceName
6.1.8 namingContexts
6.1.9 rootDomainNamingContext
6.1.10 schemaNamingContext
6.1.11 serverName
6.1.12 subschemaSubentry
6.1.13 supportedControl
6.1.14 supportedLDAPPolicies
6.1.15 supportedLDAPVersion
6.1.16 supportedSASLMechanisms
6.2 活動目錄對象的操作屬性
6.2.1 allowedAttributes
6.2.2 allowedAttributesEffective
6.2.3 allowedChildClasses
6.2.4 allowedChildClassesEffective
6.2.5 canonicalName
6.2.6 createTimeStamp
6.2.7 dITContentRules
6.2.8 extendedAttributeInfo
6.2.9 extendedClassInfo
6.2.10 modifyTimeStamp
6.2.11 objtctClasses
6.2.12 sDRightsEffective
第7章 活動目錄域結構
7.1 LDAP目錄層次
7.1.1 容器對象
7.1.2 葉子對象
7.1.3 層次式對象名
7.1.4 命名上下文
7.1.5 劃分和複製
7.2 Windows NT域
7.2.1 活動目錄域
7.2.2 域信任
7.3 DNS域
7.4 活動目錄樹和森林
7.5 根域
7.6 域控制器和副本
7.7 站點
第8章 配置命名上下文
8.1 配置命名上下文概覽
8.1.1 配置容器對象
8.1.2 DisplaySpecifiers
8.1.3 ExtendedRights
8.1.4 LostAndFoundConfig
8.1.5 劃分
8.1.6 模式
8.1.7 服務
8.1.8 站點
8.1.9 WellKnownSecurityPrincipals
第9章 活動目錄模式
9.1 活動目錄模式介紹
9.2 類定義
9.2.1 三種類定義
9.2.2 類標識
9.2.3 定義類的屬性
9.2.4 定義包含關係
9.2.5 活動目錄模式中的繼承
9.2.6 定義類安全
9.2.7 classSchema屬性
9.3 屬性定義
9.3.1 標識屬性
9.3.2 定義屬性類型
9.3.3 索引和全局類別
9.3.4 Linked屬性
9.3.5 其他管理屬性
9.4 屬性語法
9.4.1 未定義語法
9.4.2 DN語法
9.4.3 OID語法
9.4.4 caseExactString語法
9.4.5 CaseIgnoreString語法
9.4.6 IA5String語法
9.4.7 NumericString語法
9.4.8 ORName語法
9.4.9 Boolean語法
9.4.10 Integer語法
9.4.11 OctetString語法
9.4.12 GeneralizedTime語法
9.4.13 DirectoryString語法
9.4.14 PresentationAddress語法
9.4.15 DNWithString語法
9.4.16 NTSecurityDescriptor語法
9.4.17 INTEGER8語法
9.4.18 DNWithBinary語法
9.4.19 Sid語法
9.5 Aggregate對象
9.5.1 attributeTypes
9.5.2 objectClasses
9.5.3 dITContentRules
9.5.4 extentedAttributeInfo
9.5.5 extendedClassInfo
9.6 檢查模式
9.6.1 使用LDAP查找模式
9.6.2 使用ADSI查找模式
9.7 操作模式
9.7.1 找到模式FSMO管理器
9.7.2 確保模式可被修改
9.7.3 為模式擴展獲得OID
9.7.4 為什麼模式變化不可見
9.8 模式操作程式的示例
9.8.1 獲得模式FSMO
9.8.2 在模式中加入一個新類
9.8.3 為模式加入一新屬性
9.8.4 禁用模式中的一個類
9.8.5 禁用模式中的屬性
第10章 活動目錄域命名上下文
10.1 活動目錄域
10.2 Builtins容器
10.2.1 局部組
10.2.2 全局組
10.2.3 全體組
10.2.4 組對象中的屬性
10.3 Computers容器
10.3.1 從用戶類繼承來的Computer屬性
10.3.2 計算機對象的其他屬性
10.4 ForeignSecurityPrincipals容器
10.4.1 foreignSecurityPrinclpal對象
10.5 Infrastructure對象
10.6 LostAndFound容器
10.7 System容器
10.7.1 trustedDomain對象
10.7.2 RIDManager$對象
10.7.3 CN=System,CN=Policies容器及組策略對象
10.8 Users容器
10.8.1 用戶標識屬性
10.8.2 安全屬性
10.8.3 登錄屬性
10.8.4 系統服務屬性
10.9 域控制器容器
10.9.1 dNSHostName
10.9.2 operatingSystem
10.9.3 operatingSystemHotfix
10.9.4 operatingSystemServicePack
10.9.5 operatingSystemVersion
10.9.6 rIDSetReferences
10.9.7 serverReferenceBL
10.9.8 servicePrincipalName
第3部分 活動目錄服務接口
第11章 ADSI基礎
11.1 活動目錄眼務接口介紹
11.1.1 多客戶端平台
11.1.2 多目錄提供者
11.2 ADSI或LDAP
11.2.1 平台
11.2.2 語言
11.2.3 目錄之間的移植性
11.2.4 其他考慮
11.3 組件對象模型(COM)基礎
11.3.1 為什麼不詳細介紹COM
11.3.2 什麼是COM
11.3.3 為什麼選擇COM
11.3.4 關鍵思想是什麼
11.3.5 COM組成部分
11.4 ADSI初步
11.4.1 設定機器
11.4.2 ADSI程式――“Hello World”
11.5 特殊的COM數據類
11.5.1 關於_bstr_t和_variant_t異常的註解
11.5.2 _bstr_t類
11.5.3 _variant_t類
11.5.4 _corn_error類
11.6 綁定至活動目錄的對象
11.6.1 ADsPaths
11.6.2 ADSI的無伺服器綁定
11.6.3 使用GUID綁定目錄對象
11.6.4 綁定目錄對象的機制
11.6.5 ADSI的快速綁定
11.6.6 使用輔助函式ADsGetObject()進行綁定
11.6.7 使用輔助函式ADsOpenObject()進行綁定
11.6.8 使用IADsOpenDSObject:OpenDSObject()函式綁定
第12章 活動目錄的基本ADSI接口
12.1 ADSI的目錄對象接口
12.1.1 IADs接口
12.1.2 IADsPropertyList接口
12.1.3 IADsPropertyEntry接口
12.1.4 IADsPropertyValue接口
12.1.5 IADsPropertyValue2接口
12.1.6 IDirectoryObject接口
12.1.7 IADsContainer接口
12.1.8 IADsDeleteOps接口
第13章 使用ADSI搜尋活動目錄
13.1 使用ADSI搜尋介紹
13.1.1 指定搜尋基點
13.1.2 搜尋過濾器
13.1.3 指定所返回的屬性
13.1.4 作為行的對象
13.1.5 作為列的屬性
13.2 IDirectorySearch接口
13.2.1 使用IDirectorySearch接口開始和終止搜尋
13.2.2 使用IDirectorySearch::CloseSearchHandle()終止搜尋
13.2.3 使用IDirectorySearch::GetNextRow()獲取對象
13.2.4 使用IDirectorySearch:GetNextCol()函式和IDirectorySearch::GetColumn()函式獲取屬性
13.2.5 使用IDirectorySearch的簡單搜尋
13.3 使用搜尋選項擴展搜尋
13.3.1 使用IDirectorySearch進行同步和異步搜尋
13.3.2 使用IDirectorySearch進行分頁搜尋
13.3.3 使用IDirectorySearch接口排序搜尋結果
13.3.4 使用IDirectorySearch接口允許和禁止結果高速快取
13.3.5 使用IDirectorySearch接口設定搜尋限制
第14章 使用ADSI訪問用戶、組和組織
14.1 使用ADSI訪問用戶對象
14.1.1 IADsUser接口
14.1.2 使用IADsUser接口獲得用戶名
14.1.3 使用IADsUser接口加鎖用戶賬號
14.1.4 使用IADsUser接口設定用戶口令
14.2 使用ADSI訪問組
14.2.1 IADsGroup接口
14.2.2 IADsMembers接口
14.3 使用ADSI訪問組織、地區以及組織單元
14.3.1 IADsO、IADsOU和IADsLocality接口
14.3.2 獲取組織的描述
14.3.3 枚舉O或OU的內容
第15章 使用ADSI訪問活動目錄模式
15.1 兩種模式
15.1.1 應該使用哪種模式
15.2 使用通用對象接口訪問模式
15.2.1 使用通用對象接口枚舉模式中的類
15.2.2 綁定模式管理器
15.2.3 使用通用對象接口添加新屬性
15.2.4 使用通用對象接口添加新類
15.3 使用抽象模式接口訪問模式
15.3.1 綁定至抽象模式
15.3.2 使用抽象模式容器接口
15.3.3 使用IADsClass訪問模式類對象
15.3.4 使用IADsProperty接口訪問模式屬性對象
15.3.5 使用IADsSchema接口訪問模式語法對象
第16章 其他活動目錄API函式
16.1 連線活動目錄服務
16.2 轉換目錄眼務名
16.3 發現站點、伺服器以及域
16.3.1 尋找域控制器
16.3.2 列舉活動目錄中的站點
16.3.3 列舉站點中的伺服器
第4部分 輕型目錄訪問協定
第17章 LDAP基礎
17.1 LDAP歷史
17.1.1 LDAP版本1
17.1.2 LDAP版本2
17.1.3 LDAP版本3
17.2 安裝LDAP組件
17.3 LDAP編程組件
17.3.1 WINLDAP.H
17.3.2 WLDAP32.LIB
17.3.3 wldap32.dll
17.4 為LDAP編程設定Visual Studio
17.4.1 方法一:修改項目設定
17.4.2 方法二:修改Visual C++目錄選項
17.4.3 方法三:修改系統環境變數
17.5 LDAP編程模型
17.5.1 初始化客戶端庫
17.5.2 連線活動目錄伺服器
17.5.3 傳送LDAP請求
17.5.4 處理LDAP結果
17.5.5 關閉連線
17.6 關於活動目錄的LDAP編程的常用註解
17.6.1 創建LDAP連線
17.6.2 錯誤處理
17.6.3 ANSI和Unicode字元集
17.6.4 對象標識符(OIDs)
17.6.5 同步和異步(多執行緒)函式
17.7 一個簡單的LDAP程式
第18章 使用LDAP連線活動目錄
18.1 關於使用LDAP庫的注釋
18.2 定位域控制器
18.3 初始化LDAP客戶端庫
18.3.1 ldap_init()函式
18.3.2 關於連線埠號的註解
18.3.3 ldap_sslinit()函式
18.4 連線至域控制器
18.4.1 ldap_connect()函式
18.4.2 ldap_open()函式
18.4.3 使用cldap_open()函式進行UDP連線
18.5 斷開與活動目錄域控制器之間的連線
第19章 使用LDAP進行認證
19.1 認證證書
19.2 多綁定
19.3 匿名連線
19.4 LDAP綁定函式
19.5 使用ldap_simple_bind―s()進行簡單LDAP綁定
19.6 使用SASL認證活動目錄
19.7 使用ldap_bind_s()函式認證活動目錄
第20章 使用LDAP搜尋活動目錄
20.1 指定LDAP搜尋
20.1.1 搜尋基點
20.1.2 搜尋深度
20.1.3 搜尋條件
20.1.4 請求屬性
20.2 使用ldap_Search_s()函式進行簡單搜尋
20.3 處理搜尋結果
20.3.1 疊代所返回的項
20.3.2 獲得所返回項的可區別名字
20.3.3 獲取所返回屬性
20.3.4 處理屬性值
20.3.5 處理二進制屬性值
20.4 使用逾時值進行搜尋
第21章 使用LDAP進行高級搜尋
21.1 複雜的搜尋條件
21.1.1 LDAP如何處理搜尋過濾器
21.1.2 完整的LDAP搜尋過濾器語法
21.1.3 搜尋位欄位屬性
21.1.4 檢查LDAP搜尋過濾器的有效性
21.2 異步LDAP搜尋
21.2.1 啟動一個異步搜尋
21.2.2 處理異步搜尋結果
21.2.3 放棄異步搜尋
21.3 屬性請求
21.3.1 請求所有的屬性
21.3.2 請求特定的屬性
21.3.3 請求可操作屬性
21.3.4 請求所有屬性和可操作屬性
21.3.5 不請求屬性
21.4 有時間限制的LDAP搜尋
21.4.1 為一次搜尋設定伺服器時間限制
21.4.2 為一次搜尋設定客戶時間限制
21.4.3 改變伺服器搜尋時間限制
21.5 限制項的LDAP搜尋
21.5.1 為什麼項限制不能正常工作
21.5.2 設定搜尋項限制
第22章 擴展LDAP搜尋
22.1 使用LDAP控制擴展LDAP搜尋
22.1.1 客戶方和伺服器方控制
22.1.2 LDAPControl結構
22.1.3 擴展後的LDAP函式
22.1.4 活動目錄搜尋控制簡介
22.1.5 獲取目錄改變通知信息
22.1.6 搜尋已刪除對象
22.1.7 為目錄對象檢索安全描述符
22.1.8 檢索擴展名字信息
22.2 獲取搜尋結果――一次一頁
22.2.1 執行分頁搜尋的兩個方法
22.2.2 建立分頁搜尋
22.2.3 檢索多頁項
22.2.4 放棄一個分頁搜尋
22.3 以已排序的方式獲取搜尋結果
22.3.1 排序的限制
22.3.2 排序搜尋函式
22.4 將分頁搜尋和排序搜尋結合在一起使用
第23章 處理LDAP引用
23.1 兩種引用
23.2 引用是何是產生的
23.3 處理引用的兩種策略
23.3.1 配置LDAP客戶使之追蹤引用
23.3.2 從搜尋結果追蹤引用
23.4 引用的高速快取連線
第24章 使用LDAP修改活動目錄對象
24.1 修改對象之前你應當注意的一些事項
24.1.1 多個修改操作
24.1.2 多值屬性
24.1.3 修改操作
24.1.4 不存在空屬性
24.1.5 模式規則
24.1.6 訪問許可權
24.1.7 使用LDAP修改對象所需的數據結構
24.1.8 選擇一個合適的API函式
24.2 使用LDAP修改對象時所需的API數據結構
24.2.1 berval結構
24.2.2 ldapmod結構
24.3 修改一個已存在的屬性
24.4 向一個已存在的對象添加一個新屬性
24.5 使用berval結構添加一個新屬性
24.6 刪除一個已存在的屬性
24.7 向一個已存在的屬性添加附加的值
24.8 從一個多值屬性中刪除一個值
24.9 使用惰性提交控制執行大量的目錄更新
24.10 異步修改目錄
24.10.1 從一個異步修改操作中檢索結果
24.10.2 將異步搜尋和異步修改結合在一起使用
24.11 移動和重命名活動目錄對象
24.11.1 使用LDAP重命名活動目錄對象
24.11.2 異步地重命名活動目錄對象
第25章 使用LDAP添加活動目錄對象
25.1 添加對象之前你應當注意的一些事項
25.1.1 添加對象在很大程度上類似於修改對象
25.1.2 一次添加多個屬性
25.1.3 多值屬性
25.1.4 父容器的存在性
25.1.5 模式規則
25.2 使用LDAP添加對象所需的API數據結構
25.2.1 berval結構
25.2.2 ldapmod結構
25.3 選擇合適的API函式
25.4 通過使用ldap_add_s()同步地添加對象
25.5 通過使用ldap_add()異步地添加對象
25.5.1 檢索異步添加操作的結果
25.6 使用惰性提交控制執行大量的對象添加操作
25.7 使用ldap_add_ext_s()向目錄中添加對象
第26章 使用LDAP刪除活動目錄對象
26.1 刪除對象之前你應當注意的一些事項
26.1.1 訪問許可權
26.1.2 在刪除容器之前必須確保容器是空的
26.2 選擇適當的API函式
26.3 使用ldap_delete_s()同步地刪除對象
26.4 使用ldap_delete_ext_s()刪除一個容器和它的下級對象
26.5 使用ldap_delete()異步地刪除對象
26.5.1 檢索異步刪除操作的結果
26.6 使用LDAP控制和ldap_delete_ext()異步地刪除對象
第27章 使用LDAP比較活動目錄對象
27.1 比較對象之前你應當注意的一些事項
27.1.1 比較和搜尋之間的區別
27.1.2 網路流量
27.1.3 不存在的屬性語義
27.1.4 匹配規則
27.1.5 訪問許可權
27.1.6 比較二進制值
27.1.7 測試多值屬性
27.2 使用ldap_compare_s()測試屬性斷言
27.3 使用ldap_compare_ext_s()測試屬性斷言
27.4 使用ldap_compare()測試屬性斷言
27.4.1 檢索異步比較操作的結果
27.5 使用ldap_compare_ext()測試屬性斷言
第28章 使用選項和控制擴展LDAP
28.1 LDAP選項
28.1.1 讀入選項
28.1.2 設定選項
28.2 關閉選項和打開選項
28.3 “標準的”LDAP選項
28.3.1 LDAP_OPT_DESC
28.3.2 LDAP_OPT_DEREF
28.3.3 LDAP_OPT_SIZELIMIT
28.3.4 LDAP_OPT_TIMELIMIT
28.3.5 LDAP_OPT_REFERRALS
28.3.6 LDAP_OPT_RESTART
28.3.7 LDAP―OPT―PROTOCOL_VERSION和LDAP_OPT―VERSION
28.3.8 LDAP_OPT_HOST_NAME
28.3.9 LDAP_OPT_ERROR_NUMBER
28.3.10 LDAPOPT_ERROR_STRING
28.4 微軟特有的LDAP選項
28.4.1 LDAP_OPT_SSL
28.4.2 LDAP_OPT_REFERRAL_HOP_LIMIT
28.4.3 LDAP_OPT_PING―KEEP―ALIVE,LDAP_OPT_PING_WAIT_TIME和LDAP_OPT_PING_LIMIT
28.4.4 LDAP_OPT_DNSDOMAIN_NAME
28.4.5 LDAP_OPT_GETDSNAME_FLAGS
28.4.6 LDAP_OPT_PROMPT_CREDENTIALS
28.4.7 LDAP_OPT_AUTO_RECONNECT
28.4.8 LDAP_OPT_SSPI_FLAGS
28.5 LDAP控制
28.5.1 分頁搜尋
28.5.2 排序搜尋
28 5.3 獲取安全描述符
28.5.4 改變通知(一致化搜尋)
28.5.5 顯示已刪除對象
28.5.6 惰性提交
28.5.7 DirSync控制
28.5.8 返回擴展後的DN
28.5.9 樹刪除
28.5.10 交叉域移動
28.5.11 驗證伺服器名字
28.5.12 在局部作用域下搜尋
28.5.13 許可的修改
第29章 LDAP錯誤處理函式
29.1 處理LDAP錯誤
29.1.1 LDAP錯誤碼
29.1.2 獲取LDAP錯誤的字元串描述
29.1.3 將LDAP錯誤轉換為Win32錯誤
第5部分 附錄
附錄A 活動目錄ADSI接口
附錄B Microsoft Windows 2000 LDAP函式