1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tìm hiểu về active directory xây dựng công cụ minh họa trên windows server 2003 khóa luận tốt nghiệp đại học

71 25 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 71
Dung lượng 2,79 MB

Cấu trúc

  • I. TÌM HIỂU VỀ ACTIVE DIRECTORY (8)
    • 1. C ÁC MÔ HÌNH MẠNG TRONG MÔI TRƯỜNG M ICROSOFT (8)
    • 2. A CTIVE D IRECTORY (11)
  • II. TIẾP CẬN VỚI ACTIVE DIRECTORY (21)
    • 1) M ỘT SỐ CÔNG CỤ TRÊN W INDOWN S ERVER 2003 (21)
    • 2. T ÌM HIỂU VỀ A CTIVE D IRECTORY S ERVICES I NTERFACE (32)
  • II. ỨNG DỤNG ACTIVE DIRECTORY TRONG DRUPAL (43)
    • 1. T ỔNG QUAN VỀ D RUPAL (43)
    • 2. M ODULE TRONG D RUPAL (48)
    • 3. Q UÁ TRÌNH XỬ LÝ ĐĂNG NHẬP NGƯỜI DÙNG TRONG D RUPAL (52)
  • III. GIỚI THIỆU VỀ ỨNG DỤNG (57)
    • 1. G IỚI THIỆU (57)
    • 2. M ỘT SỐ CHỨC NĂNG CƠ BẢN (61)

Nội dung

TÌM HIỂU VỀ ACTIVE DIRECTORY

C ÁC MÔ HÌNH MẠNG TRONG MÔI TRƯỜNG M ICROSOFT

Mô hình workgroup là một hệ thống mạng ngang hàng (peer-to-peer) cho phép người dùng chia sẻ tài nguyên như tập tin, máy in và modem giữa các máy tính Trong mô hình này, mỗi máy tính vừa đóng vai trò là máy chủ (server) vừa là máy khách (client), giúp người dùng quản lý quyền truy cập và chia sẻ tài nguyên theo ý muốn Sau khi đăng nhập, người sử dụng có thể dễ dàng duyệt và tìm kiếm các tài nguyên có sẵn trên mạng, tạo điều kiện thuận lợi cho việc hợp tác và trao đổi thông tin.

