本篇文档提供了一个关于使用Java进行LDAP(Lightweight Directory Access Protocol)代码操作的示例。LDAP是一种用于访问和管理分布式目录服务的标准协议,通常用于身份验证和数据共享。在给出的代码片段中,作者展示了如何初始化一个LDAP目录服务上下文(Directory Context)并执行常见的操作,如绑定(binding)、创建条目对象、获取和修改条目属性。 首先,代码定义了一个名为`LDAPDemo`的类,该类在2009年8月12日创建。关键部分是`initialContext()`方法,它负责设置与LDAP服务器的连接。方法中,作者创建了一个`LDAPConnection`单例对象,用于封装与LDAP服务器的连接配置: 1. **初始化配置**: - `singleton.sLDAP_URL`:设置了服务器的URL,这里是`ldap://localhost:8389`,表示连接到本地主机的8389端口。 - `singleton.sMANAGER_DN`:这是用于身份验证的DN(Distinguished Name),即`uid=linly,ou=People,dc=jsoso,dc=net`,表明了管理员的身份。 - `singleton.sMANAGER_PASSWORD`:用于身份验证的密码,这里是`coffee`。 - `singleton.sAUTH_TYPE`:设置认证类型,这里是简单的明文认证("simple")。 - `singleton.sCONTEXT_FACTORY`:指定初始上下文工厂,用于创建JNDI(Java Naming and Directory Interface)上下文,这里使用的是`com.sun.jndi.ldap.LdapCtxFactory`。 2. **设置环境属性**: - 通过`singleton.envProps.setProperty()`方法,将上述配置添加到环境属性中,包括提供者URL、认证方式、身份验证主DN和密码。 3. **创建目录上下文**: - 最后,调用`new InitialDirContext()`方法,传入配置好的环境属性,创建一个`InitialDirContext`对象,这个对象代表了与LDAP服务器的连接,并可以用来执行各种目录操作。 在后续的代码中,可能会涉及到使用这个上下文来执行具体的操作,例如搜索、添加、修改或删除LDAP条目。这些操作通常涉及到使用`search()`方法来查找符合特定条件的条目,`create()`方法用于创建新的条目,`modify()`方法更新属性值,以及`destroySubcontext()`方法删除子目录等。 这篇代码示例是Java开发人员学习和实现LDAP客户端编程的一个实用参考,它展示了如何利用Java的JNDI API与LDAP服务器进行交互,管理用户、组和组织结构等目录信息。
LDAP代码操作Demo
LDAP操作代码样例 初始化LDAP 目录服务上下文
该例子中,我们使用uid=linly,ou=People,dc=jsoso,dc=net这个账号,链接位于本机8389端口的LDAP服务器(ldap://localhost:8389),认证方式采用simple类型,即用户名/密码方式。
private static void initialContext() throws NamingException{
if(singleton == null){
singleton = new LDAPConnection();
/*
* 在实际编码中,这些环境变量应尽可能通过配置文件读取
*/
//LDAP服务地址
singleton.sLDAP_URL = "ldap://localhost:8389";
//管理员账号
singleton.sMANAGER_DN = "uid=linly,ou=People,dc=jsoso,dc=net";
//管理员密码
singleton.sMANAGER_PASSWORD = "coffee";
//认证类型
singleton.sAUTH_TYPE = "simple";
//JNDI Context工厂类
singleton.sCONTEXT_FACTORY = "com.sun.jndi.ldap.LdapCtxFactory";
singleton.envProps.setProperty(Context.INITIAL_CONTEXT_FACTORY, singleton.sCONTEXT_FACTORY);
singleton.envProps.setProperty(Context.PROVIDER_URL, singleton.sLDAP_URL);
singleton.envProps.setProperty(Context.SECURITY_AUTHENTICATION, singleton.sAUTH_TYPE);
singleton.envProps.setProperty(Context.SECURITY_PRINCIPAL, singleton.sMANAGER_DN);
singleton.envProps.setProperty(Context.SECURITY_CREDENTIALS, singleton.sMANAGER_PASSWORD);
/*
* 绑定ldap服务器
*/
}
}
通过一个Hashtable或者Properties对象为LDAP的Context设置参数,而后初始化InitialDirContext,即可绑定LDAP服务。这相当于JDBC中获取数据库的Connection对象。
绑定/创建LDAP条目对象
用户可以使用bind方法创建新的LDAP条目,下面的代码创建一个DN:"ou=Employee , dc=jsoso ,dc=net"的OrganizationUnit类LDAP条目如下:
public boolean createOrganizationUnit(){
String ldapGroupDN = "ou=Employee , dc=jsoso ,dc=net";
try {
/*
* 查找是否已经存在指定的OU条目
* 如果存在,则打印OU条目的属性信息
* 如果不存在,则程序会抛出NamingException异常,进入异常处理
*/
Attributes attrs = dirContext.getAttributes(ldapGroupDN);
System.out.println("Find the group , attributes list :");
NamingEnumeration<String> nEnum = attrs.getIDs();
for( ; nEnum.hasMore() ; ){
String attrID = nEnum.next();
Attribute attr = (Attribute)attrs.get(attrID);
System.out.println(attr.toString());
}
return false;
} catch (NamingException e) {
/*
* 没有找到对应的Group条目,新增Group条目
剩余6页未读,继续阅读
- 粉丝: 1
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展