当前位置:  开发笔记 > 编程语言 > 正文

Novell LDAP C# - Novell.Directory.Ldap - 有没有人让它工作?

如何解决《NovellLDAPC#-Novell.Directory.Ldap-有没有人让它工作?》经验,为你挑选了1个好方法。

我正在尝试使用Novell发布的库(Novell.Directory.Ldap).版本2.1.10.

到目前为止我做了什么:

我测试了与应用程序(LdapBrowser)的连接并且它正在工作,因此它不是通信问题.

它是用Mono编译的,但我正在使用Visual Studio.所以用源创建了一个项目.我还提到了对Mono.Security的引用,因为该项目取决于它.

我在连接的错误捕获部分中评论了一个调用(freeWriteSemaphore(semId);),因为它抛出了更多异常.我检查了那个调用做了什么,它只是一个错误跟踪机制.

我按照Novell(http://www.novell.com/coolsolutions/feature/11204.html)文档中提供的基本步骤进行操作.

//创建LdapConnection实例

LdapConnection ldapConn = new LdapConnection(); ldapConn.SecureSocketLayer = ldapPort == 636;

// Connect函数将创建与服务器的套接字连接

ldapConn.Connect(ldapHost,ldapPort);

//绑定功能将用户对象凭据绑定到服务器

ldapConn.Bind(用户DN,userPasswd);

现在它正在崩溃Bind()函数.我收到错误91.

那么,有人曾经使用过这个库并看到它有效吗?如果是这样,你做了什么让它工作,是否需要一些特殊的配置?有没有办法让它在没有Mono的.NET环境中工作(我可以引用Mono dll,但我不希望它安装在服务器上)?

(更新)连接在端口636上,因此使用SSL.我查看了WireShark的通信,并与我从LDAP浏览器中获得的内容进行了比较.我已经看到,SSL证书的通信步骤不是由LDAP库完成的.那么,让它做到它应该做的最好的方法是什么?

(更新)我检查了文档,它表明它不支持SSL.http://www.novell.com/coolsolutions/feature/11204.html

使用LdapConnection.Bind()对LDAP服务器进行身份验证.我们仅支持明文身份验证.尚未添加SSL/TLS支持.

但是文档的日期是2004年,从那时起,已经进行了许多更新.并且库中有一个参数来定义连接是否使用SSL.所以现在我很困惑.

(更新)找到了更新的文档:http://developer.novell.com/documentation//ldapcsharp/index.html?page = / documentation //ldapcsharp/cnet/data/bqwa5p0.html.建立SSL连接的方式是在服务器上注册证书.问题是我正在做的事情并没有绑定到特定的Novell服务器,因此必须动态获取证书.



1> 小智..:

我来寻找类似问题的解决方案。当使用Novell网站上的相同代码时,我的bind命令也会失败。对我有用的解决方案是添加动态证书验证回叫。你可以在这里阅读。

        // Creating an LdapConnection instance 
        LdapConnection ldapConn = new LdapConnection();

        ldapConn.SecureSocketLayer = true;

        ldapConn.UserDefinedServerCertValidationDelegate += new
                CertificateValidationCallback(MySSLHandler);


        //Connect function will create a socket connection to the server
        ldapConn.Connect(ldapHost, ldapPort);

        //Bind function will Bind the user object Credentials to the Server
        ldapConn.Bind(userDN, userPasswd);

        // Searches in the Marketing container and return all child entries just below this
        //container i.e. Single level search
        LdapSearchResults lsc = ldapConn.Search("ou=users,o=uga",
                           LdapConnection.SCOPE_SUB,
                           "objectClass=*",
                           null,
                           false);

        while (lsc.hasMore())
        {
            LdapEntry nextEntry = null;
            try
            {
                nextEntry = lsc.next();
            }
            catch (LdapException e)
            {
                Console.WriteLine("Error: " + e.LdapErrorMessage);
                // Exception is thrown, go for next entry
                continue;
            }
            Console.WriteLine("\n" + nextEntry.DN);
            LdapAttributeSet attributeSet = nextEntry.getAttributeSet();
            System.Collections.IEnumerator ienum = attributeSet.GetEnumerator();
            while (ienum.MoveNext())
            {
                LdapAttribute attribute = (LdapAttribute)ienum.Current;
                string attributeName = attribute.Name;
                string attributeVal = attribute.StringValue;
                Console.WriteLine(attributeName + "value:" + attributeVal);
            }
        }
        ldapConn.Disconnect();
        Console.ReadKey();
    }

public static bool MySSLHandler(Syscert.X509Certificate certificate,
            int[] certificateErrors)
        {

            X509Store store = null;
            X509Stores stores = X509StoreManager.CurrentUser;
            //string input;
            store = stores.TrustedRoot;

            X509Certificate x509 = null;
            X509CertificateCollection coll = new X509CertificateCollection();
            byte[] data = certificate.GetRawCertData();
            if (data != null)
                x509 = new X509Certificate(data);

            return true;
        }

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有