JAVA使用javax.naming.*;连接和操作ldap
1. 连接ldap
private static String url = "ldaps://IP地址:636";
private static String adminName = "登陆的用户名";
private static String adminPwd = "密码";
private static String fileName = "证书的无力路径";
private static String keystoreAsString = "";
private static String keystorePwd = "证书的密码";
public static DirContext context = null;
public static void connectLdap(){
setKeystoreAsString();
System.setProperty("javax.net.ssl.trustStore" , keystoreAsString);
System.setProperty("javax.net.ssl.trustStorePassword" , keystorePwd);
Hashtable<String, String> env = new Hashtable<String, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, url);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PROTOCOL, adminName);
env.put(Context.SECURITY_CREDENTIALS, adminPwd);
env.put(Context.SECURITY_PROTOCOL, "ssl");
try{
context = new InitialDirContext(env);
System.out.println("connect to ldap success!");
}catch (NamingException e){
e.printStackTrace();
}
}
这里是用ssl方式连接,所以需要从服务器中导出证书
2. 操作ldap
2.1. 查询得到所有的container(类似的查询所有的group等)
private static List<String> getContainerList(){
if(context == null){
connectLdap();
}
List<String> containerList= new ArrayList<String>();