2009-02-19 5 views
5

Tôi quan tâm đến các phương pháp hay nhất về sử dụng xác thực LDAP trong ứng dụng web dựa trên Java. Trong ứng dụng của tôi, tôi không muốn lưu trữ tên người dùng \ mật khẩu, chỉ một số id. Nhưng tôi muốn lấy thông tin bổ sung (Tên, Họ) nếu có tồn tại trong danh mục LDAP.Thực tiễn tốt nhất của LDAP

Trả lời

6

Nhóm của tôi sử dụng LDAP làm cách xác thực chuẩn. Về cơ bản, chúng tôi xử lý LDAP như bất kỳ cơ sở dữ liệu nào khác.

Để thêm người dùng vào ứng dụng, bạn phải chọn một người dùng từ LDAP hoặc tạo nó trong LDAP; khi người dùng bị xóa khỏi ứng dụng, nó vẫn nằm trong LDAP nhưng không có quyền truy cập vào ứng dụng.

Về cơ bản, bạn chỉ cần lưu trữ tên người dùng LDAP cục bộ. Bạn có thể đọc dữ liệu LDAP (e-mail, bộ phận vv) từ LDAP mỗi lần hoặc kéo ứng dụng theo một cách nào đó, mặc dù đọc nó từ LDAP có lẽ đơn giản và thông minh hơn vì dữ liệu LDAP có thể thay đổi. Tất nhiên, nếu bạn cần báo cáo hoặc sử dụng dữ liệu LDAP rộng rãi, bạn có thể muốn kéo nó từ LDAP (thủ công hoặc với tác vụ hàng loạt).

Điều thú vị là khi người dùng bị vô hiệu hóa trong LDAP, nó sẽ bị vô hiệu hóa trong tất cả các ứng dụng cùng một lúc; Ngoài ra, người dùng có cùng thông tin đăng nhập trong tất cả các ứng dụng. Trong môi trường doanh nghiệp, với một loạt các ứng dụng nội bộ, đây là một điểm cộng lớn. Không sử dụng LDAP cho người dùng chỉ cho một ứng dụng; không có lợi ích thực sự trong kịch bản đó.

1

Nếu bạn có nhiều ứng dụng dựa trên web và muốn sử dụng xác thực LDAP thì giải pháp đăng nhập một lần được đóng gói sẵn có thể tốt hơn việc tạo xác thực LDAP của riêng bạn. CAS hỗ trợ xác thực LDAP và có thể lấy lại dữ liệu bạn cần cho ứng dụng của mình.

Tại trường đại học của mình, chúng tôi thực sự đã triển khai CAS như một dấu hiệu duy nhất trên máy chủ Active Directory của chúng tôi. Chúng tôi cũng sử dụng CAS để xác thực các ứng dụng J2EE của chúng tôi và đang nghiên cứu sử dụng CAS để xác thực các ứng dụng PHP của chúng tôi.

Chúng tôi sử dụng AD để giữ người dùng cho miền. Có một số OU nhất định dựa trên loại người dùng. Mỗi người dùng có một ID duy nhất là ID sinh viên/nhân viên của họ, vì vậy các ứng dụng có thể sử dụng ID đó làm khóa chính trong cơ sở dữ liệu của họ. Chúng tôi có một phương pháp cấp phép dựa trên cơ sở dữ liệu cho các ứng dụng PHP của chúng tôi. Ủy quyền cho ứng dụng J2EE xuất phát từ một giá trị trong LDAP.

Chúc bạn may mắn với đơn đăng ký của mình.

0

Vì vậy, bạn muốn người dùng chỉ nhập ID và sau đó lấy phần còn lại của thông tin từ LDAP? Điều đó khá dễ dàng.

  1. Tạo bối cảnh LdapInitial và kết nối với LDAP
  2. Thực hiện tìm kiếm cho ID (nó nên được lưu trữ như một số giá trị thuộc tính) - ví dụ (& (userid = john) (objectClass = user)) - có nghĩa là "userid = john VÀ objectClass = user"
  3. đối tượng SearchResult sẽ chứa tất cả các thuộc tính (hoặc những người bạn hỏi)

Một số LDAP triển khai (đáng chú ý là MS ActiveDirectory LDAP) không cho phép bạn kết nối với người dùng ẩn danh. Đối với những người bạn cần phải có một userid/mật khẩu kỹ thuật để kết nối.

Như đã nói ở trên, LDAP thường có ý nghĩa khi bạn có nhiều ứng dụng.

P.S. Để cảm nhận những gì LDAP được thử Apache Directory Studio.

+0

Không hoàn toàn như vậy! Trong cơ sở dữ liệu ứng dụng của tôi, tôi muốn lưu trữ chỉ id và DN liên quan từ LDAP. Và nếu tôi cần thêm thông tin về người dùng, tôi có thể lấy thông tin từ thư mục bằng cách sử dụng DN –

+0

Tùy thuộc vào bạn, mặc dù đó là một sự trùng lặp. Nhưng những gì bạn câu hỏi thực sự? –

4

Để biết các phương pháp hay nhất chung với LDAP, hãy xem "LDAP: Programming practices".

+2

Liên kết đã chết, nhưng có thể tìm thấy bản tóm tắt tại https://ff1959.wordpress.com/2011/10/27/ldap-programming-best-practices/ –