(Nguồn: http://www.baclieu.gov.vn/tintuc/Lists/Posts/Post.aspx?Source=/tintuc&Category=&ItemID62&Mode=1)

Workgroup là một nhóm máy tính và tài nguyên của chúng kết nối với nhau trên mạng, cho phép các máy tính trong cùng một nhóm chia sẻ tài nguyên Mỗi máy tính trong workgroup duy trì chính sách bảo mật và cơ sở dữ liệu quản lý tài khoản bảo mật (SAM) riêng, dẫn đến việc quản trị tài khoản bảo mật phải thực hiện một cách cục bộ và phân tán Điều này gây ra sự phiền phức và khó khăn trong việc quản lý, đặc biệt đối với các mạng lớn.

Workgroup là một lựa chọn đơn giản và tiện lợi cho việc chia sẻ tài nguyên, đặc biệt phù hợp với các mạng nhỏ và nhóm người dùng tương tự nhau Tuy nhiên, do được xây dựng trên nền tảng mạng ngang hàng (peer-to-peer), Workgroup gặp khó khăn khi áp dụng cho các mạng lớn, nơi mà số lượng tài nguyên phong phú có thể khiến người dùng gặp khó khăn trong việc xác định và khai thác chúng.

Người dùng thường tìm kiếm cách đơn giản hơn để chia sẻ tài nguyên với một số hạn chế đối với những người dùng khác.

 Đặc điểm của mô hình Workgroup

Mỗi người truy cập vào mạng Windows tổ chức theo mô hình Workgroup cần phải đăng ký:

Khi người dùng nhập tên và mật khẩu, Windows sẽ tạo ra một mã số người sử dụng (user account) được lưu trữ trong cơ sở dữ liệu của hệ thống quản trị tài nguyên (SAM - Security Account Manager) Hệ thống này đảm bảo an toàn cho tài nguyên trên mạng, yêu cầu người dùng phải qua kiểm duyệt trước khi truy cập Trong mô hình Workgroup, mỗi máy trạm có nguồn tài nguyên riêng và được bảo vệ bởi một hệ thống quản trị tài nguyên độc lập.

Domain là một hệ thống bao gồm nhiều máy tính chia sẻ cùng một nguyên tắc bảo mật và cơ sở dữ liệu (CSDL) tài khoản người dùng Các tài khoản và quy tắc an toàn này được quản lý và truy cập thông qua một CSDL chung, giúp tăng cường tính bảo mật và quản lý hiệu quả.

Mô hình mạng Domain (Nguồn: http://nhatnghe.com/forum/showthread.php?t385)

Một domain hoạt động như một thư mục, tổ chức tài nguyên từ nhiều máy chủ vào một cấu trúc quản trị thống nhất Người dùng chỉ cần quyền đăng nhập vào domain thay vì từng máy chủ riêng lẻ, giúp đơn giản hóa quá trình truy cập Hơn nữa, việc quản lý tài khoản người dùng trở nên dễ dàng hơn nhờ vào việc tập trung hóa quản lý tài nguyên từ nhiều máy chủ, thay vì phải xử lý một mạng lưới với nhiều máy chủ độc lập.

Các máy chủ trong một domain cung cấp dịch vụ cho người sử dụng, cho phép họ truy cập tài nguyên mà họ được cấp quyền khi đăng nhập vào domain Người dùng có thể duyệt các tài nguyên trong domain một cách an toàn và bảo mật hơn so với workgroup Để xây dựng mạng dựa trên domain, cần ít nhất một máy Windows Server Một máy tính Windows chỉ có thể thuộc về một workgroup hoặc một domain, không thể đồng thời thuộc cả hai Mô hình domain thích hợp cho các mạng lớn, kết nối các mạng toàn xí nghiệp và cung cấp công cụ quản lý cần thiết.

Việc nhóm những người sử dụng mạng và tài nguyên trên mạng thành domain có lợi ích sau:

Mã số của người sử dụng được quản lý tập trung ở một nơi trong một cơ sở dữ liệu của máy chủ, do vậy quản lý chặt chẽ hơn

Các nguồn tài nguyên cục bộ được nhóm vào trong một domain nên dễ khai thác hơn

 Đặc điểm của mô hình Domain

Mỗi người tham gia trong Domain cần phải đăng ký thông tin sau:

Thông tin người dùng được lưu trữ trên máy chủ dưới dạng mã số, gọi là tài khoản người sử dụng, và được tổ chức thành cơ sở dữ liệu trong một domain Khi muốn truy cập vào domain, người dùng phải chọn tên domain trong hộp thoại trên máy trạm Máy trạm sẽ gửi thông tin đến hệ thống quản trị tài nguyên (SAM - Security Account Manager database) của domain để xác thực Nếu thông tin được kiểm tra đúng, người dùng sẽ được cấp quyền truy cập vào tài nguyên của domain.

Trong một Domain, có các loại máy chủ thực hiện các nhiệm vụ quan trọng, trong đó Primary Domain Controller (Pri DC) là bắt buộc để quản lý hệ thống người dùng và tài khoản trong Domain, sử dụng cơ sở dữ liệu SAM để lưu trữ thông tin này.

Security Account Manager (SAM) trên máy chủ là hệ thống kiểm soát Domain, trong đó chỉ có một Domain Controller chính (Pri DC) Hệ thống này cũng có thể bao gồm một hoặc nhiều máy Backup Domain Controller (BDC), có khả năng thay thế Pri DC khi cần thiết.

A CTIVE D IRECTORY

Active Directory là dịch vụ thư mục độc quyền của Microsoft, đóng vai trò quan trọng trong kiến trúc Windows Nó hoạt động như một hệ thống chuẩn và tập trung, giúp tự động hóa quản lý mạng dữ liệu người dùng, bảo mật và tài nguyên phân phối Đặc biệt, Active Directory được thiết kế cho các môi trường mạng phân tán, cho phép tương tác hiệu quả với các thư mục khác.

Active Directory, an advancement over Windows 2000 Server, is significantly enhanced in Windows Server 2003, becoming a crucial component of the operating system Windows Server 2003 Active Directory offers a directory service that serves as a reference for all objects within a network, including users, groups, computers, printers, policies, and permissions.

Active Directory cung cấp cho người dùng và quản trị viên một cái nhìn cấu trúc giúp dễ dàng truy cập và quản lý tất cả tài nguyên trong mạng.

Tương tác giữa Active Directory trong Domain (Nguồn: http://www.sis.pitt.edu/~lersais/elearning/labs/access/access1.htm)

Active Directory là một cơ sở dữ liệu với các chức năng như:

- Lưu trữ thông tin về tài khoản người dùng và các tài nguyên mạng máy tính

Một Server đóng vai trò chứng thực (authentication server) hoặc Server quản lý đăng nhập (logon Server), thường được gọi là domain controller (máy điều khiển vùng), là một thành phần quan trọng trong hệ thống mạng, giúp quản lý và xác thực người dùng trong môi trường mạng.

Duy trì một bảng hướng dẫn hoặc bảng chỉ mục là cần thiết để các máy tính trong mạng có thể nhanh chóng tìm kiếm tài nguyên trên các máy tính khác trong khu vực.

- Xác định tính hợp lệ của người truy cập tài nguyên mạng

- Lưu trữ thông tin mạng như là các đối tượng trong một cấu trúc phân cấp

Chúng ta có thể tạo ra các tài khoản người dùng với các mức độ quyền khác nhau, bao gồm quyền toàn quyền trên hệ thống mạng, quyền sao lưu dữ liệu và quyền tắt máy chủ từ xa.

Active Directory cho phép chia nhỏ miền thành các miền con (subdomain) hoặc các đơn vị tổ chức (OU), giúp quản lý hiệu quả hơn Điều này cho phép ủy quyền cho các quản trị viên bộ phận quản lý từng bộ phận nhỏ, từ đó nâng cao khả năng kiểm soát và bảo mật trong tổ chức.

Microsoft Active Directory là một bước tiến quan trọng so với Windows NT Server 4.0 và các mạng máy chủ standalone, nhờ vào cơ chế quản trị tập trung trên toàn mạng Nó còn cung cấp khả năng dự phòng và tự động chuyển đổi dự phòng khi có hai hoặc nhiều domain controller được triển khai trong một domain.

Active Directory tự động quản lý sự truyền thông giữa các domain controller, đảm bảo mạng luôn được duy trì Người dùng có thể truy cập tất cả tài nguyên trên mạng thông qua cơ chế đăng nhập một lần Tất cả tài nguyên trong mạng đều được bảo vệ bởi một cơ chế bảo mật mạnh mẽ, có khả năng kiểm tra nhận dạng người dùng và quyền hạn truy cập đối với từng tài nguyên.

Active Directory cho phép dễ dàng tăng cấp và hạ cấp các domain controller cũng như máy chủ thành viên, đồng thời quản lý và bảo vệ hệ thống thông qua chính sách nhóm (Group Policies) Mô hình tổ chức của nó có thứ bậc linh hoạt, hỗ trợ quản lý hiệu quả và ủy nhiệm trách nhiệm quản trị Quan trọng nhất, Active Directory có khả năng quản lý hàng triệu đối tượng trong một miền, đóng vai trò quan trọng trong kiến trúc của hệ thống.

Active Directory organizes data such as user information, printers, servers, databases, groups, computers, and security policies into objects Each object possesses unique attributes; for instance, a user object includes attributes like First Name, Last Name, and Logon Name, while a computer object features attributes such as computer name and description Additionally, certain special objects that contain multiple other objects are referred to as "containers," with domains serving as examples that encompass various user and computer accounts.

Các đối tượng trong Active Directory ii ACTIVE DIRECTORY SCHEMA

Trong Active Directory, cơ sở dữ liệu chính là AD Schema, nơi định nghĩa các đối tượng được lưu trữ Schema là danh sách các định nghĩa xác định các loại đối tượng và thông tin liên quan đến chúng trong Active Directory Thực chất, schema cũng được lưu trữ dưới dạng một đối tượng.

Schema được định nghĩa gồm 2 loại đối tượng (object) là schema class objects và schema Attribute objects Đối tượng và thuộc tính trong Schema

Schema Class có chức năng như một template cho việc tạo mới các đối tượng trong

Mỗi Schema Class bao gồm một tập hợp các thuộc tính gọi là Schema Attribute Objects Khi tạo một đối tượng thuộc một loại Schema Class cụ thể, các thuộc tính của đối tượng sẽ được Schema Attribute lưu trữ tương ứng với loại Schema Class đó.

Schema Attribute định nghĩa các lớp Schema tương ứng, với mỗi thuộc tính được xác định chỉ một lần trong Active Directory Các thuộc tính này có thể thuộc về nhiều lớp Schema theo mối quan hệ một-nhiều (1-n).

By default, a set of Schema Classes and Schema Attributes is bundled with Active Directory However, Active Directory's schema allows for the extension of existing Schema Classes on available Attributes or the creation of new Schema Attributes.

TIẾP CẬN VỚI ACTIVE DIRECTORY

M ỘT SỐ CÔNG CỤ TRÊN W INDOWN S ERVER 2003

a) Active Directory Users and Computers (ADUC)

Giao diện chính cơ bản của ADUC:

Active Directory Users and Computers là công cụ để quản lí các đối tượng sau trong hệ thống:

ADUC còn dùng để chuyển các role hệ thống của AD sang các máy khác:

Thao tác tạo mới user và group đơn giản trong ADUC:

Chọn folder “User” bên trái  nhấp phải chọn New  User Xuất hiện form để đặt tên và mật khẩu cho User muốn tạo:

Các thuộc tính mật khẩu

Thao tác tạo mới Group: b) Active Directory Domains and Trusts

Active Directory Domains and Trusts là công cụ quản lý domain trong hệ thống, cho phép tạo sự liên kết và chứng thực tin tưởng lẫn nhau giữa các đối tượng trong Active Directory (AD) và các domain khác nhau.

Giao diện chính của Active Directory Domains and Trusts:

Một số chức năng cơ bản [4]: c) Active Directory Sites and Services

