我正在尝试使用Novell发布的库(Novell.Directory.Ldap)。版本2.1.10。Novell LDAP C# - Novell.Directory.Ldap - 有人让它工作吗?
什么我迄今所做的:
我测试与应用(LdapBrowser)的连接,它的工作,所以它不是一个沟通的问题。
它在Mono中编译,但我正在使用Visual Studio。因此创建了一个包含源代码的项目。我还引用了Mono.Security,因为该项目取决于它。
我在连接的错误捕获部分中评论了一个调用(freeWriteSemaphore(semId);),因为它抛出了更多的异常。我检查了这个调用做了什么,它只是一个错误跟踪机制。
我遵循Novell文档中提供的基本步骤(http://www.novell.com/coolsolutions/feature/11204.html)。
//创建LdapConnection实例
LdapConnection ldapConn =新LdapConnection(); ldapConn.SecureSocketLayer = ldapPort == 636;
//连接功能将创建一个套接字连接到服务器
ldapConn.Connect(ldapHost,ldapPort);
//绑定功能将结合用户对象证书到服务器
ldapConn.Bind(用户DN,userPasswd);
现在它正在Bind()函数中崩溃。我得到的错误91.
因此,有人曾经使用过这个库,看到它的工作?如果是这样,你做了什么来使它工作,是否需要一些特殊的配置?有没有办法让它在没有Mono的情况下在.NET环境下工作(我可以引用Mono dll,但我不希望它被安装在服务器上)?
(UPDATE) 连接在端口636上,因此使用SSL。我使用WireShark检查了通信,并与从LDAP浏览器获得的内容进行了比较。我已经看到SSL证书传递的步骤不是由LDAP库完成的。那么,让它做到它应该做的事的最好方法是什么?
(更新)我检查了文档,它表明它不支持SSL。 http://www.novell.com/coolsolutions/feature/11204.html
向LDAP服务器 LdapConnection.Bind()进行身份验证。我们只支持 明文认证。 SSL/TLS 支持尚未添加。
但是从2004年开始的文档日期已经有很多更新。并且库中有一个参数用于定义连接是否使用SSL。所以现在我很困惑。
(更新)找到更新的文档:http://developer.novell.com/documentation//ldapcsharp/index.html?page=/documentation//ldapcsharp/cnet/data/bqwa5p0.html。 SSL连接的方式是通过在服务器上注册证书。问题是我所做的并不是绑定到特定的Novell服务器,所以证书必须动态获取。
获得SSL工作的常用方法是将签名CA的公钥转换为Java密钥库(通常为树CA)的等效项。不知道在C#中意味着什么。一旦拥有它,那么由该树CA签署的所有服务器证书都将工作。所以你需要每棵树一个。 – geoffc 2008-12-28 02:45:21