Danh mục

Làm việc với Active Directory - Tìm kiếm các đối tượng người dùng

Số trang: 12      Loại file: pdf      Dung lượng: 106.96 KB      Lượt xem: 14      Lượt tải: 0    
Thư viện của tui

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Trong phần này ta sẽ xây dựng 1 Windows Form gọi là UserSearch.trong ứng dụng ta có thể nhập domain controller, uesrname ,password để truy nhập Active Directory. ta sẽ truy nhập vào schema của Active Directory để lấy các thuộc tính của đối tượng user. người dùng có thể nhập chuỗi tìm các đối tưọng user trong domain. ngoài ra ta cũng có thể thiết lập các thuộc tính của đối tượng user nên được trình bày. Giao diện người dùng Các bước sử dụng : 1. Nhập Username ,PasswordmDomain controller. tất cả đều tuỳ chọn . ...
Nội dung trích xuất từ tài liệu:
Làm việc với Active Directory - Tìm kiếm các đối tượng người dùng Làm việc với Active DirectoryTìm kiếm các đối tượng người dùngTrong phần này ta sẽ xây dựng 1 Windows Form gọi là UserSearch.trongứng dụng ta có thể nhập domain controller, uesrname ,password để truynhập Active Directory. ta sẽ truy nhập vào schema của Active Directory đểlấy các thuộc tính của đối tượng user. người dùng có thể nhập chuỗi tìm cácđối tưọng user trong domain. ngoài ra ta cũng có thể thiết lập các thuộc tínhcủa đối tượng user nên được trình bày.Giao diện người dùngCác bước sử dụng : 1. Nhập Username ,PasswordmDomain controller. tất cả đều tuỳ chọn .nếu không nhập domain controller thì kết nối làm việc với liên kết khôngserver ( serverless binding).nếu không nhập username thì ngữ cảnh củangười dùng hiện tại được lấy. 2. 1 nút nhấn cho phép tất cả các tên thuộc tính của đối tượng user đượctải vào trong listbox listboxProperties 3. Sau khi tên thuộc tính được tải ta có thể lựa chọn các thuộc tính .selectioinmode của listbox được đặt là MultiSimple. 4. Nhập vào filter để giới hạn tìm kiếm. giá trị mặc định là(objectClass=user) 5. Bắt đầu tìm kiếmNgữ cảnh tên Schema ( Schema Naming Context)Chương trình có 2 phương thức xử lý : đầu tiên là nút nhấn để tải các thuộctính, thứ 2 là nút bắt đầu tìm kiếm trong domain.phần đầu ta đọc các thuộctính trong schema để trình bày nó.Trong phương thức buttonLoActive DirectoryProperties_Click(),SetLogonInformation() đọc username,password và hostname từ hộp thoạivà lưu chúng trong các biến thành viên của lớp.sau đó phương thứcSetNamingContext() đặt tên LDAP của Schema và tên LDAP của ngữ cảnhmặc định .tên Schema LDAP này được dùng để đặt các thuộc tính tronglistbox : SetUserProperties():private void buttonLoadProperties_Click(object sender, System.EventArgse){ try { SetLogonInformation(); SetNamingContext(); SetUserProperties(schemaNamingContext); } catch (Exception ex) { MessageBox.Show(Check your inputs! + ex.Message); }}protected void SetLogonInformation(){ username = (textBoxUsername.Text == ? null :textBoxUsername.Text); password = (textBoxPassword.Text == ? null : textBoxPassword.Text); hostname = textBoxHostname.Text; if (hostname != ) hostname += /;}Hổ trợ cho phương thức SetNamingContext(), ta dùng gốc của cây thư mụcđể lấy các thuộc tính của server, ta chỉ quan tâm đến giá trị 2 thuộc tính :schemaNamingContext và defaultNamingContext :protected string SetNamingContext(){ using (DirectoryEntry de = new DirectoryEntry()) { string path = LDAP:// + hostname + rootDSE; de.Username = username; de.Password = password; de.Path = path; schemaNamingContext =de.Properties[schemaNamingContext][0].ToString(); defaultNamingContext = de.Properties[defaultNamingContext][0].ToString(); }}Lấy các tên thuộc tính của lớp UserTa có tên LDAP để truy nhập schema . ta có thể dùng tên này để truy nhậpthư mục và đọc các thuộc tính. ta không chỉ quan tâm đến lớp user mà còncác lớp cơ sở khác như : Organizational-Person, Person, and Top. trongchương trình này tên của các lớp cơ sở là hard-coded ( mã chỉ định sẵn ) .nếu muốn đọc ta dùng thuộc tính subclassof .GetSchemaProperties() trả về 1mảng chuỗi với tên tất cả thuộc tính của kiểu đối tượng đặc tả .tất cả tênthuộc tính được thu thập vào thuộc tính StringCollection :protected void SetUserProperties(string schemaNamingContext){ StringCollection properties = new StringCollection(); string[] data = GetSchemaProperties(schemaNamingContext, User); properties.AddRange(GetSchemaProperties(schemaNamingContext, Organizational-Person)); properties.AddRange(GetSchemaProperties(schemaNamingContext,Person)); properties.AddRange(GetSchemaProperties(schemaNamingContext,Top)); listBoxProperties.Items.Clear(); foreach (string s in properties) { listBoxProperties.Items.Add(s); }}Trong GetSchemaProperties() ta truy nhập Active Directory lại, lần nàyrootDSE không được dùng.thuộc tính SystemMayContain giữ 1 tập tất cảcác thuộc tính mà được cho phép trong lớp objectType:protected string[] GetSchemaProperties(string schemaNamingContext, string objectType){ string[] data; using (DirectoryEntry de = new DirectoryEntry()) { de.Username = username; de.Password = password; de.Path = LDAP:// + hostname + CN= + objectType + , + schemaNamingContext; DS.PropertyCollection properties ...

Tài liệu được xem nhiều: