LDAP (Lightweight Directory Access Protocol) là một giao thức tầng ứng dụng dùng để truy cập vào dịch vụ thư mục (Directory Services) chạy trên bộ giao thức TCP/IP.
Thư mục là một tập các đối tượng với các thuộc tính được mô tả và tổ chức một cách logic và phân cấp giúp cho việc quản lý và tìm kiếm trở nên dễ dàng và nhanh chóng. Có rất nhiều ví dụ về thư mục như: danh bạ điện thoại, danh mục hàng hóa, Domain Name System…
Tương tự như các giao thức như FTP hay HTTP, LDAP hoạt động theo mô hình client-server. Và đương nhiên nó phải định nghĩa một tập các thông điệp request và response giữa LDAP client và LDAP server. LDAP server có nhiệm vụ tương tác với dữ liệu đã được lưu trữđể trả về cho client.
Hình 26. Hoạt động của giao thức LDAP
Trong mô hình LDAP dữ liệu được lưu trữ dưới dạng một cây thư mục.
Entry là đơn vị cơ bản của thông tin trong thư mục. Mỗi entry chứa một tập các thông tin về một đối tượng.
Mỗi entry có một DN (distinguished name) duy nhất, không trùng với bất kỳ một DN nào khác trong thư mục. Ví dụ trong hình trên DN của tổ chức là dc=example, dc=com. Mỗi entry gồm một tập các thuộc tính (attributes). Mỗi thuộc tính thuộc một loại (type) và chứa một hoặc nhiều giá trị (value).
Schema là một định nghĩa dữ liệu cho thư mục và cách máy chủ và máy khách xử lý các thao tác với thông tin như thế nào (ví dụ như tìm kiếm). Một schema chứa
định nghĩa các loại thuộc tính (OID, tên, cú pháp, luật matching của thuộc tính) và các objectClass.
LDAP Interchange Format (LDIF) là một khuôn dạng tệp văn bản chuẩn để lưu thông tin cấu hình LDAP và nội dung thư mục. Một tệp LDIF gồm:
- Một tập entry tách biệt nhau bởi các dòng trắng - Một ánh xạ tên thuộc tính sang giá trị
- Một tập các chỉ thị cho bộ phân tích cú pháp biết cách xử lý thông tin.
Tệp LDIF thường được dùng để nhập dữ liệu mới vào thư mục hoặc thay đổi dữ
liệu đã tồn tại. Dữ liệu trong LDIF phải tuân theo luật schema của thư mục LDAP. Mỗi mục được thêm hoặc thay đổi trong thư mục sẽđược kiểm tra ngược lại schema. Một schema violation xảy ra nếu dữ liệu không phù hợp với các luật tồn tại.
Hình 2-1 thể hiện một cây thư mục đơn giản. Mỗi entry trong thư mục được biểu diễn bởi một entry trong tệp LDIF. Giả sử với entry trên cùng của cây với DN: dc=plainjoe, dc=org:
# LDIF listing for the entry dn: dc=example,dc=com dn: dc=example,dc=com
objectClass: domain dc: example
So sánh với tổ chức của một filesystem, DN tương tự như một đường dẫn tuyệt
đối, còn RDN (Relative DN) giống như tên file. Nhưng khác với một tên file, RDN có thểđược tạo nên từ nhiều thuộc tính. Ví dụ một RDN đa trị: cn=Jane Smith+ou=Sales, dấu “+” dùng để phân biệt hai thuộc tính.
Thuộc tính và cú pháp thuộc tính tương tự như biến và kiểu biển trong lập trình. Thuộc tính cũng như biến dùng để chưa giá trị. Còn cú pháp thuộc tính hay kiểu biến dùng để xác định loại thông tin nào có thể được lưu trữ trong biến. Thuộc tính khác biến ở chỗ nó có thểđa trị. Khi gán một giá trị mới cho một biến, giá trị cũ bị thay thế. Nhưng khi gán một giá trị mới cho thuộc tính, giá trị đó sẽ được thêm vào danh sách
giá trị của thuộc tính. Một thuộc tính là đa trị hay đơn trị phụ thuộc vào định nghĩa của thuộc tính trong schema của máy chủ.
Matching Rule là các luật để tạo ra các sự so sánh. Ví dụ telephoneNumberMatch dùng để so sánh sự hai sốđiện thoại có khớp nhau hay không.
Object Identifiers (OIDs) là một chuỗi các số ngăn cách nhau bởi dấu chấm (.) dùng để xác định một thực thể duy nhất như thuộc tính, cú pháp, lớp đối tượng.
Tất cả các entry trong một thư mục LDAP phải có một thuộc tính objectClass, và thuộc tính này phải có ít nhất một giá trị (có thể nhiều hơn một). Mỗi giá trị
objectClass đóng vai trò như một khuôn mẫu cho dữ liệu được lưu trong một entry. Nó
định nghĩa một tập các thuộc tính phải và một tập thuộc tính tùy chọn. Thuộc tính phải là thuộc tính cần phải gán cho nó ít nhất một giá trị. Thuộc tính tùy chọn không bắt buộc phải gán giá trị. Hai objectClass có thể có cùng một số thuộc tính.
Định nghĩa objectClass
- Mỗi objectClass có một OID
- Từ khóa MUST chỉ ra một tập các thuộc tính phải
- Từ khóa MAY định nghĩa một tập các thuộc tính tùy chọn.
- Từ khóa SUP chỉ ra objectClass cha, đối tượng mà objectClass này kế thừa. Đối tượng kế thừa có tất cả các thuộc tính của objectClass cha..