Tôi đang cố gắng sử dụng thư viện được Novell phát hành (Novell.Directory.Ldap). Phiên bản 2.1.10.Novell LDAP C# - Novell.Directory.Ldap - Có ai đã làm cho nó hoạt động không?
Những gì tôi đã làm như vậy cho đến nay:
Tôi đã thử nghiệm kết nối với một ứng dụng (LdapBrowser) và nó làm việc, vì vậy không phải là một vấn đề thông tin liên lạc của nó.
Nó được biên dịch trong Mono, nhưng tôi đang làm việc với Visual Studio. Vì vậy, tạo ra một dự án với các nguồn. Tôi cũng bao gồm một tham chiếu đến Mono.Security, bởi vì dự án phụ thuộc vào nó.
Tôi đã nhận xét một cuộc gọi (freeWriteSemaphore (semId);) trong lỗi bắt một phần của kết nối, bởi vì nó đã ném nhiều ngoại lệ hơn. Tôi đã kiểm tra những gì mà cuộc gọi đã làm, và nó chỉ là một cơ chế truy tìm lỗi.
Tôi đã làm theo các bước cơ bản được cung cấp trong tài liệu của Novell (http://www.novell.com/coolsolutions/feature/11204.html).
// Tạo một thể hiện LdapConnection
LdapConnection ldapConn = new LdapConnection(); ldapConn.SecureSocketLayer = ldapPort == 636;
// Kết nối chức năng sẽ tạo ra một kết nối ổ cắm với máy chủ
ldapConn.Connect (ldapHost, ldapPort);
// chức năng Bind sẽ Bind Credentials đối tượng người dùng với máy chủ
ldapConn.Bind (userDN, userPasswd);
Hiện tại, tính năng này đang gặp sự cố tại hàm Bind(). Tôi gặp lỗi 91.
Vì vậy, có ai đó từng sử dụng thư viện này và thấy nó hoạt động không? Nếu vậy, bạn đã làm gì để làm cho nó hoạt động, có một số cấu hình đặc biệt cần thiết không? Có cách nào để làm cho nó hoạt động trong môi trường .NET mà không có Mono (Tôi có thể có tham chiếu đến Mono dlls, nhưng tôi không muốn nó được cài đặt trên máy chủ)?
(CẬP NHẬT) Kết nối nằm trên cổng 636, do đó sử dụng SSL. Tôi đã kiểm tra với WireShark thông tin liên lạc và so sánh với những gì tôi nhận được từ Trình duyệt LDAP. Tôi đã thấy rằng bước mà SSL certicate được truyền đạt, không được thực hiện bởi thư viện LDAP. Vì vậy, cách tốt nhất để làm cho nó làm những gì nó phải?
(CẬP NHẬT) Tôi đã kiểm tra tài liệu và cho biết tài liệu không hỗ trợ SSL. http://www.novell.com/coolsolutions/feature/11204.html
Xác thực với máy chủ LDAP bằng LdapConnection.Bind(). Chúng tôi chỉ hỗ trợ xác thực bằng văn bản. Hỗ trợ SSL/TLS chưa được thêm.
Nhưng ngày tài liệu từ năm 2004 và kể từ đó, nhiều cập nhật đã được thực hiện. Và có một tham số trong thư viện để xác định xem kết nối có sử dụng SSL hay không. Vì vậy, bây giờ tôi đang bối rối.
(CẬP NHẬT) Tìm thấy tài liệu cập nhật hơn: http://developer.novell.com/documentation//ldapcsharp/index.html?page=/documentation//ldapcsharp/cnet/data/bqwa5p0.html. Cách kết nối SSL được thực hiện, là bằng cách đăng ký chứng chỉ trên máy chủ. Vấn đề là những gì tôi đang làm không bị ràng buộc với một máy chủ Novell cụ thể, vì vậy chứng chỉ phải được lấy động.
Cách thông thường để làm việc SSL là lấy khóa công khai của CA vào tương đương với kho khóa Java (Thường là cây CA). Dunno những gì có nghĩa là trong C# mặc dù. Một khi bạn đã có nó thì tất cả các chứng chỉ máy chủ được ký bởi CA đó sẽ hoạt động. Vì vậy, bạn sẽ cần một cây cho mỗi cây. – geoffc