Active Directory Sites and Services is a tool used for managing sites within the Active Directory system, which organizes resources based on geographic distribution, as well as the services that operate within Active Directory.

Giao diện chính của Active Directory Sites and Services:

Một số thao tác cơ bản của Active Directory Sites and Services

Move a Server to a new site:

1 Mở Active Directory Sites and Services

2 Nhấp vào dấu cộng (+) bên cạnh Sites để mở danh sách có sẵn

3 Để mở danh sách Servers, nhấp vào Site nơi mà Server hiện tại đang chọn

4 Nhấp phải vào Server bạn muốn di chuyển và chọn Move from the shortcut menu

5 Trong cửa sổ Move Server Window, chọn Site mới cho Server và click OK

1 Mở Active Directory Sites and Services

2 Mở rộng ra phần the Sites

Nhấp phải lên Sites folder sau đó click New Site Ở textbox Name, gỏ tên cho site mới muốn tạo

Click đối tượng liên kết site, sau đó click OK

Xem lại site mới đã tạo xong ở các bước trên.

T ÌM HIỂU VỀ A CTIVE D IRECTORY S ERVICES I NTERFACE

Để phát triển ứng dụng với AD, ta có 3 đối tượng chính cần tìm hiểu:

LDAP, or Lightweight Directory Access Protocol, is a protocol that operates over TCP/IP, enabling the tracking, retrieval, and modification of information within an Internet Directory This protocol facilitates communication between applications and the server hosting Active Directory.

- ADSI – Active Directory Services Interface – đây là interface hỗ trợ để thực hiện các tác vụ hệ thống

- System.DirectoryServices - được tích hợp mặc định trong ADSI API và được Net Framework cung cấp thư viện cho việc lập trình tương tác với Active Directory

Hình dưới đây miêu tả kiến trúc tổng quan cho vấn đề lập trình tương tác với Active Directory, nó gồm 2 phần chính

.NET Framework APIs là bộ thư viện do NET Framework cung cấp, giúp lập trình viên phát triển các ứng dụng tương tác hiệu quả với Active Directory (AD) của hệ thống, tối ưu hóa khả năng quản trị của AD.

Native APIs là các API được tích hợp sẵn trong AD, cho phép NET Framework tương tác để thực hiện các tác vụ lập trình Khi phát triển ứng dụng trên nền tảng NET Framework, phần này có thể được bỏ qua.

Tương tác giữa các API

(Nguồn: http://dotnetactivedirectory.com/Understanding_LDAP_Active_Directory_System.DirectoryServices_API_stack.htm) a) Khái niệm ADSI

ADSI, hay Giao diện Lập trình Ứng dụng Active Directory, là một tập hợp các giao diện COM được thiết kế để tương tác với Active Directory Nó cho phép lập trình viên thực hiện các tính năng của dịch vụ thư mục thông qua các provider như LDAP, WinNT và NDS Trong NET Framework, namespace System.DirectoryServices cung cấp các lớp hỗ trợ việc sử dụng các giao diện ADSI như IADs và IUnknown, giúp đơn giản hóa quá trình lập trình với Active Directory.

(Nguồn: http://msdn.microsoft.com/en-us/library/windows/desktop/aa772171(v=vs.85).aspx)

ADSI cho phép quản trị viên thực hiện nhiều công việc quan trọng, bao gồm việc thêm người dùng mới, quản lý máy in và xác định các tài nguyên trong môi trường phân tán.

ADSI xuất hiện ở thời Windown 2000 và nó có thể được người lập trình viết trên nhiều ngôn ngữ như C, C++ hoặc VB…

Sơ lược về lớp System.DirectoryServices trong Visual Studio 2005:

Để phát triển chương trình trong Active Directory, người lập trình cần sử dụng các lớp trong namespace System.DirectoryServices và tham chiếu đến assembly System.DirectoryServices Nhờ vào các lớp này, ta có thể thực hiện các thao tác như truy vấn đối tượng, xem và cập nhật thuộc tính, tìm kiếm đối tượng, cũng như di chuyển chúng đến các vị trí khác trong hệ thống.

Ta 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 b) Các lớp trong System.DirectoryServices

DirectoryEntry : lớp này là lớp chính trong namespace System.DirectoryServices

This class represents an object stored in Active Directory, allowing us to link to an object for viewing and updating its properties The properties of the object are presented in a PropertyCollection, with each entry in the PropertyCollection containing a PropertyValueCollection.

Người dùng sử dụng lớp này để kết nối các đối tượng và quản lý các thuộc tính của chúng, bao gồm việc tạo, xóa, đổi tên và di chuyển các node con, cũng như liệt kê các children của node cha Directory Entry hỗ trợ hầu hết các entry thông thường, nhưng không áp dụng cho tất cả các entries của schema.

Các phương thức thiết lập của DirectoryEntry [10]

Giải thích các thông số

Object: tên của một đối tượng Active Directory muốn kết nối

String (1): Đường dẩn đến đối tượng Active Directory muốn kết nối

String (2): Tên của người dùng trong Active Directory (dùng để chứng thực từ phía client)

String (3): Mật khẩu của người dùng (dùng để chứng thực từ phía client)

Authentication Types: Một trong những giá trị của Authentication Types

Các thuộc tính của DirectoryEntry tầm vực public [10]

Các thuộc tính của DirectoryEntry tầm vực protected [10]

Các phương thức của DirectoryEntry tầm vực public [10]

Các phương thức của DirectoryEntry tầm vực protected [10]

DirectoryEntries : DirectoryEntries là một tập hợp các đối tượng DirectoryEntry

Thuộc tính Children của đối tượng DirectoryEntry trả về một danh sách các đối tượng trong tập DirectoryEntries

Các thuộc thính và phương thức của DirectoryEntries [10]

The DirectorySearcher class is essential for locating objects with specific attributes in Active Directory It utilizes SortOption and enumerations such as SearchScope, SortDirection, and ReferralChasingOption to define search parameters The search results are returned in a SearchResult or SearchResultCollection, along with ResultPropertyCollection and ResultPropertyValueCollection for accessing object values To retrieve the value of an object in Active Directory, a connection must be established.

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 binding 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 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à :

Provider ADSI hoạt động như một COM server và có thể được định danh thông qua một progID tìm thấy trong khóa Registry HKEY_CLASSES_ROOT Các provider này được sử dụng trong Windows 2000.

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

Để truy xuất cơ sở dữ liệu người dùng trong các miền Windows NT 4 cũ, có thể sử dụng provider ADSI trong WinNT Giao thức này cũng cho phép kết nối với miền Windows 2000, nhưng sẽ bị hạn chế về các thuộc tính có giá trị tương ứng 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

The server name is an optional parameter when logging into an Active Directory domain If a server name is not provided, Windows 2000 will automatically seek the "best" domain controller within the domain to establish a connection with the user In the absence of a server within the site, the first available domain controller will be utilized.

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)

