编写 LDAP 访问程序; a) JAVA i. JNDI(JAVA 命名及目录接口 )
JNDI 是 JAVA 为命名及目录服务访问制定的基础接口标准,用于访问包括 DNS , NIS , LDAP ,文件系统等任何以树目录形式存在目标对象,并且基本上可保持访问方式的一致(意味着代码共用)。对于不同的目录类型, JNDI 通过使用不同的目录驱动,以保证访问方式的一致。
以下连接可获得较详细的讲解和例程: http://java.sun.com/products/jndi/tutorial/
经常使用的 LDAP 驱动有 JDK 自带的 LDAP provider ,还有 IBM 的 PROVIDER ,以及 NOVEL 的 JNDI 产品。 需要提醒的是, JNDI 中最重要的概念是上下文 context ,即定位从那一个入口开始操作,相当于 openldap 命令行中的 -D 开关的作用。其他的操作都是该上下文对象的调用。
LDAP 通过 JNDI 添加条目是基于 DirContext 类的操作。由于 JAVA 只能以对象方式向 LDAP 添加条目,因此,必须首先具备实现 DirContext 接口的类,或使用 DirContext( 扩充了 context 接口 ) 代替 context ,然后才能通过 ctx.bind() 的方法把该类添加到目录中。
JAVA-LDAP-ADD 的操作可以有三种方式:
Context.bind() 或 ctx.createSubcontext("name");
或 DirContext.bind(“dn”,attrs,object) 的方式。对于没有预先编写实现 DirContext 接口的类对象的添加,这是唯一的办法。
ii. JLDAP
JLDAP 是由 novel 开发的,原是针对 Novel 的 NDS 目录设计的 JAVA 访问工具。 NOVEL 的 NDS 和网景( NETSCAPE )的目录是工具界最早的目录产品。 JLDAP 并非 JNDI 的服务供应者,而是同一抽象层次下的访问工具集。与 JNDI-LDAP 相比, JLDAP 更接近于类关系数据库的访问方式。
NDS 是遵守 LDAP 协议的并进行了扩展的类 MAD 产品。而 NOVEL 也已把 JLDAP 捐献给了 OPENLDAP 开源项目,可以世界范围内自由使用。与 JNDI 相比, JLDAP 无须继承 DirContext 才能实现添加,也无需预先生成添加的类,可以象普通数据访问那样,生成连接,然后使用 ::add 方法添加。这样,添加的灵活性要强于 JNDI 。
但由于 JLDAP 目前是访问 NDS ,因此,它不具备 JNDI 完全面向对象存储的能力,对于高级的 LDAP 应用, JLDAP 不是合适的选择。
例:
- import com.novell.ldap.*;
- public class AddEntry
- {
- public static void main( String[] args )
- {
- if (args.length != 4 ) {
- System.err.println("Usage: java AddEntry
- + " " );
- System.err.println("Example: java AddEntry Acme.com"
- + " \"cn=admin,o=Acme\" secret \"ou=Sales,o=Acme\"" );
- System.exit(1 );
- }
- int ldapPort = LDAPConnection.DEFAULT_PORT;
- int ldapVersion = LDAPConnection.LDAP_V3;
- String ldapHost = args[0 ];
- String loginDN = args[1 ];
- String password = args[2 ];
- String containerName = args[3 ];
- LDAPConnection lc = new LDAPConnection();
- LDAPAttribute attribute = null ;
- LDAPAttributeSet attributeSet = new LDAPAttributeSet();
- /* To Add an entry to the directory,
- * -- Create the attributes of the entry and add them to an attribute set
- * -- Specify the DN of the entry to be created
- * -- Create an LDAPEntry object with the DN and the attribute set
- * -- Call the LDAPConnection add method to add it to the directory
- */
- String objectclass_values[] = { "inetOrgPerson" };
- attribute = new LDAPAttribute( "objectclass" , objectclass_values );
- attributeSet.add( attribute );
- String cn_values[] = { "James Smith" , "Jim Smith" , "Jimmy Smith" };
- attribute = new LDAPAttribute( "cn" , cn_values );
- attributeSet.add( attribute );
- String givenname_values[] = { "James" , "Jim" , "Jimmy" };
- attribute = new LDAPAttribute( "givenname" , givenname_values );
- attributeSet.add( attribute );
- attributeSet.add( new LDAPAttribute( "sn" , "Smith" ) );
- attributeSet.add( new LDAPAttribute( "telephonenumber" ,
- "1 801 555 1212" ) );
- attributeSet.add( new LDAPAttribute( "mail" , "JSmith@Acme.com" ) );
- String dn = "cn=JSmith," + containerName;
- LDAPEntry newEntry = new LDAPEntry( dn, attributeSet );
- try {
- // connect to the server
- lc.connect( ldapHost, ldapPort );
- // authenticate to the server
- lc.bind( ldapVersion, loginDN, password );
- lc.add( newEntry );
- System.out.println( "\nAdded object: " + dn + " successfully." );
- // disconnect with the server
- lc.disconnect();
- }
- catch ( LDAPException e ) {
- System.out.println( "Error: " + e.toString());
- }
- System.exit(0 );
- }
- }
发表评论
-
深入分析 Java 中的中文编码问题
2011-11-16 07:45 0几种常见的编码格式 ... -
Java 编码
2011-11-16 07:44 0http://zhidao.baidu.com/quest ... -
java字符编码原理解析
2011-11-16 07:43 0可以理解为计算机没 ... -
HttpClient
2011-11-03 11:07 824From http://www.blogjava.net/Al ... -
ECLIPSE ANT OutOfMemoryError
2011-08-04 17:23 1011ANT BUILD MEMORY ERROR: [cl ... -
JDBC BATCH
2011-07-05 14:58 0PreparedStatement ps = conn.pre ... -
OUT OF MEMORY WHEN BUILD
2011-02-22 17:47 01, ANT BUILD: In Eclipse op ... -
spring weblogic jndi
2011-02-16 09:18 1837weblogic:weblogic8.1 数据库:MySql ... -
log4j 邮件
2011-01-24 15:54 0<!-- 设置上下文参数 --> ... -
tomcat weblogic
2010-12-01 11:25 1862EJB 层基本搞定,以前测试 EJB 也都是写一个 appli ... -
ant weblogic “local class incompatible: stream classdesc serialVersionUI”
2010-11-29 12:41 2227weblogic.management.Management ... -
Debugging with the Maven Jetty Plugin in Eclipse
2010-11-15 17:42 1035debug: http://docs.codehaus.or ... -
maven tomcat eclipse debug
2010-11-15 17:36 1946from: http://bandaidprogrammin ... -
maven app tomcat 部署
2010-11-11 15:56 1307修改pom.xml,添加如下配置: <build ... -
Maven Cargo Tomcat 部署
2010-11-11 15:49 1769pom.xml中<build>下添加如下代码: ... -
java中读取配置文件各种方法
2010-09-07 12:31 01。使用Java.util.Properties类的load( ... -
ThreadGroup
2010-05-25 08:47 0在Java中每个线程都属于某个线程组(ThreadGroup) ... -
java Excel 导出
2010-03-28 20:06 0public void createExcel(OutputS ... -
java小数保留两位小数
2009-11-19 16:49 2337方式一: 四舍五入 double f = ... -
java中实现xml schema 验证文件
2009-11-16 20:05 3877XML 是可扩展标记语言,也就是说其中的标记我们可以按照我们 ...
相关推荐
在大型环境中,为了实现高可用性和数据一致性,LDAP目录通常会采用复制技术,将目录数据同步到多个服务器,确保即使在主服务器故障时,服务仍能持续运行。 **1.7-1.8 LDAP的应用与数据结构** LDAP不仅用于用户身份...
- **主要应用技术**:JSP, TagLib, JavaBean, XML等 - **出处**:http://jakarta.apache.org/struts/index.html - **简述**:Struts是一个由Apache基金会支持的开源项目,广泛应用于企业级应用的开发。它基于MVC设计...
主要应用技术:JSP,TagLib,JavaBean,XML等??出处:http://jakarta.apache.org/struts/index.html??简述:这是APACHE的开源项目,目前应用很广泛。基于MVC模式,结构很好,基于JSP。Jbuilder8里已经集成了STRUTS1.02...
- **安全控制**:通过集成Kerberos、LDAP等技术,实现用户身份验证和权限管理,确保数据安全。 - **性能优化**:华为团队对Hadoop、HBase等组件进行了深度优化,提升了系统整体性能和稳定性,包括日志调优、基线...
Acegi支持多种认证技术,如HTTP基本认证、LDAP、CAS和JAAS,以及基于表单的认证。 4. **Acegi Security的认证简述** Acegi提供了灵活的认证模型,允许开发者根据需求选择不同的认证策略。例如,可以通过HTTP基本...
EJBCA是一个开源的证书颁发机构(CA)系统,基于J2EE 1.3规范,使用EJB 2.0技术构建。这个系统以其灵活性、高性能和平台独立性著称,能够独立运行,也可以无缝集成到任何J2EE应用程序中。EJBCA的核心特性包括: 1. ...
- **域脚本单点登录配置**:涉及新建认证策略、新增外部认证服务器、启用LDAP单点登录、配置登录注销脚本等步骤。配置过程中需设置共享密钥,并在AD服务器上相应配置脚本。 4. **优缺点分析**:文档还涵盖了每种单...
##### 3.2 接口方式简述 系统采用了多种接口方式,包括但不限于RESTful API、SOAP、XML-RPC等,以满足不同场景下的需求。通过这些接口,ECM能够与外部系统进行高效的数据交互。 ##### 3.3 多种数据格式输入输出 ...
#### 一、交付Linux VDA简述 在《PoC手册 - Lab 14 交付Linux VDA》文档中,主要介绍了如何通过Citrix XenDesktop/XenApp/NetScaler产品线来实现Linux虚拟桌面的应用交付。该文档详细阐述了Linux VDA(Virtual ...
平台架构简述旨在帮助管理员理解各个层级的功能和交互方式,以便更好地进行系统维护和配置。平台还具备良好的扩展能力,可以适应企业规模的增长和技术环境的变化,确保系统的稳定性和灵活性。 仪表盘页面是管理员...
<br>更新的版本或PHP的应用范例,及PHP的技术论坛请访问http://netleader.126.com/<br><br>完成于2000-2-13日 <br>导读 <br>第一章 PHP 介绍 来龙去脉 功能概述 PHP 与其它 CGI 的比较 第二章...