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

LDAP应用技术简述

    博客分类:
  • java
阅读更多

编写 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 不是合适的选择。

例:

java 代码
  1. import com.novell.ldap.*;  
  2.   
  3. public class AddEntry  
  4.   
  5. {  
  6.   
  7.     public static void main( String[] args )  
  8.   
  9.      {  
  10.   
  11.         if (args.length != 4 ) {  
  12.   
  13.              System.err.println("Usage:    java AddEntry   
  14.   
  15.                                                  + " " );  
  16.   
  17.              System.err.println("Example: java AddEntry Acme.com"   
  18.   
  19.                          + " \"cn=admin,o=Acme\" secret \"ou=Sales,o=Acme\"" );  
  20.   
  21.              System.exit(1 );  
  22.   
  23.          }  
  24.   
  25.                  
  26.   
  27.         int ldapPort = LDAPConnection.DEFAULT_PORT;  
  28.   
  29.         int ldapVersion   = LDAPConnection.LDAP_V3;  
  30.   
  31.          String ldapHost        = args[0 ];  
  32.   
  33.          String loginDN         = args[1 ];  
  34.   
  35.          String password        = args[2 ];  
  36.   
  37.          String containerName   = args[3 ];  
  38.   
  39.          LDAPConnection lc = new LDAPConnection();  
  40.   
  41.          LDAPAttribute   attribute = null ;  
  42.   
  43.          LDAPAttributeSet attributeSet = new LDAPAttributeSet();  
  44.   
  45.         /* To Add an entry to the directory,
  46.           *    -- Create the attributes of the entry and add them to an attribute set
  47.           *    -- Specify the DN of the entry to be created
  48.           *    -- Create an LDAPEntry object with the DN and the attribute set
  49.           *    -- Call the LDAPConnection add method to add it to the directory
  50.           */             
  51.   
  52.          String objectclass_values[] = { "inetOrgPerson" };  
  53.   
  54.          attribute = new LDAPAttribute( "objectclass" , objectclass_values );  
  55.   
  56.          attributeSet.add( attribute );       
  57.   
  58.          String cn_values[] = { "James Smith" , "Jim Smith" , "Jimmy Smith" };  
  59.   
  60.          attribute = new LDAPAttribute( "cn" , cn_values );  
  61.   
  62.          attributeSet.add( attribute );  
  63.   
  64.          String givenname_values[] = { "James" , "Jim" , "Jimmy" };  
  65.   
  66.          attribute = new LDAPAttribute( "givenname" , givenname_values );  
  67.   
  68.          attributeSet.add( attribute );  
  69.   
  70.          attributeSet.add( new LDAPAttribute( "sn" , "Smith" ) );  
  71.   
  72.          attributeSet.add( new LDAPAttribute( "telephonenumber" ,  
  73.   
  74.                                                      "1 801 555 1212" ) );  
  75.   
  76.          attributeSet.add( new LDAPAttribute( "mail" , "JSmith@Acme.com" ) );  
  77.   
  78.          String   dn   = "cn=JSmith," + containerName;       
  79.   
  80.          LDAPEntry newEntry = new LDAPEntry( dn, attributeSet );  
  81.   
  82.         try {  
  83.   
  84.             // connect to the server   
  85.   
  86.              lc.connect( ldapHost, ldapPort );  
  87.   
  88.             // authenticate to the server   
  89.   
  90.              lc.bind( ldapVersion, loginDN, password );  
  91.   
  92.              lc.add( newEntry );  
  93.   
  94.              System.out.println( "\nAdded object: " + dn + " successfully." );  
  95.   
  96.             // disconnect with the server   
  97.   
  98.              lc.disconnect();  
  99.   
  100.          }  
  101.   
  102.         catch ( LDAPException e ) {  
  103.   
  104.              System.out.println( "Error:   " + e.toString());  
  105.   
  106.          }                                    
  107.   
  108.          System.exit(0 );  
  109.   
  110.      }  
  111.   
  112. }  