DN là một tên duy nhất được sử dụng để xác định đối tượng cần truy xuất Trong Active Directory, cú pháp LDAP dựa trên X.500 cho phép chúng ta đặc tả tên của đối tượng một cách chính xác.

The System.DirectoryServices.DirectoryEntry class is utilized to define all connection information You can use the default constructor and specify connection details through the properties Path, Username, Password, and AuthenticationType, or you can pass all the information directly in the constructor.

DirectoryEntry de = new DirectoryEntry(); de.Path = "LDAP://celticrain/DC=eichkogelstrasse, DC=local"; de.Username = "nagel@eichkogelstrasse.local"; de.Password = "someSecret";

// dùng sự uỷ nhiệm người dùng đương thời

"LDAP://DC=eichkogelstrasse, DC=local");

Lưu ý rằng việc xây dựng đối tượng DirectoryEntry thành công không đảm bảo rằng liên kết cũng thành công Liên kết chỉ xảy ra khi một thuộc tính được đọc lần đầu tiên, nhằm tránh việc lưu thông không cần thiết trên mạng Trong lần truy xuất đầu tiên, có thể xác định xem đối tượng có tồn tại hay không, cùng với việc kiểm tra tính hợp lệ của sự ủy nhiệm người dùng.

ỨNG DỤNG ACTIVE DIRECTORY TRONG DRUPAL

T ỔNG QUAN VỀ D RUPAL

Drupal là một framework phát triển phần mềm mã nguồn mở, chuyên về quản trị nội dung Nó cho phép người dùng tạo và tổ chức dữ liệu, tùy chỉnh giao diện trình bày, cũng như tự động hóa các tác vụ quản lý hệ thống.

Drupal được chạy trên rất nhiều môi trường khác nhau, bao gồm Windows, Mac

Hệ điều hành như OS X, Linux, FreeBSD và OpenBSD, cùng với các máy chủ web như Apache hoặc IIS, đều hỗ trợ ngôn ngữ PHP Drupal sử dụng cơ sở dữ liệu MySQL hoặc PostgreSQL để lưu trữ nội dung và các cấu hình cần thiết.

Các dịch vụ được sử dụng trong Drupal

Drupal là một hệ quản trị nội dung được phát triển bằng ngôn ngữ PHP, sử dụng cơ sở dữ liệu quan hệ, thường là MySQL, để lưu trữ dữ liệu Mặc dù viết bằng PHP, Drupal chủ yếu áp dụng lập trình thủ tục truyền thống nhưng vẫn tích hợp các nguyên lý lập trình hướng đối tượng như tính đóng gói, kế thừa và đa hình Ở trung tâm của kiến trúc Drupal là phần nhân (core), bao gồm các file mã nạp chương trình và thư viện, đóng vai trò kết nối các modules Nhân Drupal cung cấp các dịch vụ thiết yếu như quản lý cơ sở dữ liệu và bộ khung hook, tuy nhiên, sức mạnh thực sự của Drupal đến từ kiến trúc module, cho phép mở rộng và tùy biến linh hoạt.

Kiến trúc của Drupal (Nguồn: http://www.amarketplaceofideas.com/drupal-architecture.htm)

Drupal được xây dựng trên cấu trúc framework module, cho phép người dùng kích hoạt hoặc vô hiệu hóa các hàm trong mô-đun Người dùng có thể thêm tính năng bằng cách kích hoạt mô-đun hiện có hoặc cài đặt mô-đun mới từ cộng đồng Drupal, hoặc tự phát triển mô-đun riêng Nhờ vào khả năng mở rộng này, Drupal có thể hoạt động linh hoạt và đáp ứng nhiều nhu cầu chức năng khác nhau.

Module và Nhân trong Drupal [6] c) Các yếu tố cấu thành Drupal cùng với module

Cơ chế hook là khái niệm quan trọng trong phát triển module cho Drupal, giúp xác định module nào sẽ được gọi khi xử lý các yêu cầu từ người dùng Các Hook được định nghĩa trong nhân của Drupal và có thể phát triển thêm, được xem như các sự kiện và gọi chung là hàm callbacks Các module sử dụng Hook để tương tác với nhân Drupal mà không cần chỉnh sửa trực tiếp trong nhân.

Hook trong Drupal có dạng như sau: hook_user() -> mymodule_user() trong đó mymodule là tên module còn user là tên hook

Khi người dùng đăng nhập vào hệ thống Drupal, hàm hook_user() sẽ được kích hoạt, dẫn đến việc tất cả các module liên quan đến hàm này sẽ được gọi.

Trong Drupal có nhiều loại Hook, mỗi Hook thực hiện nhiệm vụ khác nhau: http://api.drupal.org/api/drupal/includes%21module.inc/group/hooks/7

Hệ thống giao diện của Drupal có cấu trúc phức tạp, cho phép cải tiến và mở rộng thông qua cơ chế hook Giao diện bao gồm các tài nguyên như mẫu PHP, CSS, Javascript và hình ảnh, tạo nên bố cục và cách trình bày nội dung Một giao diện đơn giản có thể được xây dựng từ vài file, bao gồm file định nghĩa cách trình bày, file thông tin và một số hình ảnh Nhờ vào các mẫu có sẵn, lập trình viên có thể dễ dàng tạo ra giao diện tùy chỉnh mà không tốn nhiều thời gian.

Giao diện có thể được phát triển để đáp ứng nhu cầu đa dạng, với các khuôn mẫu tùy biến thường được viết bằng ngôn ngữ PHP để tái cấu trúc chi tiết HTML Nhiều file PHP được sử dụng để nạp chồng các phương thức của bộ máy giao diện, đồng thời hỗ trợ cấu hình phức tạp của Javascript và file CSS Tóm lại, mức độ đơn giản hay phức tạp của một giao diện phụ thuộc vào thiết kế của người phát triển.

Node trong Drupal là một mẫu nội dung văn bản tổng quát, đại diện cho các đối tượng nội dung Các node được lưu trữ trong cơ sở dữ liệu và được truy xuất khi cần thiết Mỗi node bao gồm nhiều thành phần khác nhau.

