JNDI目录服务入门教程
本教程讲述下面内容:
1. iPlanet Directory Server5.1目录服务器
iPlanet Directory Server5.1的下载
iPlanet Directory Server5.1的安装
iPlanet Directory5.1的启动,关闭
iPlanet Directory5.1的管理员指南
2. 安装编程环境所需的类库
JNDI类库下载
LDAP类库下载
3. 一些基本的目录服务操作
目录服务器建立连接(匿名访问方式)
目录服务器建立连接(简单验证方式Simple)
获取目录服务器指定条目的属性值
按条目属性值的搜索条件搜索目录服务器上的条目
删除,添加,修改目录服务器指定条目的属性值
删除,添加目录服务器上的条目,重命名目录服务器上的条目识别名(DN)
1 iPlanet Directory Server5.1目录服务器简述
iPlanet Directory Server 产品包括管理多个目录的 iPlanet Directory Server 和通过图形界面管理这两个服务器的 iPlanet Console。本章概述有关 iPlanetDirectory Server 的信息以及使用控制台建立目录管理服务所需的最基本的任务。
iPlanet Directory Server 的运行平台包括:widnows 和 Linux
iPlanet Directory Server 目前最高版本为V5.2
2 iPlanet Directory Server5.1的下载
下载网址:http://www.iplanet.com/
目前已更新为http://wwws.sun.com/software/
3 iPlanet Directory Server5.1的安装
以下为iPlanet Directory Server5.1的安装步骤
步骤1
启动iPlanet Directory Server5.1的安装界面
欢迎界面及软件许可界面
在出现的界面中,单击“下一步”按钮
1.gif?http://www.xvna.com
步骤2
许可协议界面
在出现的界面单击“是”
2.gif?http://www.xvna.com
步骤3
选择安装的组件,包装两个安装类型
iPlanet服务器软件
包括iPlanet目录服务器,iPlanet控制台及其它相关组件
iPlanet控制台
只安装iPlanet控制台,用于安装在客户端
出现选择安装类型时,选择Iplanet 服务器软件
3.gif?http://www.xvna.com
步骤4
选择安装类型
在出现的界面选择“典型”安装
4.gif?http://www.xvna.com
步骤5
选择安装位置
出现的界面选择安装位置
5.gif?http://www.xvna.com
步骤6
选择安装组件
出现的界面选择你所需要安装的组件,我们所有的都安装
6.gif?http://www.xvna.com
步骤7
配置目录服务器
建一个新的目录服务器
使用现有的目录服备器
7.gif?http://www.xvna.com
步骤8
目录数据库的存储选择
建一个新的目录数据库
使用现有的目录数据库
8.gif?http://www.xvna.com
步骤9
填写目录服务器的标识符,连接端口号,及后缀
9.gif?http://www.xvna.com
步骤10
目录服务器控制台的管理员ID及口令
10.gif?http://www.xvna.com
步骤11
设置目录服务器的管理域
11.gif?http://www.xvna.com
步骤12
设置连接目录服务器的目录管理员识别名(DN)
及口令
12.gif?http://www.xvna.com
步骤13
设置管理目录服务器服务的端口号
13.gif?http://www.xvna.com
步骤14
显示以上的用户选项信息
14.gif?http://www.xvna.com
步骤15
安装进程
15.gif?http://www.xvna.com
步骤16
注意,安装后,需重启计算机服务才有效.
16.gif?http://www.xvna.com
iPlanet Directory5.1管理控制台的启动,关闭
单击命令%iPlanet%\Servers\start-admin.cmd
启动管理进程
单击命令%iPlanet%\Servers\ startconsole.exe
启动管理控制台
A1.gif?http://www.xvna.com
4 iPlanet Directory5.1的管理员指南
关于这个指南,你可以到网上找或给我发邮件(
[email protected]),我可以发给你哦。
5 安装编程环境类库
基本编程环境类库
只需安装J2EE1.3版以上即可,下载网址http://java.sun.com
JNDI类库下载
下载类库jndi.jar
下载网址:http://java.sun.com/jndi/
LDAP类库下载
下载类库jaas.jar, ldap.jar, ldapbp.jar, ldapsec.jar, providerutil.jar
下载网址:http://java.sun.com/jndi/
6 一些基本的目录服务操作
1 目录服务器建立连接( 匿名访问方式)
程序段:
/*实例化一个Hashtable,用于存储连接属性*/
Hashtable env = new Hashtable(5, 0.75f);
/*设置连接Ldap的实现工厂*/
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
/*设置连接URL*/
env.put(Context.PROVIDER_URL,“ldap://localhost:389”);
/*实例化一个目录上下文*/
LdapContext ctx = new InitialLdapContext(env, null);
2 目录服务器建立连接(简单验证方式Simple)
程序段:
/*实例化一个Hashtable,用于存储连接属性*/
Hashtable env = new Hashtable(5, 0.75f);
/*设置连接Ldap的实现工厂*/
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
/*设置连接URL*/
env.put(Context.PROVIDER_URL,“ldap://localhost:389”);
/*设置验证方式为简单验证simple*/
env.put(Context.SECURITY_AUTHENTICATION, "simple");
/*进入的目录识别名DN
Env.MGR_DN为进入的目录识别名*/
env.put(Context.SECURITY_PRINCIPAL, Env.MGR_DN);
/*进入的目录密码password
Env.MGR_PW为进入的目录密码*/
env.put(Context.SECURITY_CREDENTIALS, Env.MGR_PW);
/*实例化一个目录上下文*/
LdapContext ctx = new InitialLdapContext(env, null);
3 获取目录服务器指定条目的属性值
/*定义需获取的属性名*/
String[] attrs = new String[5];
attrs[ 0 ] = "cn"; /* 获取属性”cn” */
attrs[ 1 ] = "sn"; /* 获取属性”sn” */
attrs[ 2 ] = "mail"; /* 获取属性”mail” */
attrs[ 3 ] = "telephonenumber"; /* 获取属性”telephonenumber” */
attrs[ 4 ] ="title"; /* 获取属性”title” */
/*获取指定条目*/
Attributes result = ctx.getAttributes(Env.ENTRYDN, attrs);
/*获取指定属性*/
Attribute attr = result.get("cn");
按条目属性值的搜索条件搜索目录服务器上的条目
/*实例化一个搜索器*/
SearchControls constraints = new SearchControls();
/*设置搜索器的搜索范围*/
constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
/* 在基目录中搜索条件为Env.MY_FILTER的所有属性
Env.MY_SEARCHBASE为搜索的基目录
Env.MY_FILTER为搜索的过渡器
注意:这里返回是的所有的条目集合*/
NamingEnumeration results
= ctx.search(Env.MY_SEARCHBASE, Env.MY_FILTER, constraints);
/* 打印条目的识别名(DN)及其所有的属性名,值*/
while (results != null && results.hasMore())
{
/*取一个条目*/
SearchResult si = (SearchResult)results.next();
/* 打印条目识别名(DN) */
System.out.println("name: " + si.getName());
/*获取条目的所有属性集合*/
Attributes attrs = si.getAttributes();
if (attrs == null)
{
System.out.println("No attributes");
} else {
/* 打印所有属性值 */
for (NamingEnumeration ae = attrs.getAll();
ae.hasMoreElements();) {
/*获取一个属性*/
Attribute attr = (Attribute)ae.next();
String attrId = attr.getID();
/* 打印这个属性的所有属性值 */
for (Enumeration vals = attr.getAll();
vals.hasMoreElements();
System.out.println(attrId + ": " + vals.nextElement()))
;
}
}
4 删除,添加,修改目录服务器指定条目的属性值
/* 实例化一个用于修改属性的数组*/
ModificationItem[] mods = new ModificationItem[3];
/*实例化一个BasicAttribute基本属性对象
其第一个参数为属性名,
第二个参数为属性值*/
Attribute mod0 = new BasicAttribute("mail", "babs@eng");
// 定义一个修改的属性条
mods[0] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, mod0);
/*实例化一个BasicAttribute基本属性对象
其第一个参数为属性名,
第二个参数为属性值*/
Attribute mod1 =
new BasicAttribute("description",
"This entry was modified with the Modattrs program on " +
(new Date()).toString());
// 定义一个增加的属性条
mods[1] = new ModificationItem(DirContext.ADD_ATTRIBUTE, mod1);
/*实例化一个BasicAttribute基本属性对象
其第一个参数为属性名/
Attribute mod2 = new BasicAttribute("description");
// 定义一个删除的属性条
mods[2] = new ModificationItem(DirContext.REM