对于NOVELL LDAP 轻量级目录服务的学习理解
???第三、验证某实体的属性
???LDAPAttribute attribute = new LDAPAttribute("userPassword", userPWD);
???lc.compare(userDN, attribute)???//返回true or false 可以用来判断用户的密码是否正确
???第四、进行查找
????LDAPEntry entry = lc.read(userDN, returnAttrs); //返回的是 LDAPEntry 对象 通过 LDAPEntry 对象来获取该实体的信息
如何在LDAP服务器中查找实体?
???第一、获取到LDAP服务器的管理员连接
???第二、确定查找范围,查找参数,查找内容等
????如:String searchBase = "o=武钢氧气有限责任公司";
?????String searchFilter = "(cn=a000001)"; ???????// 此处为查找表达式,支持正则表达式
?????String searchScope?=?LDAPConnection.SCOPE_ONE ?// 只查找基节点第一层的子节点
???????????|LDAPConnection.SCOPE_BASE?// 只查找基节点
???????????|LDAPConnection.SCOPE_SUB ?// 查找基节点下面的所有子节点
???第三、根据参数进行查找 返回 LDAPSearchResults 对象
???LDAPSearchResults searchResults = lc.search(searchBase,
?????searchScope, searchFilter, new String[] { "cn",
???????"objectClass", "userPassword","riseGUID"},false);
??????????????????// 此方法中字符串数组表示查询的实体的属性,并在结果中返回这些属性
???第四:列出查询结果
???
????while (searchResults.hasMore()) {????????//LDAPSearchResults 实现了 collection 接口
????LDAPEntry le = searchResults.next(); ?????//结果集中每个内容都是一个 LDAPEntry 对象
????System.out.println(le.getDN());
????LDAPAttributeSet attributeSet = le.getAttributeSet(); ?//通过 LDAPEntry 对象来获取 LDAPAttributeSet 对象
????Set sortedAttributes = new TreeSet(attributeSet);
????Iterator allAttributes = sortedAttributes.iterator();
????while (allAttributes.hasNext()) {
?????LDAPAttribute attribute = (LDAPAttribute) allAttributes.next();
?????String attributeName = attribute.getName(); ??//获取参数名
?????System.out.println("tt" + attributeName);???
?????Enumeration allValues = attribute.getStringValues();//其参数值可以为多个,利用Enumeration 列出全部该属性的值
?????if (allValues != null) {
??????while (allValues.hasMoreElements()) {
???????String Value = (String) allValues.nextElement();
???????System.out.println("ttt" + Value);
??????}
?????}
????}
???}
如何修改、删除 已存在的某实体的 属性 Attribute
????第一、获取到LDAP服务器的管理员连接
????第二、创建该实体要修改的属性列表 ArrayList modList = new ArrayList();
????第三、用 LDAPModification 对象填充该列表 如:
??????LDAPAttribute attribute = new LDAPAttribute("telephoneNumber", "1 801 555 1212");
??????modList.add(new LDAPModification(LDAPModification.ADD, attribute));
??????// 这里 LDAPModification 对象有几种方式 LDAPModification.ADD、LDAPModification.DELETE、LDAPModification.REPLACE
????第四、用list填充 LDAPModification??对象
??????LDAPModification[] modsadd = new LDAPModification[modList.size()];
??????modsadd = (LDAPModification[]) modList.toArray(modsadd);
????第五、通过 LDAP连接就行修改操作
??????lc.modify(dn, modsadd);?????????//注:lc为LDAP服务器的连接 modsadd 为封装后的LDAPModification 对象
??????
??????
如何删除某个已存在实体
????通过获取LDAP连接 deleteDN为该节点的DN
????lc.delete(deleteDN);
????
????
????
????
JLDAP 访问LDAP服务器的错误代码含义(已知的)
91:Unable to connect to server 172.16.5.12:389 (91) Connect Error??//在获取连接的时候LDAP 服务器连接地址或端口不正确
68:Entry Already Exists (68) Entry Already Exists ?????//添加实体时抛出实体已经存在信息
32:No Such Object (32) No Such Object????????//实体不存在