- Một định danh không trùng nhau đối với 2 node bất kỳ (nid - Node ID)

- Ít nhất một giá trị thể hiện phiên bản của node (vid - Version ID)

- Ngày khởi tạo và thay đổi, cùng với thông tin xác định người dùng làm việc trực tiếp với node đó

- Dữ liệu meta như trạng thái xuất bản, ngôn ngữ được sử dụng và và các bản dịch sang ngôn ngữ khác

Người dùng là một đối tượng quan trọng trong Drupal, tương tự như node, với dữ liệu được lưu trữ trong cơ sở dữ liệu và truy xuất trong quá trình xử lý Thông tin người dùng đóng vai trò thiết yếu trong việc xác thực, thiết lập cá nhân và quản lý quyền hạn.

Các đặc quyền của người dùng trong Drupal được gán theo từng đối tượng người dùng mà hệ thống xác định Hệ thống này cho phép cấp quyền cho một nhóm người dùng cụ thể Mỗi người dùng sẽ được gán một vai trò nhất định, và các đặc quyền sẽ được cấp phát hoặc thu hồi thông qua vai trò đó.

Khi kiểm tra quyền truy cập tài nguyên, Drupal sẽ tải một đối tượng người dùng, xác định vai trò của họ và kiểm tra các đặc quyền liên quan để quyết định xem có cho phép truy cập hay không.

API người dùng thực hiện các tác vụ này, cho phép nhà phát triển module không cần can thiệp trực tiếp vào vai trò của người dùng trước khi xác định quyền hạn.

Khối là một khái niệm quan trọng trong Drupal, được sử dụng để biểu diễn các nội dung nhỏ hơn so với node, vốn lưu trữ và trình bày các bài viết lớn Ví dụ, các khối thường được dùng để hiển thị đoạn trích dẫn, khung bầu chọn hoặc ô tìm kiếm.

Khối không chỉ là một dạng nội dung mà còn là một đối tượng trừu tượng, chủ yếu được sử dụng để hiển thị các đối tượng nội dung khác Người quản trị có thể sử dụng Block editor để xác định vị trí của các khối trên trang giao diện.

M ODULE TRONG D RUPAL

Cấu trúc của một module bao gồm nhiều tập tin khác nhau, nhưng bắt buộc phải có ít nhất một tập tin .info và một tập tin .module.

là tên của thư mục chứa module được tạo, tên này không được trùng với các module đã tồn tại trong hệ thống.

Trước khi bắt đầu viết mã cho một module trong Drupal, cần tạo một file văn bản chứa thông tin cơ bản về module Thông tin trong file này sẽ được một số thành phần của Drupal sử dụng để quản lý module hiệu quả.

The info file is structured similarly to a PHP INI file, serving to define various settings Its content includes key elements such as the name, which identifies it as "LDAP Authentication," a description stating that it "Implements LDAP authentication," and a package labeled "Lightweight Directory Access Protocol." Additionally, it lists dependencies, specifies the core version as 7.x, and provides a configuration path at admin/config/people/ldap/authentication The file also enumerates several associated files, including LdapAuthenticationConf.class.php, LdapAuthenticationConfAdmin.class.php, ldap_authentication.module, ldap_authentication.install, ldap_authentication.inc, ldap_authentication.theme.inc, ldap_authentication.admin.inc, and tests/ldap_authentication.test.

; Information added by drupal.org packaging script on 2012-06-27 version = "7.x-1.0-beta11+9-dev" core = "7.x" project = "ldap" datestamp = "1340799950"

Trường name khai báo tên của module, tên này sẽ hiển thị trong danh sách các module có ở khu vực cho người quản trị

Phần description chứa thông tin thêm về module, mô tả chức năng, nhiệm vụ mà module sẽ thực hiện

Name và description là hai trường bắt buộc phải có trong file info

Trường thông tin kế là phần cốt lõi, chỉ rõ phiên bản Drupal mà module sẽ hoạt động tốt Giá trị 7.x cho biết module này yêu cầu phiên bản Drupal 7, bao gồm cả các phiên bản nâng cấp từ bản 7 Thông thường, Drupal sẽ tự động xác định giá trị này một cách hợp lý, nhưng các nhà phát triển làm việc với CVS cần lưu ý.

(Concurrent Version System - hệ thống quản lý phiên bản ứng dụng) được khuyến cáo nên tự mình đặt giá trị cho trường core

Chỉ dẫn cuối cùng trong file info trên là php , cho biết phiên bản tối thiểu của PHP mà module yêu cầu

Ngoài ra, các module phức tạp hơn còn có thêm một số trường thông tin trong file

Package là nhóm các chức năng của module, và nếu không được khai báo, module sẽ thuộc vào nhóm "other" Thông tin về gói cập nhật bao gồm ai và tổ chức nào đã phát triển nó.

- Dependencies: các module phụ thuộc, cách nhau bằng khoảng trống Nếu module được yêu cầu chưa được bật trên hệ thống thì module này không thể bật được

- Files[]: khai báo các files sẽ được dùng kèm (includes) trong modules

- Configure: cấu hình thiết lâp cho modules

File module là thành phần quan trọng nhất trong một module, chứa mã PHP thực hiện chức năng của module File này thường mở rộng một số hàm hook mà Drupal gọi tại những thời điểm cụ thể trong quá trình xử lý yêu cầu.

Cũng giống như file info , file module được đặt tên theo quy tắc

.module, trong đó là tên thư mục chứa module

File module trong Drupal bắt đầu bằng thẻ , giúp tránh việc in ra các ký tự trống không mong muốn trong đầu ra của mã kịch bản Điều này đặc biệt quan trọng vì nếu có ký tự trống xuất hiện trước phần thông tin header của HTML, trình duyệt sẽ hiển thị thông báo lỗi ở đầu trang web.

Mỗi người dùng đã đăng ký có quyền truy cập trang "My account" để xem thông tin tài khoản của mình tại địa chỉ URL: http://www.hung.lab/drupal/?q=user Trên trang này, người dùng sẽ thấy các thông tin liên quan đến tài khoản của họ.

Trang thông tin người dùng có thể được truy cập bởi quản trị viên có quyền tương ứng, với nội dung chủ yếu được tạo ra thông qua hook_user() Việc triển khai hook này trong module cho phép các nhà phát triển kết nối với giao diện quản lý người dùng.

Hook người dùng trong Drupal 7 không chỉ đơn thuần là hiển thị trang tài khoản, mà còn cho phép thêm, sửa chữa và xoá bộ ghi nhớ đăng nhập, mang lại nhiều chức năng hữu ích cho việc quản lý người dùng.

Một bản triển khai của hook_user() sẽ nhận 4 tham số sau:

