// 当前配置信息
private static String ldapHost = "192.168.xxx.xxx"; // 测试服务器
private static String ldapPassword = "xxxx";
private static int ldapPort = 389;
private static String ldapBindDN = "cn=admin,dc=example,dc=cn";
private static String BaseDN = "dc=example,dc=cn";
private static String OuBase = "ou=Peoples,dc=example,dc=cn";
private static LDAPConnection connection = null;
/** 连接LDAP */
public static void openConnection() {
if (connection == null || connection.isConnected() == false) {
try {
connection = new LDAPConnection(ldapHost, ldapPort, ldapBindDN, ldapPassword);
System.out.println("连接主机是:" + ldapHost);
} catch (Exception e) {
System.out.println("连接LDAP出现错误:\n" + e.getMessage());
}
}
}
public void deleteFromGroup(String uid, String groupname) {
try {
// 连接LDAP
openConnection();
String filter = "cn=" + groupname;
String userDN = getCustomerAdminDN(uid);//获取uid的dn
String requestDN = "cn=" + groupname + ",ou=Groups,dc=example,dc=cn";获取group的dn
SearchResult searchResult = connection.search("ou=Groups,dc=example,dc=cn", SearchScope.SUB,
filter, "*", "+");
List<SearchResultEntry> searchEntries = searchResult.getSearchEntries();
if (searchEntries.size() != 1) {
String str = "这个标签组:" + groupname + "不存在!";
System.out.println(str);
} else {
SearchResultEntry entry = searchEntries.get(0);
// 得到符合条件的属性集
Collection<Attribute> Attrs = entry.getAttributes();
//获得groupname标签组下的所有用户
String[] members = entry.getAttributeValues("member");
List<String> list = new ArrayList();
list = Arrays.asList(members);
//判断uid的dn是否在该标签组下
if (list.contains(userDN)) {
System.out.println(userDN + "存在");
userDN = "";
// 修改信息
ArrayList<Modification> md = new ArrayList<Modification>();
md.add(new Modification(ModificationType.REPLACE, "member", userDN));
LDAPResult res = connection.modify(requestDN, md);
System.out.println("移除member成功!");
} else {
System.out.println(userDN + "不存在");
}
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("移除member出现错误:" + e.getMessage());
}
}