Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用未绑定、构造函数不匹配的文档示例连接到LDAP服务器_Ldap_Unboundid Ldap Sdk - Fatal编程技术网

使用未绑定、构造函数不匹配的文档示例连接到LDAP服务器

使用未绑定、构造函数不匹配的文档示例连接到LDAP服务器,ldap,unboundid-ldap-sdk,Ldap,Unboundid Ldap Sdk,我一直在为我们的一个应用程序实现无绑定内存ldap服务器,但从一开始我就遇到了一个问题: 我需要连接到我们的生产服务器一次,以便使用以下方式获取架构: Schema newSchema = Schema.getSchema(connection); config.setSchema(newSchema); 文档中说,要使用ssl连接到LDAP服务器,我需要使用SSUtil,如: SSLUtil sslUtil = new SSLUtil(new TrustAllTrustManag

我一直在为我们的一个应用程序实现无绑定内存ldap服务器,但从一开始我就遇到了一个问题:

我需要连接到我们的生产服务器一次,以便使用以下方式获取架构:

  Schema newSchema = Schema.getSchema(connection);
  config.setSchema(newSchema); 
文档中说,要使用ssl连接到LDAP服务器,我需要使用SSUtil,如:

 SSLUtil sslUtil = new SSLUtil(new TrustAllTrustManager());

 LDAPConnection connection =
    new LDAPConnection(sslUtil.createSSLSocketFactory());
 connection.connect("server.example.com", 636);
我厌倦了上面所说的,并且抱怨

  The constructor LDAPConnection(SSLSocketFactory) is undefined

当研究LDAPConnection时,确实没有这样的构造函数。我正在使用
unbounded ldapsdk se.jar
jar,有人知道解决这个问题的方法吗

实际上有一个构造函数与提供的签名相匹配。该构造函数是:

  /**
   * Creates a new LDAP connection using the specified socket factory.  No
   * actual network connection will be established.
   *
   * @param  socketFactory  The socket factory to use when establishing
   *                        connections.  If it is {@code null}, then a default
   *                        socket factory will be used.
   */
  public LDAPConnection(final SocketFactory socketFactory)
  {
    this(socketFactory, null);
  }
SSLSocketFactory是SocketFactory的一个子类,因此示例中包含的代码应该可以正常工作。我只是用这三行代码创建了一个类(创建SSLUtil、创建LDAPConnection和建立连接)来确认这一点,它使用JDK 5、JDK 6和JDK 7编译时没有任何警告或错误


另外,为了解决另一个问题,LDAP SDK不建议创建TrustAllTrustManager。它确实提供了一个使用TrustAllTrustManager的示例,但下面还有一个示例演示了使用信任存储的过程。此外,TrustAllTrustStore类的文档表明,建议仅将其用于测试目的。尽管如此,我刚刚对SSLUtil示例做了一个更改,使这个建议更加清晰。

看起来他们在
createSocketFactory()之后遗漏了一个
.createSocket()
调用。他们的文档是否真的建议您使用
TrustAllTrustManager
?这样做不安全。@EJP我尝试添加行
LDAPConnection connection=new LDAPConnection(sslUtil.createSSLSocketFactory().createSocket(主机地址,端口))但它仍然表示构造函数LDAPConnection(Socket)未定义
!构造函数需要
LDAPSocketFactory
。你知道我该怎么做吗?不担心此应用程序的安全性,它正在sandbox env中运行。抱歉,我无法帮助您,但必须有一个安全的
LDAPSocketFactory
,或者用
javax.net.SocketFactory配置它。