- $op: Tên của thao tác mà người dùng thực hiện Tham số này nhận 1 trong 13 giá trị tương ứng với 13 thao tác (view, login, delete )

Mảng $edit chứa các giá trị được gửi từ một form và được truyền vào qua tham chiếu &$edit Các giá trị này sau đó được sử dụng cho các thao tác xử lý dữ liệu, chẳng hạn như chèn (insert).

- $account: Dùng để chứa đối tượng tài khoản cho một người dùng nhất định Tham số này cũng được truyền qua tham chiếu &$account

Trong việc sử dụng tham số này, người dùng có thể xác định phần thông tin nào sẽ được trích xuất cho yêu cầu Bên cạnh đó, cũng có một số truy vấn đơn giản để hỗ trợ quá trình này.

Drupal cung cấp hàm db_query() để thực hiện các truy vấn trên kết nối đang hoạt động, bao gồm các loại truy vấn như SELECT, INSERT, UPDATE và DELETE.

Dưới đây là những ví dụ:

To retrieve all rows from the "joke" table with a vid that is an integer and matches the value of $node->vid, use the following query: db_query('SELECT * FROM {joke} WHERE vid = %d', $node->vid);

Để chèn một hàng mới vào bảng joke, bạn có thể sử dụng câu lệnh db_query như sau: "INSERT INTO {joke} (nid, vid, punchline) VALUES (%d, %d, '%s')", với các giá trị tương ứng là $node->nid, $node->vid và $node->punchline.

Q UÁ TRÌNH XỬ LÝ ĐĂNG NHẬP NGƯỜI DÙNG TRONG D RUPAL

Quá trình đăng nhập diễn ra khi người dùng nhập tên đăng nhập và mật khẩu vào form tại địa chỉ http://hung.lab/?q=user hoặc trong "block" của website, sau đó nhấn nút Login.

Sẽ có một thao tác xác nhận từ form Login kiểm tra các điều kiện sau:

Tên của người dùng có bị khóa hay không?

Quyền đăng nhập tài khoản có bị từ chối?

Người dùng nhập một tên đăng nhập hay mật khẩu có chính xác không?

Tất cả thông tin trên sẽ được Drupal thông báo về lại cho người đăng nhập

Drupal hỗ trợ chứng thực cho cả người dùng cục bộ và người dùng bên ngoài, với ưu tiên cho tài khoản cục bộ được tạo và quản lý bởi Drupal Người dùng bên ngoài có thể đăng nhập thông qua các hệ thống xác thực như OpenID, LDAP, Pubcookie và nhiều nguồn khác.

Drupal sẽ ưu tiên đăng nhập vào tài khoản người dùng nội bộ bằng cách tìm kiếm trong bảng “user” để so sánh thông tin cơ sở dữ liệu với tên người dùng và mật khẩu đã được băm Nếu thông tin khớp, hệ thống sẽ thông báo đăng nhập thành công thông qua việc kết hợp hai hook người dùng (load và login) trong module.

Sơ đồ thực hiện đăng nhập tài khoản nội bộ [6]

Việc thực hiện “load” của hook user xảy ra khi đối tượng $user được tải thành công từ cơ sở dữ liệu, thường khi người dùng đăng nhập hoặc khi thông tin người dùng được truy xuất bởi node hoặc các điểm khác.

Chi phí gọi hook user rất cao, vì vậy hàm user_load() không nên tự động gọi khi đối tượng $user hiện tại đã được thiết lập cho một yêu cầu nào đó Nếu bạn đang phát triển một module riêng, hãy luôn gọi user_load() trước khi thực hiện bất kỳ hàm tự định nghĩa nào để đảm bảo đối tượng $user được tải đầy đủ, trừ khi bạn chắc chắn rằng điều này đã xảy ra.

Đôi khi, người dùng không muốn sử dụng tài khoản Drupal hiện tại, chẳng hạn như khi họ có cơ sở dữ liệu người dùng riêng hoặc sử dụng LDAP Drupal hỗ trợ dễ dàng việc xác thực tài khoản từ bên ngoài trong quá trình đăng nhập.

Nếu không có module xử lý chứng thực tài khoản từ bên ngoài, Hook_auth sẽ không nhận được sự kiện, và Drupal sẽ coi tất cả tài khoản là tài khoản nội bộ Điều này khiến admin và admin@hung.lab chỉ là những chuỗi tượng trưng đơn giản, không có ý nghĩa đặc biệt Ngược lại, nếu có một module thực hiện chứng thực tài khoản từ bên ngoài, hai tên đăng nhập này sẽ trở nên hoàn toàn khác biệt.

Hình dưới đây miêu tả sơ đồ các bước thực hiện quá trình đăng nhập một user từ bên ngoài:

Nếu không có server, sử dụng username

Dò trong authmap table có chứa username?

Có, user đã tồn tai

Thực hiện hook_auth() cho module xử lý user này ở authmap

Nhận uid từ authmap table

Thông báo user không được nhận diện

Tải lại $user local sử dụng uid

Thực hiện hook_user với

Thực hiện hook_user với

Thực hiện hook_auth() ở từng module cài đặt auth

Không có Module xác nhận auth

Load local user bằng username

Thông báo sai password Đăng kí một user mới

Thực hiện hook_user với $op =load

Thực hiện hook_user với $op =insert

Thực hiện hook_user với $op =load Được server cấp?

Có, ghi lại vào authmap table bằng module auth

Thực hiện hook_user với

Tách chuổi lấy ra tên và server từ tên đăng nhập

Khi một user đăng nhập vào Drupal với tên đăng nhập khác user local chúng ta sẽ có các thông tin truy vấn sau:

Ví dụ thông tin site: Drupal: hung.lab/drupal

User name: hung@hung.lab Module xử lý: drupal.module

- Người dùng đăng nhập vào site hung.lab/drupal với tên đăng nhập hung@hung.lab và mật khẩu

- Site: hung.lab/drupal kiểm tra trong cơ sở dữ liệu người dùng cục bộ của mình và không tìm thấy user hung@hung.lab

- Site: hung.lab/drupal kiểm tra trong bảng authmap và không tìm thấy user hung@hung.lab

- Khi module drupal.module được bật lên ở site hung.lab/drupal Module này sẽ nhận sự kiện từ hook_auth

Drupal.module sẽ gửi yêu cầu đến hệ thống quản lý cơ sở người dùng LDAP tại hung.lab, kiểm tra thông tin một người dùng có tên là hung@hung.lab cùng với mật khẩu tương ứng.

- Trong xử lý bình thường như mong đợi, server LDAP sẽ trả về một thông điệp:”Tồn tại User này và User này đang ở trạng thái bình thường”

Trang web hung.lab/drupal sẽ cập nhật bảng User trong cơ sở dữ liệu bằng cách thêm một dòng mới cho người dùng với User ID là Local User, đồng thời cũng thêm một dòng vào bảng authmap Trong các lần đăng nhập tiếp theo của người dùng với tài khoản hung@hung.lab, hệ thống sẽ chỉ cần thực hiện các bước từ 1 đến 3.

