Làm việc với Active Directory - Lập trình Active Directory - Phần 1
Để phát triển chương trình trong Active Directory ta dùng các lớp trong
namespace System.DirectoryServices và phải tham chiếu assembly
System.DirectoryServices .với các lớp này ta có thể truy vấn các đối tượng
,xem và cập nhật các thuộc tính, tìm các đối tượng và di chuyển các đối
tượng đến một chổ chứa đối tượng khác.
ta sẽ học các phần sau :
-Các lớp trong namespace System.DirectoryServices
-Tiến trình kết nối đến Active Directory -
Làm việc với Active Directory Lập trình Active Directory – Phần 1 Để phát triển chương trình trong Active Directory ta dùng các lớp trong namespace System.DirectoryServices và phải tham chiếu assembly System.DirectoryServices .với các lớp này ta có thể truy vấn các đối tượng ,xem và cập nhật các thuộc tính, tìm các đối tượng và di chuyển các đối tượng đến một chổ chứa đối tượng khác. ta sẽ học các phần sau : - Các lớp trong namespace System.DirectoryServices - Tiến trình kết nối đến Active Directory - - Lấy các mục trong thư mục, tạo đối tượng mới và cập nhật các mục tồn tại - Tìm kiếm trong Active Directory Các lớp trong System.DirectoryServices - DirectoryEntry : lớp này là lớp chính trong namespace System.DirectoryServices .1 đối tượng của lớp này trình bày 1 đối tượng trong Active Directory lưu trữ.ta dùng lớp này để liên kết đến 1 đối tượng,và để xem và cập nhật thuộc tính. các thuộc tính của đối tượng được trình bày trong PropertyCollection. mỗi mục trong PropertyCollection có 1 PropertyValueCollection - DirectoryEntries : DirectoryEntries là 1 tập hợp các đối tượng DirectoryEntry.thuộc tính Children của đối tượng DirectoryEntry trả về 1 danh sách các đối tượng trong tập DirectoryEntries DirectorySearcher : lớp này là lớp chính dùng trong việc tìm kếm các đối tượng với thuộc tính đặc trưng. lớp SortOption và kiểu liệt kê SearchScope,SortDirection và ReferalChasingOption có thể được dùng để định nghĩa việc tìm kiếm.kết quả tìm kiếm trong 1 SearchResult hoặc SearchResultCollection. ta cũng có các đối tượng ResultPropertyCollection và ResultPropertyValueCollection. Binding ( sự liên kết ) Để lấy giá trị của 1 đối tượng trong Active Directory , ta phải kết nối đến Active Directory. tiến trình kết nối gọi là binding.đưòng dẫn của binding có thể là : LDAP://dc01.globalknowledge.net/OU=Marketing, DC=GlobalKnowledge, DC=Com với tiến trình biding ta có thể đặc tả các mục sau: - Protocol đặc tả provider được dùng - Server Name ( tên server ) của domain controller - Port number ( số cổng) của tiến trình server - Distinguished Name ( tên phân biệt ) của đối tượng,để xác định đối tượng ta muốn truy xuất - Username và Password nếu người dùng nếu một tài khoản khác với tài khoản đang chạy cần truy xuất Active Directory - Kiểu Authentication có thể được đặc tả nếu cần mã hoá Chi tiết các tuỳ chọn này là : Protocol ( giao thức) Phần đầu tiên đặc tả provider ADSI.provider thực thi như là 1 COM server , việc định danh 1 progID có thể được tìm trong Registry trong HKEY_CLASSES_ROT . các provider trong Window 2000 là: LDAP : LDAP server, như là thư mục Exchange và Window 2000 Active Directory server GC: GC được dùng để truy xuất global catalog trong Active Directory.nó được dùng cho các truy vấn nhanh IIS: với provider ADSI cho IIS ta có thể tạo các website mới và quản trị nó trong IIS catalog WinNT : để truy xuất cơ sở dữ liệu người dùng trong các domain Window NT 4 cũ ta có thể dùng provider ADSI trong WinNT .cũng có thể dùng giao thức này để kết nối với domain Window 2000 nhưng ta cũng bị giới hạn đối với các thuộc tính mà có giá trị với NT4 NDS : ProID này được dùng để giao tiếp với các dịch vụ Novell Directory NWCOMPAT : với NWCOMPAT ta có thể truy xuất các thư mục Novell cũ như là Novell Netware 3.x Server Name Server name là tuỳ chọn nếu ta đăng nhập vào 1 domain Active Directory . không có server name Window 2000 sẽ tìm domain controller 'tốt nhất ' trong domain mà kết hợp với người dùng để kết nối , nếu không có server trong site , domain controller đầu tiên tìm thấy sẽ được dùng . ví dụ 1 binding không có server :LDAP://OU=Sales, DC=GlobalKnowledge, DC=Com. Port number ( số cổng ) Sau server name là port number . cú pháp là : xxx. số cổng mặc định cho server LDAP là cổng 389: LDAP://dc01.globalknowledge.net:389. server Exchange dùng cùng số port như server LDAP . nếu server Exchange được cài đặt trên cùng hệ thống - ví dụ như 1 domain controller của Active Directory - có thể cấu hình số cổng khác . Distinguished name (tên phân biệt, DN ) Phần thứ tư ta có thể đặc tả trong đường dẫn là tên phân biệt ( DN).DN là 1 tên duy nhất được bảo đảm để xác định đối tượng ta muốn truy xuất. với Active Directory ta có thể dùng cú pháp LDAP mà dựa trên X.500 để đặc tả tên của đối tượng. ví dụ ta có DN này : CN=Christian Nagel, OU=Trainer, DC=GlobalKnowledge, DC=com DN này đặc tả tên chung của Christian Nagel trong Organization Unit (OU) gọi Trainer trong Domain Component ( DC ) gọi GlobalKnowledge của Domain globalKnowledge.com .phần được đặc tả bên phải nhất là đối tượng gốc của domain. tên phải theo cấu trúc trong cây đối tượng. Relative Distinguished Name ( RDN) 1 RDN được dùng để tham chiếu các đối tượng trong đối tượng chứa ( contrainer object). với 1 RDN việc đặc tả OU và DC không cần thiết,chỉ cần tên chung là đủ. CN=Chritian Nagel là 1 RDN bên trong OU .1 RDN có thể được dùng nếu ta có 1 tham chiếu đến 1 đối tượng chứa và ta muốn truy xuất vào các đối tượng con Default Naming context ( ngữ cảnh tên mặc định ) Nếu tên phân biệt không có trong đường dẫn, tiến trình binding sẽ được tạo với tên ngữ cảnh mặc định. ta có thể đọc ngữ cảnh tên mặc định với sự trợ giúp của rootDSE.LDAP 3.0 9 định nghĩa rootDSE như là gốc của cây thư mục trên 1 thư mục server . ví dụ : LDAP://rootDSE hay LDAP://servername/rootDSE Bằng cách liệt kê tất cả các thuộc tính của rootDSE ta có thể lấy thông tin defaultNamingContext mà được dùng khi không có tên nào được chỉ định.schemaNamingContext và configurationNamingContext đặc tả các tên được dùng để truy xuất Schema và cấu hình trong nơi lưu trữ Active Directory Đoạn mã sau dùng để lấy tất cả các thuộc tính trong rootDSE : using (DirectoryEntry de = new DirectoryEntry()) { de.Path = "LDAP://celticrain/rootDSE"; de.Username = @"sentinel\chris"; de.Password = "someSecret"; PropertyCollection props = de.Properties; foreach (string prop in props.PropertyNames) { PropertyValueCollection values = props[prop]; foreach (string val in values) { Console.Write(prop + ": "); Console.WriteLine(val); } } } Bên cạnh việc xuất các thuộc tính , chương trình này chỉ ra defaultNamingContext DC=eichkogelstrasse, DC=local ngữ cảnh mà có thể được dùng để truy xuất schema:CN=Schema, CN=Configuration, DC=eichkogelstrasse, DC=local và tên ngữ cảnh của cấu hình : CN=Configuration, DC=eichkogelstrasse, DC=local: Định danh đối tượng Mỗi đối tượng có 1 danh tính duy nhất, 1 GUID . 1 GUID là 1 số 128-bit độc nhất. Ta có thể liên kết đến 1 đối tượng dùng GUID.bằng cách này ta luôn lấy cùng 1 đối tượng, không quan tâm đối tượng được di chuyển đến nơi chứa nào khác.GUID được tạo ra vào lúc đối tượng được tạo và luôn kèm theo đối tượng. Ta có thể lấy chuỗi GUID với DirectoryEntry.NativeGuid. chuỗi đại diện này sau đó có thể được dùng để liên kết đối tượng. Ví dụ dùng GUID : tên đường dẫn trong 1 kết nối không server để liên kết đến một đối tượng cụ thể được đại diện bởi 1 GUID: LDAP:// Các tên đối tượng trong các domain WindowNT Provider WINNT không cho phép cú pháp LDAP trong phần tên của chuỗi liên kết.với provider đối tượng được đặc tả dùng ObjectName ,ClassName. chuỗi liên kết có giá trị trong 1 domain Window NT là : WinNT: WinNT://DomainName WinNT://DomainName/UserName, user WinNT://DomainName/ServerName/MyGroup, group Các hậu tố user và group đặc tả rằng ta truy xuất vào các đối tượng kiểu user và group
File đính kèm:
- Active_Directory_1.pdf