Ldap 之API 简单运用
来源:互联网 发布:死或生5优化 编辑:程序博客网 时间:2024/06/05 15:06
直接上代码
package com.bms.service.ldapimpl;import java.util.ArrayList;import java.util.List;import org.jboss.logging.Logger;import com.bms.service.LdapApi;import com.bms.utils.PropertyUtil;import com.unboundid.ldap.sdk.Attribute;import com.unboundid.ldap.sdk.LDAPConnection;import com.unboundid.ldap.sdk.SearchRequest;import com.unboundid.ldap.sdk.SearchResult;import com.unboundid.ldap.sdk.SearchResultEntry;import com.unboundid.ldap.sdk.SearchScope;import com.unboundid.ldap.sdk.controls.SubentriesRequestControl;/** * @author YeChunBo * @time 2017年7月27日 * * 类说明 Ldap java api 操作 */public class LdapApiImpl implements LdapApi { private static Logger log = Logger.getLogger(LdapApiImpl.class); // 当前配置信息 private static String ldapHost = PropertyUtil.getProperty("ldapHost"); private static String ldapPort = PropertyUtil.getProperty("ldapPort"); private static String ldapBindDN = PropertyUtil.getProperty("ldapBindDN"); private static String ldapPassword = PropertyUtil.getProperty("ldapPassword"); private static LDAPConnection connection = null; /** entry 已存在*/ private static final Integer EntryIsExist = 0; /** entry 不存在*/ private static final Integer EntryIsNotExist = 3; /** entry 操作成功*/ private static final Integer operateEntrySuccess = 1; /** entry 操作失败*/ private static final Integer operateEntryFail = 2; static { if (connection == null) { try { connection = new LDAPConnection(ldapHost, Integer.parseInt(ldapPort), ldapBindDN, ldapPassword); } catch (Exception e) { log.error("Connect to ldap is failed, the fail message is:" + e.getMessage()); } } } public Integer createEntry(String baseDN, String uid, String userPwd) { Integer operateFlag = new Integer(operateEntryFail); log.info("CreateEntry the base DN is: " + baseDN + " ,and the uid is: " + uid + " ,and the usePwd is: " + userPwd); String entryDN = "uid=" + uid + "," + baseDN; try { SearchResultEntry entry = connection.getEntry(entryDN); if (entry == null) { // 不存在则创建 ArrayList<Attribute> attributes = new ArrayList<Attribute>(); attributes.add(new Attribute("objectClass", "organizationalPerson", "person", "inetOrgPerson", "top")); attributes.add(new Attribute("sn", "person")); attributes.add(new Attribute("cn", "person")); attributes.add(new Attribute("uid", uid)); // 如果传的密码参数为空则将其uid设置为其密码 if ("".equals(userPwd) || userPwd == null) attributes.add(new Attribute("userPassword", uid)); else attributes.add(new Attribute("userPassword", userPwd)); connection.add(entryDN, attributes); operateFlag = operateEntrySuccess; log.info("CreateEntry of 【" + entryDN + "】 is successed, and the operateFlag is " + operateFlag); } else { operateFlag = EntryIsExist; log.warn("The entry of 【" + entryDN + "】 already exists."); } } catch (Exception e) { operateFlag = operateEntryFail; log.error("Create entry of 【" + entryDN + "】 is failed, the error message is: " + e.getMessage()); } return operateFlag; } public List<String> queryLdap(String searchDN, String filter) { log.info("QueryLdap the searchDn is: " + searchDN + " ,and the filter is: " + filter); ArrayList<String> entryList = new ArrayList<String>(); try { SearchRequest searchRequest = new SearchRequest(searchDN, SearchScope.SUB, "(" + filter + ")"); searchRequest.addControl(new SubentriesRequestControl()); SearchResult searchResult = connection.search(searchRequest); log.info("A total of 【" + searchResult.getSearchEntries().size() + "】 entry was queried. "); int index = 1; for (SearchResultEntry entry : searchResult.getSearchEntries()) { entryList.add(entry.getDN()); log.info((index++) + "\t" + entry.getDN()); } } catch (Exception e) { log.error("Query failed, the fail message is:" + e.getMessage()); } return entryList; } public Integer deleteEntry(String requestDN) { Integer deleteFlag = new Integer(EntryIsNotExist); log.info("Delete entry of requestDN " + requestDN); try { SearchResultEntry entry = connection.getEntry(requestDN); if (entry == null) { log.warn("DeleteEntry of 【" + requestDN + "】 is not exist."); return deleteFlag; } // 删除 connection.delete(requestDN); deleteFlag = operateEntrySuccess; log.info("Delete of 【" + requestDN + "】 is successed."); } catch (Exception e) { deleteFlag = operateEntryFail; log.error("Delete of 【" + requestDN + "】 is failed the error message is : " + e.getMessage()); } return deleteFlag; }// public static void main(String[] args) {// // String filter = "objectClass=person";//// LdapApiImpl ldapApiImpl = new LdapApiImpl();//// // 创建entry//// Integer intFlag = ldapApiImpl.createEntry("ou=people,dc=hadoop,dc=apache,dc=org", "bms_test4", "");//// System.out.println(intFlag);// // // 删除entry//// Integer deleteflag = ldapApiImpl.deleteEntry("uid=bms_test6,ou=people,dc=hadoop,dc=apache,dc=org");//// System.out.println("deleteEntryFlag is " + deleteflag);// // // 查询entry//// List<String> entryList = ldapApiImpl.queryLdap("ou=people,dc=hadoop,dc=apache,dc=org", filter);//// for (String entry : entryList) {//// System.out.println(entry);//// }// //// ldapApiImpl.queryLdap("ou=people,dc=hadoop,dc=apache,dc=org", filter);// }}
package com.bms.service;import java.util.List;/*** @author YeChunBo* @time 2017年7月27日 ** 类说明 */public interface LdapApi { /** * 查询 * @param searchDN * @param filter */ public List<String> queryLdap(String searchDN, String filter); /** * 创建条目 * @param baseDN * @param uid * @param userPwd * @return 0:已存在;1:创建成功; 2: 创建失败 */ public Integer createEntry(String baseDN, String uid, String userPwd); /** * 删除条目 * @param requestDN * @return 0:不存在;1:删除成功; 2: 删除失败 */ public Integer deleteEntry(String requestDN);}
pom.xml 文件如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>LdapApi</groupId> <artifactId>LdapApi</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <!-- https://mvnrepository.com/artifact/com.unboundid/unboundid-ldapsdk --> <dependency> <groupId>com.unboundid</groupId> <artifactId>unboundid-ldapsdk</artifactId> <version>4.0.0</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> <type>jar</type> </dependency> </dependencies></project>
PropertyUtil.java
package com.bms.utils;/*** @author YeChunBo* @time 2017年7月27日 ** 类说明 :properties文件获取工具类*/import java.io.*;import java.util.Properties;import org.apache.log4j.Logger;public class PropertyUtil { private static final Logger logger = Logger.getLogger(PropertyUtil.class); private static Properties props; static { loadProps(); } synchronized static private void loadProps() { logger.info("开始加载properties文件内容......."); props = new Properties(); InputStream in = null; try { // <!--第一种,通过类加载器进行获取properties文件流--> in = PropertyUtil.class.getClassLoader().getResourceAsStream("ldap.properties"); // <!--第二种,通过类进行获取properties文件流--> // in = PropertyUtil.class.getResourceAsStream("/ldap.properties"); props.load(in); } catch (FileNotFoundException e) { logger.error("ldap.properties文件未找到"); } catch (IOException e) { logger.error("出现IOException"); } finally { try { if (null != in) { in.close(); } } catch (IOException e) { logger.error("ldap.properties文件流关闭出现异常"); } } logger.info("加载properties文件内容完成...........");// logger.info("properties文件内容:" + props); } public static String getProperty(String key) { if (null == props) { loadProps(); } return props.getProperty(key); } public static String getProperty(String key, String defaultValue) { if (null == props) { loadProps(); } return props.getProperty(key, defaultValue); } public static void main(String[] args) { String property = getProperty("ldapHost"); System.out.println(property); }}
log4j.properties
### \u8bbe\u7f6e###log4j.rootLogger = INFO,stdout,D,E### \u8f93\u51fa\u4fe1\u606f\u5230\u63a7\u5236\u62ac ###log4j.appender.stdout = org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target = System.outlog4j.appender.stdout.layout = org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n### \u8f93\u51faDEBUG \u7ea7\u522b\u4ee5\u4e0a\u7684\u65e5\u5fd7\u5230=log/message.log ###log4j.appender.D = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.D.File = log/ldap_message.loglog4j.appender.D.Append = truelog4j.appender.D.Threshold = INFO log4j.appender.D.layout = org.apache.log4j.PatternLayoutlog4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n### \u8f93\u51faERROR \u7ea7\u522b\u4ee5\u4e0a\u7684\u65e5\u5fd7\u5230=log/error.log ###log4j.appender.E = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.E.File = log/ldap_error.log log4j.appender.E.Append = truelog4j.appender.E.Threshold = ERROR log4j.appender.E.layout = org.apache.log4j.PatternLayoutlog4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
阅读全文
0 0
- Ldap 之API 简单运用
- API - SendMessageA简单示例运用
- LDAP API
- Ldap Api
- LDAP API
- Ldap Api
- Ldap Api
- JMeter之检查点简单运用
- HBase之api的基本运用(三)
- LDAP API函数
- LDAP c API
- LDAP c API
- Ldap api介绍
- Ldap api介绍
- Google Map ApI 的简单运用(二)
- android view简单水平垂直移动的api运用
- Ldap简单介绍
- ldap简单测试
- luogu P1970 花匠 (NOIP)
- TCP/IP 基础
- 数据结构实验之串二:字符串匹配
- hdu
- javascript中的闭包的理解
- Ldap 之API 简单运用
- Activity的setContentView看View的绘制流程
- 设计模式讲解与代码实践(十六)——解释器
- HDU6049-Sdjpx Is Happy
- DiffServ:区分服务体系结构
- [已解决]MyEclipse导入Web项目后各种红色xx的问题 F3快捷键失效问题.
- 虚析构函数的作用
- C
- Spreadsheet Calculator UVA