如何使用我的Java应用程序中的LDAPS访问RedHat目录服务器/ HP UX目录服务器?我试图通过LDAP访问它工作正常,但在使用LDAPS时,它没有与服务器建立连接。
这是我的代码,它不起作用:
public void setPassword(String userDn,String password) {
InitialDirContext ctx=null;
DirContext connection;
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
String systemname = "ldaps://myserver:636";
env.put(Context.PROVIDER_URL, systemname);
env.put(Context.SECURITY_PRINCIPAL, "cn=directory manager");
env.put(Context.SECURITY_CREDENTIALS, "MySecret");
ctx = new InitialDirContext(env);
connection = (DirContext)ctx;
connection.lookup("dc=mydomain,dc=com");
ModificationItem[] mods = new ModificationItem[1];
Attribute mod0 = new BasicAttribute("userpassword",password);
mods[0] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, mod0);
connection.modifyAttributes(userDn, mods);
connection.close();
}
如果我将ldaps
替换为ldap
。
但我需要代码也适用于LDAPS。有些网站提到需要密钥库,证书等。但我不知道这些。
答案 0 :(得分:2)
您可以尝试以下几点:
ldapsearch
来验证LDAP客户端是否可以连接到服务器openssl s_client -connect host:port
验证客户端是否可以建立安全连接。答案 1 :(得分:1)
在使用Java时,您需要获取服务器证书或证书颁发机构链的副本,并将其添加到您使用代码的JVM的Java密钥库中。
如何获取证书取决于您使用的LDAP实现。 LDAP管理员应该能够提供帮助。
关于添加Java KeyStore证书,请参阅Google。
-Jim