Tải bản đầy đủ (.docx) (14 trang)

Tìm hiểu về LDAP (Lightweight Directory Access Protocol)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (758.52 KB, 14 trang )

ĐỀ TÀI: TÌM HIỂU VỀ LDAP
HÀ NỘI, 01/2024

TÌM HIỂU VỀ LDAP

I. Giới thiệu về LDAP:

1. Các khái niệm cơ bản:

- Thư mục (Directory): là nơi dùng để chứa và cho phép thực hiện các thao

tác truy xuất thông tin.

- LDAP:

+ LDAP (Lightweight Directory Access Protocol) là một chuẩn mở rộng cho
giao thức truy cập thư mục, hay là một ngôn ngữ để LDAP client và severs sử
dụng để giao tiếp với nhau.

+ LDAP là một giao thức “lightweight” có nghĩa là đây là một giao thức có
tính hiệu quả, đơn giản và dễ dàng để cài đặt. trong khi chúng sử dụng các hàm ở
mức cao. Điều này trái ngược với giao thức “heavyweight” như là giao thức truy
cập thư mục X.500 (DAP). Giao thức này sử dụng các phương thức mã hoá quá
phức tạp.

+ LDAP sử dụng các tập các phương thức đơn giản và là một giao thức
thuộc tầng ứng dụng.

Ngồi vai trị như là một thủ tục mạng, LDAP cịn định nghĩa ra bốn mơ
hình, các mơ hình này cho phép linh động trong việc sắp đặt các thư mục:


- Mơ hình LDAP Information - định nghĩa ra các loại dữ liệu mà bạn cần đặt
vào thư mục.

- Mơ hình LDAP Naming - định nghĩa ra cách bạn sắp xếp và tham chiếu
đến thư mục.

- Mô hình LDAP Functional - định nghĩa cách mà bạn truy cập và cập nhật
thông tin trong thư mục của bạn.

- Mơ hình LDAP Security - định nghĩa ra cách thông tin trong trong thư mục
của bạn được bảo vệ tránh các truy cập không được phép.

Ngồi các mơ hình ra LDAP cịn định nghĩa ra khuôn dạng để trao đổi dữ
liệu LDIF (LDAP Data Interchange Format), ở dạng thức văn bản dùng để mô tả
thông tin về thư mục. LDIF cịn có thể mơ tả một tập hợp các thư mục hay các cập
nhật có thể được áp dụng trên thư mục.

II. Phương thức hoạt động của LDAP:
1. Một giao thức client/sever:
- Là một mơ hình giao thức giữa một chương trình client chạy trên một máy

tính gởi một yêu cầu qua mạng đến cho một máy tính khác đang chạy một chương
trình sever (phục vụ), chương trình này nhận lấy yêu cầu và thực hiện sau đó nó trả
lại kết quả cho chương trình client. Ví dụ những giao thức client/server khác là
giao thức truyền siêu văn bản (Hypertext transfer protocol) viết tắt là HTTP, giao
thức này có những ứng dụng rộng rãi phục vụ những trang web và giao thức
Internet Message Access Protocol (IMAP), là một giao thức sử dụng để truy cập
đến các thư thông báo điện tử.

2. LDAP Là một giao thức hướng thông điệp:

- Do client và sever giao tiếp thông qua các thông điệp, Client tạo một thông
điệp (LDAP message) chứa yêu cầu và gởi nó đến cho server. Server nhận được
thông điệp và sử lý yêu cầu của client sau đó gởi trả cho client cũng bằng một
thơng điệp LDAP.

Ví dụ: khi LDAP client muốn tìm kiếm trên thư mục, client tạo LDAP tìm
kiếm và gởi thơng điệp cho server. Sever tìm trong cơ sở dữ liệu và gởi kết quả cho
client trong một thông điệp LDAP.

Hình 1: Thao tác tìm kiếm cơ bản
Nếu client tìm kiếm thư mục và nhiều kết quả được tìm thấy, thì các kết
quả này được gởi đến client bằng nhiều thông điệp.

Hình 2: Những thơng điệp Client gửi cho Server
Do giao thức LDAP là giao thức thông điệp nên, client được phép phát ra
nhiều thông điệp yêu cầu đồng thời cùng một lúc. Trong LDAP, message ID dùng
để phân biệt các yêu cầu của client và kết quả trả về của server.