Một gợi ý cho việc đăng nhập tài khoản từ bên ngoài là sử dụng Server để cung cấp username từ bảng authmap, trong đó có ba thông tin quan trọng cần lưu ý.

User ID: Con số và là khóa để phân biệt user

External User: tên người dùng bên ngoài không thuộc local user Ở trường hợp trên là hung@hung.lab

Module Name là tên của module đảm nhận việc xác thực người dùng bên ngoài (external user) và quản lý quá trình xác thực cho họ trong các lần đăng nhập sau Trong trường hợp này, Module Name được xác định là drupal (drupal.module).

Khi Drupal chứng thực một user từ bên ngoài trong một số trường hợp thì Drupal sẽ không nhận được thông tin email của user này

GIỚI THIỆU VỀ ỨNG DỤNG

G IỚI THIỆU

Trong phần này, chúng tôi sẽ giới thiệu ứng dụng nhằm minh họa việc sử dụng ADSI để kết nối và quản lý các đối tượng trong Active Directory, dựa trên lý thuyết đã trình bày ở các phần trước của khóa luận.

Ứng dụng này cung cấp các chức năng cơ bản cho việc quản lý đối tượng trong Active Directory, đặc biệt là người dùng và nhóm Nó mang lại cái nhìn tổng quan về các thành phần và hành động của Active Directory, nhằm khắc phục sự bất tiện khi quản lý trên Windows Server 2003 bằng nhiều công cụ khác nhau Dù Windows hỗ trợ Remote Desktop, nhưng việc hiển thị có thể bị giật do mạng Ứng dụng hiện tại có quy mô nhỏ, nhưng sẽ được phát triển trong tương lai như một bản demo để giúp người mới làm quen với ADSI Được xây dựng trên nền tảng NET Framework 2.0 và sử dụng DevExpress để cải thiện giao diện, ứng dụng hoạt động như một client trên máy bất kỳ, giao tiếp với server Domain Controller qua giao thức LDAP Thiết kế bằng ngôn ngữ C# trong Visual Studio 2005, ứng dụng hỗ trợ người dùng thuận tiện và nhanh chóng trong việc cấu hình.

User và Group là những đối tượng thường xuyên sử dụng các thuộc tính và phương thức do Microsoft cung cấp qua ADSI Trong quá trình phát triển ứng dụng, nhằm phù hợp với thói quen lập trình cá nhân, ứng dụng đã được bổ sung thêm ba lớp chính với chức năng riêng biệt.

Lớp OUser: cung cấp một số phương thức liên quan đến việc SetProperty ,

Lớp OGroup: cấp cấp phương thức trong việc CreateNewGroup

Lớp Program là nơi lưu trữ các thông tin quan trọng như tên người dùng đăng nhập, mật khẩu, đường dẫn đến đối tượng trong Active Directory, tên miền đang sử dụng và các biến để kiểm tra tính hợp lệ của quá trình đăng nhập.

Cấu trúc cơ bản của công cụ

Giao diện chính của ứng dụng:

Form giao tiếp gồm có 2 phần:

Phần bên phải của giao diện là khu vực thực hiện các chức năng và cung cấp thông tin cần thiết cho công việc Nó được thiết kế với các điều khiển thông dụng như LABEL, BUTTON, TEXTBOX, TREEVIEW, LISTVIEW và IMAGELIST, giúp người dùng dễ dàng tương tác và quản lý thông tin.

Phần bên trái giao diện hiển thị các chức năng, cho phép người dùng chọn lựa bằng cách nhấp vào biểu tượng hoặc liên kết chữ Giao diện này được thiết kế bằng DevExpress, sử dụng các thành phần như NaviBar Control và Navibar Item.

Các chức năng được tích hợp và chuyển đổi sang phần bên phải thông qua USER_CONTROL Ứng dụng được chia thành 3 nhóm chức năng, mỗi nhóm bao gồm các chức năng cụ thể riêng biệt.

Quản lý các tính năng liên quan đến một domain cho phép người dùng kết nối và theo dõi các đối tượng đang được sử dụng trong domain đó Người dùng có thể xem tổng thể các đối tượng, cũng như thực hiện các thao tác như đổi tên hoặc di chuyển một đối tượng cụ thể trong domain.

Group: cung cấp các chức năng liên quan đến việc quản lý một Group

User: cung cấp các chức năng liên quan đến việc quản lý một User Ứng Dụng

M ỘT SỐ CHỨC NĂNG CƠ BẢN

Connect: Để kết nối đến một domain ta tạo một DirectoryEntry là entry có đường dẩn LDAP đến domain cần kết nối

Tham số Authentication để tùy chỉnh mức độ an toàn của kết nối

To verify the success of a connection, we utilize the previously initialized DirectoryEntry, which is created with the LDAP path, domain name, username, and secure authentication By accessing its properties, we can confirm the connection status.

