---------------------------------------------------------------- 备忘-----------------------------------------------------------------------
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;
}
}
-------------------------------------------------------程序来源网络 但是都经过本人测试---------------------------------------------------------------------
分享到:
相关推荐
在Windows环境下,用户需要先安装Java运行环境(JRE)或Java开发工具包(JDK),以便OpenDS能够正常运行。 目录服务器是网络服务的重要组成部分,它存储和管理用户、组、设备和其他对象的信息,这些信息以 ...
- **Java API**:提供详细的Java API文档,方便开发者集成OpenDS到现有的应用程序中。 - **脚本支持**:介绍如何使用shell脚本或Python脚本来自动化管理任务。 #### 十五、社区支持 - **论坛与邮件列表**:鼓励用户...
6. **JAR Files**: 作为Java应用程序,OpenDS依赖于一组JAR文件,它们包含了运行OpenDS所需的库和API。 7. **Documentation**: 可能还包含帮助文档和用户指南,帮助管理员了解如何安装、配置和管理OpenDS。 8. **...
本文详细介绍了如何将 Cognos 8.3 与 OpenDS-1.0.0 进行集成认证的过程,包括 OpenDS 的安装、配置 LDAP 服务、设置 Cognos 的匿名访问权限、重启 Cognos 服务以及使用 Java 代码添加、修改和查找 LDAP 用户的具体...
它不同于传统的LDAP解决方案,如OpenLDAP等,OpenDS采用纯Java技术构建,这意味着其可以在任何支持Java的平台上运行。这一特性使得OpenDS成为企业级目录服务的理想选择之一。 #### 二、安装前准备 在开始安装...
要使用Java操作OpenLDAP,我们主要依赖于两个库:`javax.naming` 和 `javax.naming.ldap`。这两个库提供了连接LDAP服务器、执行搜索、修改目录等内容所需的API。 1. **连接OpenLDAP**: 首先,我们需要创建一个...
在Java世界中,JNDI(Java Naming and Directory Interface)是一种标准API,它允许应用程序查找和操作各种命名和目录服务,比如LDAP、DNS或者EJB等。本示例将聚焦于如何利用JNDI来调用CS(Client-Server)架构中的...
标签"ldapbrowser"表示这是个浏览 LDAP 服务的工具,"gawor"是开发者的名称,"ldap连接工具"强调了其主要功能,而"opends工具"表明该软件已经过测试,兼容OpenDJ或OpenDS(OpenDNS)这样的开源目录服务软件。OpenDS...
Sun Java System Directory,也称为Sun Directory Server或OpenDS,是一款由Sun Microsystems开发的高性能、可扩展的LDAP(轻量目录访问协议)服务器。它支持高可用性和大规模数据处理,被广泛应用于企业环境中作为...
它涵盖了安装前需要准备的内容、如何下载 Roller、如何配置 Roller 以及如何将其安装到现有的 Java 应用服务器和关系数据库中。此外,还提供了一个适用于高级用户的 5 分钟快速安装选项。 #### 版权与商标信息 本...