Làm việc với Active Directory
Tìm kiếm các đối tượng người dùng
Trong phần này ta s 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 để
ly c thuộc tính của đối tượng user. người dùng thnhập chuỗi tìm các
đối ọ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 được trình bày.
Giao din 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ếu không nhập domain controller thì kết nối làm việc với liên kết không
server ( serverless binding).nếu không nhập username thì ng cảnh của
người dùng hin tại được lấy.
2. 1 t nhn cho phép tất cả các tên thuộc tính của đối tượng user được
tải vào trong listbox listboxProperties
3. Sau khi tên thuộc tính được tải ta 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 hn tìm kiếm. giá tr mặc định là
(objectClass=user)
5. Bắt đầu tìm kiếm
Ngữ cảnh tên Schema ( Schema Naming Context)
Chương trình 2 phương thức xử : đầu tiên là nút nhn để tải c thuộc
tính, th2 là nút bắt đầu tìm kiếm trong domain.phần đầu ta đọc các thuộc
tính trong schema để trình bày nó.
Trong pơng thức buttonLoActive DirectoryProperties_Click()
,SetLogonInformation() đọc username,password và hostname t hộp thoại
lưu chúng trong các biến thành viên của lớp.sau đó phương thức
SetNamingContext() đặt tên LDAP của Schema và n LDAP ca ngữ cảnh
mặc định .tên Schema LDAP này được dùng để đặt các thuộc tính trong
listbox : SetUserProperties():
private void buttonLoadProperties_Click(object sender, System.EventArgs
e)
{
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 += "/";
}
Htrợ cho phương thức SetNamingContext(), ta dùng gốc của 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 =