1.連接配接LDAP:
HashEnv.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
HashEnv.put(Context.SECURITY_AUTHENTICATION, "simple");// "none","simple","strong"
HashEnv.put(Context.SECURITY_PRINCIPAL, getRootname());//管理者賬号
HashEnv.put(Context.SECURITY_CREDENTIALS, getPwd());//密碼
HashEnv.put(Context.PROVIDER_URL, getUrl() + getBasedn());//密碼
ctx = new InitialLdapContext(HashEnv, null);
查詢資料:
String userDN = "";
try {
connectToLDAP();
SearchControls constraints = new SearchControls();
constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
NamingEnumeration<SearchResult> en = ctx.search("", "uid=" + uid,
constraints);
if (en == null || !en.hasMoreElements()) {
System.out.println("未找到該使用者");
}
// maybe more than one element
while (en != null && en.hasMoreElements()) {
Object obj = en.nextElement();
if (obj instanceof SearchResult) {
SearchResult si = (SearchResult) obj;
userDN += si.getName();
userDN += "," + getBasedn();
} else {
System.out.println(obj);
}
}
} catch (Exception e) {
System.out.println("查找使用者時産生異常。");
throw new BusinessException("查找使用者時産生異常。");
}
新增資料:
connectToLDAP();
BasicAttributes attrsbu = new BasicAttributes();
BasicAttribute objclassSet = new BasicAttribute("objectClass");
objclassSet.add("inetOrgPerson");//定義的對象類。類似Java的對象。要加上所有的超類和抽象類
attrsbu.put(objclassSet);
attrsbu.put("mail", usr);
attrsbu.put("cn", usr);
attrsbu.put("uid", "mousepoatoc");
attrsbu.put("userPassword", pwd);
attrsbu.put("labeledURI", usr);
attrsbu.put("sn", pwd);
// ctx.bind(arg0, arg1, arg2);(objclassSet, attrsbu);
ctx.createSubcontext("uid=mousepoatoc", attrsbu);//第一個參數為ID
return true;
删除資料:
ctx.destroySubcontext("orgId=" + orgvo.getPk_corp());//傳入值
使用工具LdapAdmin可檢視資料資訊和超類資訊