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. Ngoà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. Ngoà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.
Trang 1ĐỀ TÀI: TÌM HIỂU VỀ LDAP
HÀ NỘI, 01/2024
Trang 2TÌM HIỂU VỀ LDAP
I Giới thiệu về LDAP:
- 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
Ngoà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
Trang 3- 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
Ngoà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
Trang 4Hì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
Trang 5Hì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:
Trang 61 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 quá 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
Trang 7Hì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
Trang 8mail:bjens e n@airius.c o m 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.
Trang 93 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
Trang 10Hình 8: Xác thực dùng LDAP
- Xác thực người dùng không định danh (Anonymous Authentication): là quá
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
Trang 11Hì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ư
Trang 12V 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
Trang 13Sau khi cấu hình xong môi trường ta truy cập vào trang web:
Trang 14=> Xác thực thành công