Hình 3: Nhiều kết quả tìm kiếm được trả về
3. Các thao tác của giao thức LDAP:
LDAP có 9 thao tác cơ bản, chia thành 3 nhóm thao tác chính:
- Thao tác thẩm tra (interrogation): search, compare. Hai thao tác này cho
phép chúng ta thực hiện thẩm tra trên thư mục.
- Thao tác cập nhật (update): add, delete, modify, modify DN (rename).
Những thao tác này cho phép chúng ta thực hiện cập nhật thông tin trên thư mục.
- Thao tác xác thực và điều kiển (authentiaction and control): bind, unbind,
abandon. Thao tác bind cho phép client tự xác định được mình với thư mục, thao
tác này cung cấp sự xác nhận và xác thực chứng thư; unbind cho phép client huỷ
bỏ phân đoạn làm việc hiện hành; và cuối cùng là thao tác abandon cho phép client
chỉ ra các thao tác mà kết quả client khơng cịn quan tâm đến nữa.

4. Mơ hình kết nối Client – Server:

Sau đây là một là một tiến trình hoạt động trao đổi giữa LDAP client/
server:

Hình 4: Mơ hình kết nối giữa client và server
LDAP client và server thực hiện theo các bước sau:

1. Client mở một kết nối TCP đến LDAP server và thực hiện một thao tác
bind. Thao tác bind bao gồm tên của một directory entry, và uỷ nhiệm thư sẽ được
sử dụng trong q trình xác thực, uỷ nhiệm thư thơng thường là pasword nhưng
cũng có thể là chứng chỉ điện tử dùng để xác thực client.

2. Sau khi thư mục có được sự xác định của thao tác bind, kết quả của thao
tác bind được trả về cho client.

3. Client phát ra các yêu cầu tìm kiếm.

4. Server thực hiện sử lý và trả về kết quả cho client. Server thực hiện sử lý
và trả về kết quả cho client. Server gởi thơng điệp kết thúc việc tìm kiếm.

5. Client phát ra yêu cầu unbind, với yêu cầu này server biết rằng client
muốn huỷ bỏ kết nối.

6. Server đóng kết nối.

III. Các mơ hình LDAP:
LDAP định nghĩa ra 4 mơ hình gồm có LDAP informmation, LDAP
Naming, LDAP Functional, LDAP Security.


1. LDAP Information Model:

Mơ hình LDAP Information định nghĩa ra các kiểu của dữ liệu và các thành
phần cơ bản của thơng tin mà bạn có thể chứa trong thư mục. Hay chúng ta có thể
nói rằng LDAP Information mô tả cách xây dựng ra các khối dữ liệu mà chúng ta
có thể sử dụng để tạo ra thư mục.

Thành phần cơ bản của thông tin trong một thư mục gọi là entry đây là một
tập hợp chứa các thơng tin về đối tượng (Object). Thường thì các thơng tin trong
một entry mô tả một đối tượng thật như là thông tin về người, nhưng đây không
phải là qui định bắt buộc với mơ hình. Ví dụ như trên thư mục dưới đây.

Hình 5: Cây thư mục với các entry là các thành phần cơ bản

LDAP Data Interchange Format (LDIF):

- LDAP định nghĩa ra LDIF là dạng văn bản để mô tả thơng tin thư mục.
LDIF có thể mơ tả một tập hợp các entry thư mục hay là tập hợp các cập nhật lên
thư mục dữ liệu của các thư mục có thể trao đổi cho nhau bằng cách dùng LDIF

- Một entry thư mục ở dang LDIF:

dn:uid=bjensen,dc=airius,dc=com objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
cn: Barbara Jensen
cn: Babs Jensen
sn: Jensen


mail:
telephoneNumber:+14085551212
description: A big sailing fan.
2. LDAP Naming Model:
Mơ hình LDAP Naming định nghĩa ra cách để chúng ta có thể sắp xếp và
tham chiếu đến dữ liệu của mình. Hay chúng ta có thể nói rằng mơ hình này mơ tả
cách sắp xếp các entry của chúng vào một cấu trúc có logical, và mơ hình LDAP
Naming chỉ ra cách để chúng ta có thể tham chiếu đến bất kỳ một entry thư mục
nào nằm trong cấu trúc đó.
Mơ hình LDAP Naming cho phép chúng ta có thể đặt dữ liệu vào thư mục
theo cách mà chúng ta có thể dễ dàng quản lý nhất. Ví dụ như chúng ta có thể tạo
ra một container (khái niệm vật thể chứa đựng) chứa tất cả các entry mô tả người
trong một tổ chức, và một container chứa tất cả các group của bạn, hoặc bạn có thể
thiết kế entry theo mơ hình phân cấp theo cấu trúc tổ chức của bạn. Việc thiết kế
tốt cần phải có những nghiên cứu thoả đáng.

Hình 6: Cây thư mục LDAP

Hình 7: Một phần thư mục LDAP với các entry chứa thông tin.

