`
xiaomogui
  • 浏览: 242789 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java操作openDS

    博客分类:
  • ldap
阅读更多

---------------------------------------------------------------- 备忘-----------------------------------------------------------------------

 

public class OpenDSExamples {

	public static void main(String[] args) throws NamingException {

		DirContext dirContext = createLdapContext();// 连接OpenDS服务器

		JNDIDirContextAdaptor adaptor = JNDIDirContextAdaptor.adapt(dirContext);

		// do other stuff with the adaptor

		try {

			String newUserName = "admin";

			BasicAttributes attrsbu = new BasicAttributes();

			BasicAttribute objclassSet = new BasicAttribute("objectclass");

			objclassSet.add("person");

			objclassSet.add("top");

			objclassSet.add("organizationalPerson");

			objclassSet.add("inetOrgPerson");

			attrsbu.put(objclassSet);

			attrsbu.put("sn", newUserName);

			attrsbu.put("uid", newUserName);

			attrsbu.put("displayName", "********@163.com");

			attrsbu.put("userPassword", "Administrator");

			LdapName dn = new LdapName("cn=admin,dc=example,dc=com");

			// 增加节点

			//adaptor.createEntry(dn, attrsbu);

			System.out.println("成功增加cn=admin");

			// 修改节点

			//attrsbu.put("displayName", "管理员");

			//adaptor.modifyEntry(dn, attrsbu);

			System.out.println("成功修改cn=admin");

			// 查找节点

			SearchControls constraints = new SearchControls();

			constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);

			boolean isExists = adaptor.entryExists(dn);

			if (isExists) {

				System.out.println("查找:存在cn=admin");

			}

			else {

				System.out.println("查找:不存在cn=admin");

			}

			java.util.Vector ve = new java.util.Vector();
			NamingEnumeration em = getFilter("dc=example,dc=com", "cn=*", 10);
			while (em != null && em.hasMoreElements()) {
				SearchResult rs = (SearchResult) em.nextElement();
				String db = rs.getName();
				System.out.println("名称=====" + rs.getName());
				System.out.println("全部属性====" + rs.getAttributes());
				System.out.println("得到某一个属性===="
						+ rs.getAttributes().get("displayname"));

				if (db.trim().equals(""))
					ve.add(dn);
				else
					ve.add(db + "," + dn);
			}
			System.out.println("共有几条记录====" + ve.size());
			/*
			 * //删除节点
			 * 
			 * adaptor.deleteSubtree(dn);
			 * 
			 * System.out.println("成功删除cn=admin");
			 * 
			 * isExists = adaptor.entryExists(dn);
			 * 
			 * if(isExists){
			 * 
			 * System.out.println("查找:存在cn=admin");
			 *  }
			 * 
			 * else{
			 * 
			 * System.out.println("查找:不存在cn=admin");
			 *  }
			 */

		} catch (Exception e) {

			System.out.println("adaptor操作cn=admin出错");

			e.printStackTrace();

		}

	}

	/**
	 * 返回用户查询接口
	 * @param DN  查找范围 ou=test,dc=abcd,dc=com
	 * @param filter 过滤条件 cn=*
	 * @param myserach 搜索范围
	 * @return  LDAP标准接口
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public static javax.naming.NamingEnumeration getFilter(String DN,
			String filter, int myserach) throws Exception {
		DirContext ctx = createLdapContext();
		try {
			NamingEnumeration em;
			SearchControls con = new SearchControls();
			con.setSearchScope(myserach);
			em = ctx.search(DN, filter, con);
			return em;
		} finally {
			//
		}
	}

	/**
	 * 设置条件查找
	 * @param dn  查找的根结点
	 * @param filter 查找条件
	 * @param level 查找范围
	 * @return  返回一个由DN组成的JAVA STRING 列表
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public java.util.Vector getfilterNodes(String dn, String filter, int level)
			throws Exception {
		java.util.Vector ve = new java.util.Vector();
		NamingEnumeration em = getFilter(dn, filter, level);
		while (em != null && em.hasMoreElements()) {
			SearchResult rs = (SearchResult) em.nextElement();
			String db = rs.getName();
			if (db.trim().equals(""))
				ve.add(dn);
			else
				ve.add(db + "," + dn);
		}
		return ve;
	}

	@SuppressWarnings("unchecked")
	private static DirContext createLdapContext() throws NamingException {

		Hashtable env = new Hashtable();

		env.put(Context.INITIAL_CONTEXT_FACTORY,

		"com.sun.jndi.ldap.LdapCtxFactory");

		env.put(Context.PROVIDER_URL, "ldap://192.168.1.102:389");

		env.put(Context.SECURITY_AUTHENTICATION, "simple");

		env.put(Context.SECURITY_PRINCIPAL, "cn=root");

		env.put(Context.SECURITY_CREDENTIALS, "root");

		DirContext ctx = null;

		try {

			ctx = new InitialLdapContext(env, null);

			System.out.println("认证成功");

		} catch (Exception e) {

			System.out.println("认证出错:");

			e.printStackTrace();

		}

		return ctx;

	}

}

 -------------------------------------------------------程序来源网络 但是都经过本人测试---------------------------------------------------------------------

分享到:
评论

相关推荐

    OpenDS-1.2.0.

    在Windows环境下,用户需要先安装Java运行环境(JRE)或Java开发工具包(JDK),以便OpenDS能够正常运行。 目录服务器是网络服务的重要组成部分,它存储和管理用户、组、设备和其他对象的信息,这些信息以 ...

    OpenDS-2.0官方Administration Guide

    - **Java API**:提供详细的Java API文档,方便开发者集成OpenDS到现有的应用程序中。 - **脚本支持**:介绍如何使用shell脚本或Python脚本来自动化管理任务。 #### 十五、社区支持 - **论坛与邮件列表**:鼓励用户...

    OpenDS-2.3.0-build003.zip

    6. **JAR Files**: 作为Java应用程序,OpenDS依赖于一组JAR文件,它们包含了运行OpenDS所需的库和API。 7. **Documentation**: 可能还包含帮助文档和用户指南,帮助管理员了解如何安装、配置和管理OpenDS。 8. **...

    Cognos8.3与OpenDS-1.0.0集成认证.doc

    本文详细介绍了如何将 Cognos 8.3 与 OpenDS-1.0.0 进行集成认证的过程,包括 OpenDS 的安装、配置 LDAP 服务、设置 Cognos 的匿名访问权限、重启 Cognos 服务以及使用 Java 代码添加、修改和查找 LDAP 用户的具体...

    OpenDS-1.2.0的windows下的安装配置文档.doc

    它不同于传统的LDAP解决方案,如OpenLDAP等,OpenDS采用纯Java技术构建,这意味着其可以在任何支持Java的平台上运行。这一特性使得OpenDS成为企业级目录服务的理想选择之一。 #### 二、安装前准备 在开始安装...

    java对Openldap进行操做

    要使用Java操作OpenLDAP,我们主要依赖于两个库:`javax.naming` 和 `javax.naming.ldap`。这两个库提供了连接LDAP服务器、执行搜索、修改目录等内容所需的API。 1. **连接OpenLDAP**: 首先,我们需要创建一个...

    JNDI代码样例

    在Java世界中,JNDI(Java Naming and Directory Interface)是一种标准API,它允许应用程序查找和操作各种命名和目录服务,比如LDAP、DNS或者EJB等。本示例将聚焦于如何利用JNDI来调用CS(Client-Server)架构中的...

    Gawor_ldapbrowser_282

    标签"ldapbrowser"表示这是个浏览 LDAP 服务的工具,"gawor"是开发者的名称,"ldap连接工具"强调了其主要功能,而"opends工具"表明该软件已经过测试,兼容OpenDJ或OpenDS(OpenDNS)这样的开源目录服务软件。OpenDS...

    Sun Directory

    Sun Java System Directory,也称为Sun Directory Server或OpenDS,是一款由Sun Microsystems开发的高性能、可扩展的LDAP(轻量目录访问协议)服务器。它支持高可用性和大规模数据处理,被广泛应用于企业环境中作为...

    Apacheroller

    它涵盖了安装前需要准备的内容、如何下载 Roller、如何配置 Roller 以及如何将其安装到现有的 Java 应用服务器和关系数据库中。此外,还提供了一个适用于高级用户的 5 分钟快速安装选项。 #### 版权与商标信息 本...

Global site tag (gtag.js) - Google Analytics