使用未绑定、构造函数不匹配的文档示例连接到LDAP服务器
我一直在为我们的一个应用程序实现无绑定内存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
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配置它。