分享到:
评论

相关推荐

    LDAP实用资料收录.doc

    在大型环境中,为了实现高可用性和数据一致性,LDAP目录通常会采用复制技术,将目录数据同步到多个服务器,确保即使在主服务器故障时,服务仍能持续运行。 **1.7-1.8 LDAP的应用与数据结构** LDAP不仅用于用户身份...

    常见的JAVA框架

    - **主要应用技术**:JSP, TagLib, JavaBean, XML等 - **出处**:http://jakarta.apache.org/struts/index.html - **简述**:Struts是一个由Apache基金会支持的开源项目,广泛应用于企业级应用的开发。它基于MVC设计...

    JAVA核心技术

    主要应用技术:JSP,TagLib,JavaBean,XML等??出处:http://jakarta.apache.org/struts/index.html??简述:这是APACHE的开源项目,目前应用很广泛。基于MVC模式,结构很好,基于JSP。Jbuilder8里已经集成了STRUTS1.02...

    FusionInsight HD大数据产品介绍.pdf

    - **安全控制**:通过集成Kerberos、LDAP等技术,实现用户身份验证和权限管理,确保数据安全。 - **性能优化**:华为团队对Hadoop、HBase等组件进行了深度优化,提升了系统整体性能和稳定性,包括日志调优、基线...

    acegi 入门培训教程

    Acegi支持多种认证技术,如HTTP基本认证、LDAP、CAS和JAAS,以及基于表单的认证。 4. **Acegi Security的认证简述** Acegi提供了灵活的认证模型,允许开发者根据需求选择不同的认证策略。例如,可以通过HTTP基本...

    ejbca+mysql安装成功教程.docx

    EJBCA是一个开源的证书颁发机构(CA)系统,基于J2EE 1.3规范,使用EJB 2.0技术构建。这个系统以其灵活性、高性能和平台独立性著称,能够独立运行,也可以无缝集成到任何J2EE应用程序中。EJBCA的核心特性包括: 1. ...

    SANGFOR_AC&SG_v6.0_2015年度渠道高级认证培训05_AD域单点登录.ppt

    - **域脚本单点登录配置**:涉及新建认证策略、新增外部认证服务器、启用LDAP单点登录、配置登录注销脚本等步骤。配置过程中需设置共享密钥,并在AD服务器上相应配置脚本。 4. **优缺点分析**:文档还涵盖了每种单...

    企业协同办公平台技术方案建议书.docx

    ##### 3.2 接口方式简述 系统采用了多种接口方式,包括但不限于RESTful API、SOAP、XML-RPC等,以满足不同场景下的需求。通过这些接口,ECM能够与外部系统进行高效的数据交互。 ##### 3.3 多种数据格式输入输出 ...

    PoC手册 - Lab 14 交付Linux VDA.pdf

    #### 一、交付Linux VDA简述 在《PoC手册 - Lab 14 交付Linux VDA》文档中,主要介绍了如何通过Citrix XenDesktop/XenApp/NetScaler产品线来实现Linux虚拟桌面的应用交付。该文档详细阐述了Linux VDA(Virtual ...

    JumpServer 堡垒机 V2.18(管理员)使用手册-v1.1

    平台架构简述旨在帮助管理员理解各个层级的功能和交互方式,以便更好地进行系统维护和配置。平台还具备良好的扩展能力,可以适应企业规模的增长和技术环境的变化,确保系统的稳定性和灵活性。 仪表盘页面是管理员...

    PHP4 中文手册

    <br>更新的版本或PHP的应用范例,及PHP的技术论坛请访问http://netleader.126.com/<br><br>完成于2000-2-13日 <br>导读 <br>第一章 PHP 介绍 来龙去脉 功能概述 PHP 与其它 CGI 的比较 第二章...

Global site tag (gtag.js) - Google Analytics