如何使用JNDI将参数传递给LDAP自定义套接字工厂?

我正在使用JNDI建立LDAP连接。 例:

Hashtable env = new Hashtable(); env.put(Context.PROVIDER_URL, LDAPS_URL); env.put(Context.SECURITY_AUTHENTICATION, "EXTERNAL"); env.put("java.naming.ldap.factory.socket", "ldaptest.CustomSocketFactory"); ... 

我需要在运行时将参数传递给CustomSocketFactory。 特别是对客户端证书的引用。

我怎样才能做到这一点? 我可以使用线程本地存储。

有没有更好的办法?

我想你可能正在寻找这样的东西:

 env.put("javax.net.ssl.keyStore", keystorePath); //Where keystorePath is the path to the Keys file resource env.put("javax.net.ssl.keyStorePassword", "password"); 

实际上线程本地只是解决这个问题的方法,我发现到目前为止。 我在这里发布了解决方案:

jndi LDAPS自定义HostnameVerifier和TrustManager