Bài 20: LDAP (Lightweight Directory Access Protocol)

Hiện nay, để  tạo lên các hệ thống lớn, điều tối quan trọng là phải làm cách nào để  không phải là không tích hợp dữ liệu để từ đó  không phải là không dùng chung giữa các hệ thống khác nhau. Trong đó, tích hợp tài khoản của người sử dụng là  việc cần thiết nhất trong những cái "tối quan trọng" trên.

Hãy tưởng tượng một hệ thống với khoảng 5 - 6 mô đun khác nhau, mỗi mô đun lại được thiết kế trên một nền tảng khác nhau (Có ông thì dùng Oracle + AS Portal, có người thì xài DB2 với WebSphere, lão khác thì MySQL với phpnuke, ông thì xài Wíndow, lão thì cài Linux, có thằng giận lại chỉ thích Unix...hic, cuộc đời thật đúng là bể khổ),  vì vậy cần có một hệ thống các thánh khác nhau. Vậy thì với mỗi mô đun, người sử dụng cần có một User Name, một mật khẩu khác nhau, đó là điều chắc chắn không chấp nhận được. người dùng chẳng mấy chốc mà chán ghét hệ thống.

Làm cách nào để  không phải là không tích hợp được người dùng giữa các hệ thống trên? Câu trả lời đó là LDAP.

Vây LDAP là gì?

LDAP - viết tắt của Lightweight Directory Access Protocol, hay dịch ra tiếng Việt có nghĩa là giao thức truy cập nhanh các dịch vụ thư mục.
• Là một giao thức tìm, truy nhập các thông tin dạng thư mục trên server.
• Nó là giao thức dạng Client/Server dùng để truy cập dịch vụ thư mục.
• LDAP chạy trên TCP/IP hoặc các dịch vụ hướng kết nối khác.
• Là một mô hình thông tin cho phép xác định cấu trúc và đặc điểm của thông tin trong thư mục.
• Là một không gian tên cho phép xác định cách các thông tin được tham chiếu và tổ chức
• Một mô hình các thao tác cho phép xác định các tham chiếu và phân bố dữ liệu.
• Là một giao thức m ở rộng
• Là một mô hình thông tin m ở rộng.

Ở đây chúng ta cần tránh hiểu nhầm từ "thư mục" như trên Windows là folder hay directory, đó là thư mục theo nghĩa hẹp để quản lý hệ thống tệp tin. Từ thư mục trong LDAP mang ý nghĩa rộng hơn, nó bao hàm các cấu trúc dữ liệu dạng liệt kê theo thư mục (hay mục lục) - một "từ khoá" của dân thư viện nhằm ám chỉ cách thức sắp xếp dữ liệu để tiện truy xuất nhất.

Làm việc với LDAP thông qua PHP

Trình tự cơ bản khi có thao tác với LDAP gồm các bước
• Connect (kết nối với LDAP)
• Bind (kiểu kết nối: nặc danh hoặc đăng nhập xác thực)
• Search (tìm kiếm)
• Interpret search (xử lý tìm kiếm)
• Result (kết quả)
• Close connection (đóng kết nối)

Ldap_connect():
hàm kết nối tới máy chủ LDAP, hàm này có 2 tham số: hostname (tên máy chủ LDAP) và port (cổng kết nối, mặc định là cổng 389)
Ldap_connect(string hostname, int port);


PHP Code:
<?php

// LDAP variables
$ldaphost = "ldap.example.com";  // your ldap servers
$ldapport = 389;                 // your ldap server's port number

// Connecting to LDAP
$ldapconn = ldap_connect($ldaphost, $ldapport)
         or die(" không kết nối được đến $ldaphost");

?>
Ldap_bind();
Hàm nối kết với server LDAP để  không phải là không thao tác với LDAP
Vd kết nối với LDAP server bằng user và password hợp lệ


PHP Code:
<?php

// using ldap bind
$ldaprdn  = 'uname';     // ldap rdn or dn
$ldappass = 'password';  // associated password

// connect to ldap server
$ldapconn = ldap_connect("ldap.example.com")
   or die("Could not connect to LDAP server.");

if ($ldapconn) {

   // binding to ldap server
   $ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);

   // verify binding
   if ($ldapbind) {
       echo "LDAP bind successful...";
   } else {
       echo "LDAP bind failed...";
   }

}

?>
Nếu kết nối bằng quyền anonymously


<?php

//using ldap bind anonymously

// connect to ldap server
$ldapconn = ldap_connect("ldap.example.com")
or die("Could not connect to LDAP server.");

if ($ldapconn) {

// binding anonymously
$ldapbind = ldap_bind($ldapconn);

if ($ldapbind) {
echo "LDAP bind anonymous successful...";
} else {
echo "LDAP bind anonymous failed...";
}

}

?>
ldap_search();
PHP Code:
ldap_search ( resource link_identifier, string base_dn, string filter [, array attributes [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]] )
VD tìm kiếm các thông tin của mọi mọi người ở trong “My Company” nơi surname hoặc given name chứa trong biến $person. giả sử này yêu cầu server tìm ra thông tin của rất nhiều hơn một thuộc tính cần tìm kiếm.


<?php
// $ds is a valid url identifier for a directory server

// $person is all or part of a person's name, eg "Jo"

$dn = "o=My Company, c=US";
$filter="(|(sn=$person*)(givenname=$person*))";
$justthese = array("ou", "sn", "givenname", "mail");

$sr=ldap_search($ds, $dn, $filter, $justthese);

$info = ldap_get_entries($ds, $sr);

echo $info["count"]." entries returned\n";
?>
Ldap_close();

Hàm đóng kết nối với LDAP, hàm này tương đương với ldap_unbind();
PHP Code:
bool ldap_unbind ( resource link_identifier );
Nếu kết nối đóng đạt được sẽ trả về giá trị TRUE, ngược lại là FALSE.
Share on Google Plus

About Unknown

This is a short description in the author block about the author. You edit it by entering text in the "Biographical Info" field in the user admin panel.
    Blogger Comment
    Facebook Comment

0 nhận xét:

Đăng nhận xét