3. Mơ hình LDAP Function:
Mơ hình LDAP Functional chứa một tập các thao tác chia thành 3 nhóm.
Thao tác thẩm tra (interrogation) cho phép bạn có thể search trên thư mục và nhận
dữ liệu từ thư mục. Thao tác cập nhật (update): add, delete, rename và thay đổi các
entry thư mục. Thao tác xác thực và điều khiển (authentiaction and control) cho
phép client xác định mình đến cho thư mục và điều kiển các hoạt động của phiên
kết nối. Với version 3 giao thức LDAP ngoài 3 nhóm thao tác trên, cịn có thao tác
LDAP extended, thao tác này cho phép giao thức LDAP sau này có thể mở rộng
một cách có tổ chức và khơng làm thay đổi đến giao thức.


4. Mơ hình LDAP Security:
Vấn đề cuối cùng trong các mô hình LDAP là việc bảo vệ thơng tin trong
thư mục khỏi các truy cập không được phép. Khi thực hiện thao tác bind dưới một
tên DN hay có thể client một người vơ danh thì với mỗi user có một số quyền thao
tác trên entry thư mục. Và những quyền nào được entry chấp nhận tất cả những
điều trên gọi là truy cập điều kiển (access control). Hiện nay LDAP chưa định
nghĩa ra một mơ hình Access Control, các điều kiển truy cập này được thiết lập bởi
các nhà quản trị hệ thống bằng các server software.

IV. Sử dụng LDAP:
1. Ứng dụng xác thực dùng LDAP:
Dùng LDAP xác thực một user đăng nhập vào một hệ thống qua chương

trình thẩm tra, chương trình thực hiện như sau đầu tiên chương trình thẩm tra tạo ra
một đại diện để xác thực với LDAP thông qua (1) sau đó so sánh mật khẩu của
user A với thông tin chứa trong thư mục. Nếu so sánh thành cơng thì user A đã xác
thực thành cơng.

Hình 8: Xác thực dùng LDAP

- Xác thực người dùng khơng định danh (Anonymous Authentication): là q
trình đăng nhập vào thư mục mà không yêu cầu cung cấp tên đăng nhập và mật
khẩu. Đây là một phương pháp đăng nhập phổ biến và thường được sử dụng trong
các ứng dụng client.

- Xác thực người dùng cơ bản (Simple Authentication): tên đăng nhập trong
DN được gửi cùng với mật khẩu dưới dạng văn bản thường (clear text) đến máy
chủ LDAP. Sau đó, máy chủ LDAP sẽ kiểm tra mật khẩu bằng cách so sánh nó với
giá trị thuộc tính userPassword hoặc với các giá trị thuộc tính được định nghĩa
trước đó trong entry cho DN tương ứng.


Khi mật khẩu được lưu dưới dạng hàm băm (mã hoá), máy chủ LDAP sẽ sử
dụng hàm băm tương ứng để biến đổi mật khẩu mà người dùng cung cấp và sau đó
so sánh giá trị này với giá trị mật khẩu đã được mã hoá từ trước.

Nếu cả hai mật khẩu trùng nhau, quá trình xác thực của client sẽ thành cơng.
Đối với xác thực thông qua SSL/TLS: LDAP sẽ thực hiện việc mã hoá dữ liệu
trước khi bất kỳ kết nối nào được thiết lập. Điều này đảm bảo rằng tất cả thông tin
của người dùng sẽ được bảo vệ ít nhất trong suốt phiên làm việc đó.

2. Một số ứng dụng sử dụng giao thức LDAP:
Một chương trình mail có thể thực hiện dùng chứng chỉ điện tử chứa trong

thư mục trên server LDAP để ký, bằng cách gởi yêu cầu tìm kiếm cho LDAP

server , LDAP server gởi lại cho client chứng chỉ điện tử của nó sau đó chương

trình mail dùng chứng chỉ điện tử để ký và gởi cho Message sever. Nhưng ở góc độ

người dùng thì tất cả quá trình trên đều hoạt động một cách tự động và người dùng

không phải quan tâm.

Hình 9: Mơ hình đơn giản lưu trữ
Message server có thể sử dụng LDAP directory để thực hiện kiểm tra các
mail. Khi một mail đến từ một địa chỉ, messeage server tìm kiếm địa chỉ email
trong thư mục trên LDAP server lúc này Message server biết được hợp thư người
sử dụng có tồn tại và nhận thư.

Hình 10: Dùng LDAP để quản lý thư


V. Demo xác thực LDAP:

Cài đặt các môi trường:
- Hệ điều hành: Ubuntu 20.04
- Java Development Kit (JDK): OpenJDK 11
- Keycloak: Keycloak 19.0.3
- OpenLDAP
- Apache Directory Studio: để quản lý OpenLDAP
- Python: python 3.10

Sau khi cấu hình xong mơi trường ta truy cập vào trang web:

=> Xác thực thành công


×