MessageBox.Show("Dang nhap thanh cong domain " + AdRoot.Name.ToString(),

Tốc độ của việc kết nối phụ thuộc vào tốc độ truyền dữ liệu giữa máy thực thi ứng dụng và máy server

Chức năng kết nối vào một domain

View Domain: Ở tính năng này, ứng dụng sẽ liệt kê ra các thuộc tính của đối tượng Cho biết trong một OU gồm có những đối tượng nào

To manage TreeView and ListView controls, we utilize a recursive loop to add child objects of the selected entry To retrieve objects within an Organizational Unit (OU), we iterate through each entry and access its children using the Children property For each child entry, we create a new TreeNode with the child's name and add it to the parent node Additionally, to obtain property information, we employ two loops to extract both the names and values of the properties from the entries.

{ foreach (object o in entrytam.Properties[name])

{ listBox1.Items.Add(name + ": " + o.ToString());

Chức năng liệt kê các đối tượng trong domain

Trong quá trình sử dụng việc đổi tên một đối tượng là điều cần thiết Rename Object giúp thực hiện công việc trên

Để đổi tên đối tượng, chúng ta cần cung cấp một địa chỉ URL của LDAP thông qua textBox_Object.Text Người dùng có thể dễ dàng nhập liệu bằng cách nhấp chọn đối tượng trong khung nhìn TreeView.

DirectoryEntry entry = new DirectoryEntry(textBox_Object.Text, Program.username, Program.password); entry.Rename("CN="+textBox_Newname.Text);

Sau khi tạo một kết nối đến đối tượng đó thành công, ta chuyển thuộc tính CN (Common Name) của đối tượng đó thành tên mới

Chức năng thay đổi tên đối tượng

Tính năng dùng để thay đổi vị trí của một đối tượng có thể là User hay Group từ nơi này sang nơi khác

DirectoryEntry eLocation = new DirectoryEntry(textBox_CurrentLocation.Text, Program.username, Program.password);

DirectoryEntry nLocation = new DirectoryEntry("LDAP://hung.lab/" + textBox_NewLocation.Text, Program.username, Program.password); string newName = eLocation.Name; eLocation.MoveTo(nLocation, newName);

Thuộc tính Common Name (CN=) sẽ được ADSI tự bổ sung vào địa chỉ đến.

Để tạo mới một User hoặc Group, cần xác định entry nơi mà đối tượng sẽ được tạo ADSI cung cấp hàm Add() với tham số thứ hai để xác định kiểu đối tượng (Group hoặc User) Hàm Add được gọi thông qua thuộc tính Children của DirectoryEntries.

DirectoryEntry newG = child.Add("CN=" + name, "Group");

DirectoryEntry newU = child.Add("CN=" + name, "User");

Để thêm hoặc xóa người dùng trong danh sách các thành viên của một nhóm, trước tiên bạn cần truy cập vào mục nhập của nhóm đó Sau khi lấy thuộc tính "member" của mục nhập, bạn có thể sử dụng các hàm Add hoặc Remove để điều chỉnh danh sách thành viên.

DirectoryEntry dirEntry = new DirectoryEntry("LDAP://hung.lab/" + textBox_Group.Text, Program.username, Program.password); dirEntry.Properties["member"].Remove(textBox_User.Text); dirEntry.Properties["member"].Add(textBox1.Text);

To report a user and group, first access the domain entry Then, utilize DirectorySearcher to create a filter based on your requirements, allowing you to iterate through all entries and retrieve the desired objects and attributes.

DirectoryEntry Root = new DirectoryEntry("LDAP://" + Program.domainname); DirectorySearcher searchg = new DirectorySearcher(); searchg.SearchRoot = Root; searchg.Filter = "(objectClass=group)"; searchg.SearchScope = SearchScope.Subtree;

SearchResultCollection resultg = searchg.FindAll(); foreach (SearchResult result in resultg) { }

Enable User Đối tượng User trong Active Directory cung cấp cho ta thuộc tính

The Properties["userAccountControl"] attribute is used to manage user account settings, with various values that dictate account behavior For a comprehensive understanding of these values, you can refer to the following link: http://msdn.microsoft.com/en-us/library/windows/desktop/aa772300(v=vs.85).aspx To modify the value, you can assign it as follows.

.Properties["userAccountControl"].Value = ;

Thuộc tính IsAccountLocked, có nguồn gốc từ WinNT, được sử dụng để xác định trạng thái khóa của tài khoản người dùng, với giá trị trả về là 0 nếu tài khoản không bị khóa.

(Nguồn: http://msdn.microsoft.com/en-us/library/windows/desktop/aa746533(v=vs.85).aspx) isUnLock = Convert.ToInt16(newuser.InvokeGet("IsAccountLocked"));

TỰ ĐÁNH GIÁ KẾT QUẢ

Nhờ vào nỗ lực không ngừng và sự hướng dẫn tận tâm của thầy Ninh Xuân Hương, khóa luận đã hoàn thành các mục tiêu quan trọng và cơ bản đã đề ra.

 Hiểu biết được các đặc trưng cơ bản của hai mô hình mạng cơ bản Workgroup và Domain

 Tìm hiểu về khái niệm và kiến trúc cũng như tầm quan trọng của Active Directory trong Hệ điều hành Windows Server

 Giới thiệu ba công cụ cơ bản để quản lý Active Directory, hướng dẫn một số thao tác cấu hình trên ba công cụ trên

 Tìm hiểu phương pháp kết nối Active Directory sử dụng ADSI trong thư viện NET

 Xây dựng thành công công cụ kết nối và liệt kê các đối tượng trong Active Directory, chạy hoàn chỉnh trong môi trường windows server 2003

Nắm vững kiến trúc cơ bản của Drupal là bước đầu tiên quan trọng để phát triển module chức năng cho nền tảng này Bên cạnh đó, việc hiểu quy trình đăng nhập tài khoản người dùng trong Drupal cũng đóng vai trò thiết yếu trong việc quản lý và bảo mật thông tin.

Việc xây dựng công cụ tuy không gặp khó khăn nhưng vẫn còn đơn giản, do thời gian nghiên cứu đề tài khóa luận hạn chế nên phần cơ sở lý thuyết chưa đi sâu Điều này dẫn đến một số khía cạnh mở rộng liên quan chưa được xem xét, tạo ra hướng phát triển tiềm năng cho nghiên cứu trong tương lai.

 Tìm hiểu sâu hơn về năm role trong Active Directory Sự tin tưởng (trust) lẩn nhau của Active Directory trong mô hình nhiều domain

 Ứng dụng viết bằng ADSI chưa đạt như ý tưởng mong muốn Còn nhiều chi tiết chưa cài đặt

 Viết lại module chứng thực User trong Drupal một cách tùy chỉnh và thêm vào các mã hóa bảo mật trong lúc truyền qua LDAP.

Ngày đăng: 12/01/2022, 20:00

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1. Professional C#, 2nd Edition , Xuất bản bởi Wrox Press Ltd Khác
2. Active Directory 2nd Ed 2003, Tác giả O'Reilly Khác
3. The .NET Developer's Guide to Directory Services Programming, Tác Giả Joe Kaplan, Ryan Dunn Khác
4. 70-294 Training Kit Planning, Implementing, and Maintaining a Microsoft Windows Server 2003 Active Directory, Tài liệu của Microsoft Khác
5. Drupal How To For Beginners, phá triển bởi SAP Internation In association with Young Innovations Pvt. Ltd Khác
6. Pro.Drupal.Development, Tác giả John K. VanDyk và Matt Westgate Khác
11. technetvietnam.net _ Người viết Lê Ngọc Kỳ Phong Khác

HÌNH ẢNH LIÊN QUAN

Bảng Từ Viết Tắt - Tìm hiểu về active directory  xây dựng công cụ minh họa trên windows server 2003 khóa luận tốt nghiệp đại học
ng Từ Viết Tắt (Trang 5)
Hình dưới đây miêu tả kiến trúc tổng quan cho vấn đề lập trình tương tác với Active  Directory, nó gồm 2 phần chính - Tìm hiểu về active directory  xây dựng công cụ minh họa trên windows server 2003 khóa luận tốt nghiệp đại học
Hình d ưới đây miêu tả kiến trúc tổng quan cho vấn đề lập trình tương tác với Active Directory, nó gồm 2 phần chính (Trang 32)
Bảng kí hiệu tham số và ý nghĩa [6] - Tìm hiểu về active directory  xây dựng công cụ minh họa trên windows server 2003 khóa luận tốt nghiệp đại học
Bảng k í hiệu tham số và ý nghĩa [6] (Trang 51)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN