Tiêu chuẩn giao thức đi một chặng đường dài để thúc đẩy khả năng tương tác. Trong khi giản đồ cho đại diện cho một giới thiệu LDAP có thể khác nhau từ nhà cung cấp để bán, phương thức trở về thông tin giới thiệu cho các khách hàng được định nghĩa như là một phần của lõi LDAPv3 giao thức. Điều này có nghĩa rằng các máy chủ LDAP từ các nhà cung cấp có thể được liên kết thành một duy nhất, hợp lý, phân phối thư mục.
Nhưng tại sao đi qua tất cả những rắc rối của việc xây dựng một thư mục multivendor? Tại sao không giải quyết về một đại lý LDAP duy nhất, những người đã không có nghi ngờ làm cho nó dễ dàng để xây dựng thư mục phân phối bằng cách phát triển lược đồ đại diện cho giới thiệu và giải quyết các vấn đề khác mà không phải là địa chỉ của các tiêu chuẩn? Và, như tôi đã nói ở nơi khác, chúng ta không nên sử dụng công nghệ chỉ vì họ đang có; Nếu LDAP không làm cho cuộc sống dễ dàng hơn đối với chúng tôi như là quản trị viên, và cho sử dụng hệ thống của chúng tôi, có rất ít chỉ đi qua các nỗ lực của việc thiết lập một thư mục LDAP ở tất cả, hãy cho mình một thư mục, phân phối multivendor.
Tuy nhiên, sớm hay muộn một thư mục đơn-người bán hàng sẽ buộc bạn phải đưa ra quyết định rằng bạn đang khó chịu với. Giả sử rằng bạn đang thêm một máy chủ ứng dụng mới, chẳng hạn như một hệ thống calendaring, tại trang web của bạn. Hệ phục vụ này được ủng hộ bởi một thư mục LDAP và đòi hỏi một số giao thức tiện ích mở rộng từ thư mục. Đương nhiên, nhà cung cấp đã thử nghiệm các máy chủ ứng dụng với một máy chủ LDAP cụ thể trong tâm trí-có lẽ các nhà bán thậm chí bán một sản phẩm LDAP (trong đó, tất nhiên, là bảo đảm để làm việc với các máy chủ lịch). Nhưng như số phận sẽ có nó, bạn đã đầu tư rất nhiều thời gian và công sức trong việc xây dựng một thư mục LDAP, và các máy chủ thư mục hỗ trợ máy chủ lịch không phải máy chủ thư mục bạn đã dành rất nhiều nỗ lực triển khai. Trong trường hợp này, có ba giải pháp có thể:
Bỏ máy chủ lịch, kể từ khi nó không được hỗ trợ bởi máy chủ LDAP hiện có của bạn. Tuy nhiên, bạn đang rất có thể cài đặt máy chủ vì quản lý muốn bạn làm như vậy; nói rằng không có lẽ không phải là một lựa chọn.
liên quan đến ném ra tất cả công việc bạn đã làm việc của bạn đang chạy dịch vụ thư mục- nhưng bạn sẽ phải làm lại rất nhiều nó. Và những gì sẽ xảy ra sau khi bạn đang nói với để cài đặt một ứng dụng mà nói đến một máy chủ LDAP? Nó sẽ được tương thích với các máy chủ bạn đã cài đặt vì lợi ích của các dịch vụ lịch? Đó là rõ ràng rằng điều này là không thực sự một tùy chọn, trừ khi bạn muốn chi tiêu của bạn sự nghiệp chơi "máy chủ âm nhạc."
Cài đặt một máy chủ LDAP mới có hỗ trợ ứng dụng lịch và bao gồm nó như là một subtree của khuôn khổ thư mục hiện có của bạn.
Tùy chọn cuối cùng là thực sự lựa chọn duy nhất mà làm cho tinh thần. Nó cho phép bạn để tăng thêm, chứ không phải là thay thế, cơ sở hạ tầng thư mục bạn đã đã xây dựng. Hơn nữa, sớm hay muộn bạn sẽ bị buộc phải kết hợp khác nhau hệ phục vụ LDAP vào mạng của bạn. Mục đích của tiêu chuẩn hóa là để cho phép khách hàng được phát triển bởi một công ty để truy cập máy chủ phát triển của người khác; và ngay cả khi điều này hiện nay là một mục tiêu chứ không phải là một thực tế, cuộc sống của bạn sẽ dễ dàng hơn nếu bạn làm việc với mục tiêu này trong tâm trí.
Việc bổ sung một người bán hàng mới, phụ thuộc, ứng dụng cho phép LDAP tăng một câu hỏi quan trọng: làm thế nào là giải pháp này bất kỳ khác với vô số các ứng dụng cụ thể thư mục của quá khứ? Sự khác biệt ở đây là là một giao thức truy cập duy nhất cho tất cả khách hàng và các công cụ hành chính. Giao thức LDAP là yếu tố thống nhất. Trong khi bạn vẫn còn có các ứng dụng mà có thể nói chuyện chỉ với máy chủ của một nhà cung cấp cụ thể, giao thức LDAP phổ biến cho phép bạn tích hợp máy chủ LDAP đó với các máy chủ khác trên mạng.
Phần còn lại của phần này khám phá giải pháp này bằng cách trình bày một kịch bản mà một máy chủ OpenLDAP được kết nối với tiến trình cài đặt Active Directory. Mục đích là để tạo ra một thư mục ảo trong đó người dùng có thể tìm kiếm một mục nhập bất cứ nơi nào của câu một trong dịch vụ thư mục, mà không liên quan cho thư mục đó chứa thông tin. Hình 9-6 cho thấy những gì chúng tôi đang cố gắng để đạt được.
Đối với tập thể dục này, bạn có thể giả định các dữ kiện sau đây:
Hoạt OpenLDAP đã được cấu hình với bối cảnh đặt tên dc = plainjoe, dc = org trên máy chủ ldap.plainjoe.org.
Một tên miền Active Directory đã được tạo ra cho DNS tên miền ad.plainjoe.org. Vì vậy, các dịch vụ hoạt động thư mục LDAP sẽ có một bối cảnh đặt tên của dc = quảng cáo, dc = plainjoe, dc = org.
Bạn cần phải thêm hai kiến thức tham chiếu đến hệ thống này. Lần đầu tiên sẽ chỉ khỏi dịch vụ hoạt động đến máy chủ OpenLDAP; Thứ hai sẽ tham khảo khách hàng tìm kiếm trong thư mục OpenLDAP miền Active Directory.
ADSI chỉnh sửa MMC snap-in là cần thiết để thêm một giới thiệu LDAP vào Active Directory. Tiện ích cấp thấp, duyệt thư mục này được bao gồm trong \SUPPORT\TOOLS trong Windows 2000 Advanced Server CD. Một khi các công cụ hỗ trợ đã được cài đặt (sử dụng setup.exe), ADSI chỉnh sửa biểu tượng sẽ xuất hiện trong Menu bắt đầu (bắt đầu chương trình Windows 2000 hỗ trợ Tools công cụ ADSI sửa).
cn = phân vùng, cn = Configuration, dc = quảng cáo, dc = plainjoe, dc = org container. Mục nhập thư mục này là gốc cho tất cả các mục có giới thiệu đến tên miền con trong một cây thư mục hoạt động, cũng như bên ngoài giới thiệu một cách rõ ràng được gửi bởi người quản trị. Sau khi tung ra các công cụ chỉnh sửa ADSI và điều hướng các container phân vùng, như minh họa trong hình 9-7, tạo một đối tượng crossRef mới bằng cách nhấp chuột phải trong danh sách hiện có mục và chọn các đối tượng mới... biến từ trình đơn ngữ cảnh.
Hình 9-7. Việc tạo ra một đối tượng crossRef mới trong các thùng chứa phân vùng của một tên miền Active Directory
Một thuật sĩ tạo đối tượng giúp điền vào các thông tin cho các đối tượng lớp thuộc tính bắt buộc. LDIF trích đoạn sau đây cho thấy những gì bạn đang cố gắng để thực hiện: bạn cần phải thêm một nút đặt tên OpenLDAP với một thuộc tính nCName có giá trị dc = plainjoe, dc = org, và một thuộc tính dnsRoot có ldap.plainjoe.org giá trị:
dn: cn=OpenLDAP,cn=Partitions,dc=Configuration,dc=ad,dc=plainjoe,dc=org cn: OpenLDAP
nCName: dc=plainjoe,dc=org dnsRoot: ldap.plainjoe.org
ldap://ldap.plainjoe.org/dc=plainjoe,dc=org cho khách hàng để đáp ứng với một tìm kiếm LDAP.
Sau đó, một tham chiếu kiến thức tương ứng phải được thêm vào máy chủ OpenLDAP. Tham chiếu này phải trỏ đến tên miền Active Directory. LDIF trích đoạn sau đây cho thấy tài liệu tham khảo bạn cần phải thêm vào máy chủ OpenLDAP:
dn: dc=ad,dc=plainjoe,dc=org objectclass: referral
objectclass: dcObject
ref: ldap://ad.plainjoe.org/dc=ad,dc=plainjoe,dc=org
dc: adBạn có thể sử dụng ldapadd để thêm mục này. Giả định rằng mã LDIF là trong tập tin quảng cáo-referral.ldif, lệnh sẽ làm các trick:
$ ldapadd -D "cn=Manager,dc=plainjoe,dc=org" -w secret -x \ -H ldap://ldap.plainjoe.org/ -f ad-referral.ldif
Các thuộc tính ref trong mục nhập mới đòi hỏi rằng tên DNS ad.plainjoe.org giải quyết lên bộ kiểm soát miền trong miền Active Directory. Giai cấp đối tượng phụ dcObject được bao gồm trong số ước và do một sự lựa chọn các thuộc tính RDN cho các mục nhập.
Hai thư mục được bây giờ liên kết trong đó một cách mà một truy vấn LDAP gửi đến một thư mục có thể xác định vị trí dữ liệu được lưu trong thư mục khác. Để thử nghiệm này, bắt đầu bằng cách gửi một tìm kiếm vô danh để một bộ điều khiển vùng Active Directory và tìm kiếm dữ liệu được lưu trữ trong OpenLDAP. Để thực hiện việc này, sử dụng OpenLDAP của ldapsearch lệnh:
-b "ou=people,dc=plainjoe,dc=org" -LLL "(uid=jerry)"
Referral (10)
Additional information: 0000202B: RefErr: DSID-031005EE, data 0, 1 access points ref 1: 'ldap.plainjoe.org'
Bạn nhận được một giới thiệu từ các máy chủ Active Directory, nhưng bạn không nhận được bất kỳ kết quả thực tế: tìm kiếm này không làm theo giới thiệu. Để xem các kết quả thực tế, bạn có thể thực hiện việc tìm kiếm tương tự, nhưng sử dụng tùy chọn - C hướng dẫn khách hàng LDAP thư viện để thực hiện theo giới thiệu và in ra kết quả cuối cùng:
$ ldapsearch -h ad.plainjoe.org -x -C \ -b "ou=people,dc=plainjoe,dc=org" -LLL "(uid=jerry)" dn: cn=Gerald Carter,ou=people,dc=plainjoe,dc=org objectClass: posixAccount objectClass: account objectClass: sambaAccount cn: Gerald Carter uidNumber: 780 uid: jerry gidNumber: 100 homeDirectory: /home/queso/jerry loginShell: /bin/bash rid: 2560 acctFlags: [UX ] pwdLastSet: 1018451245
Điều gì về làm một tìm kiếm mà đi theo một hướng khác? Bạn có thể gửi một tìm kiếm để OpenLDAP tìm kiếm dữ liệu được lưu trong thư mục hoạt động? Câu trả lời là có, nhưng với cùng một caveat được đề cập đến khi sử dụng pam_ldap để xác nhận dịch vụ đối với một tên miền Active Directory. Theo mặc định, thư mục hoạt động không hỗ trợ tìm kiếm bằng cách sử dụng một ràng buộc vô danh, ngoại trừ rootDSE của nó. Vì vậy, một nỗ lực để xác định vị trí người dùng tên là kristi miền Active Directory mà không sử dụng một số chứng chỉ hợp lệ trong ràng buộc sẽ trở lại chỉ là một giới thiệu đến máy chủ Active Directory chính nó. Tên đăng nhập trong Active Directory đang được lưu trữ trong các thuộc tính sAMAccountName.
$ ldapsearch -x -H ldap://ldap.plainjoe.org/ \
-b "dc=ad,dc=plainjoe,dc=org" -LLL -C "(sAMAccountName=kristi)"
# refldap://ad.plainjoe.org/CN=Configuration,DC=ad,DC=plainjoe,DC=org
Giới thiệu này được trả về bởi các máy chủ Active Directory chính nó bởi vì bạn đã không cung cấp chứng chỉ hợp lệ cho việc tìm kiếm sâu hơn trong cây thư mục. Nếu bạn muốn thuyết phục bản thân rằng máy chủ OpenLDAP là trở lại giới thiệu đúng, chỉ cần chạy lại tìm kiếm mà không có đối số - C:
$ ldapsearch -H ldap://ldap.plainjoe.org/ -x \ -b "dc=ad,dc=plainjoe,dc=org" -LLL "(sAMAccountName=kristi)" Referral (10) Matched DN: dc=ad,dc=plainjoe,dc=org Referral: ldap://ad.plainjoe.org/dc=ad,dc=plainjoe,dc=org??sub
Tìm kiếm Active Directory đầy đủ, bạn phải sử dụng một số loại tin tưởng cơ chế (ví dụ như, Kerberos cross-lĩnh vực tín) hoặc đơn-signon giải pháp giữa hai máy chủ LDAP, hoặc cho phép tìm kiếm vô danh của những phần của DIT thư mục hoạt động. Kể từ khi tìm kiếm vô danh của Active Directory đã được bao phủ trong phần 9,3, tôi sẽ vào lại chủ đề đó ở đây.