`
jacally
  • 浏览: 770169 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

LDAP应用技术简述 转载

    博客分类:
  • JAVA
阅读更多

LDAP应用技术简述

编写LDAP访问程序; a)        JAVA                         i.              JNDI(JAVA 命名及目录接口)

JNDIJAVA为命名及目录服务访问制定的基础接口标准,用于访问包括DNSNISLDAP,文件系统等任何以树目录形式存在目标对象,并且基本上可保持访问方式的一致(意味着代码共用)。对于不同的目录类型,JNDI通过使用不同的目录驱动,以保证访问方式的一致。

以下连接可获得较详细的讲解和例程:http://java.sun.com/products/jndi/tutorial/

经常使用的LDAP驱动有JDK自带的LDAP provider,还有IBMPROVIDER,以及NOVELJNDI产品。需要提醒的是,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开发的,原是针对NovelNDS目录设计的JAVA访问工具。NOVELNDS和网景(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. }  

分享到:
评论

相关推荐

    RFC1823 LDAP应用程序接口中文版

    **标题与描述解析** 标题"RFC1823 LDAP应用程序接口中文版"表明这是一个关于轻量级目录访问协议...中文版的出现,使更多非英语背景的开发者能更方便地掌握这一核心技术,推动了全球特别是中文社区的LDAP应用发展。

    RFC1823_LDAP 应用程序界面 .doc

    **LDAP 应用程序接口 (RFC1823)** LDAP (Lightweight Directory Access Protocol) 是一种用于访问和管理分布式目录服务的协议,通常用于存储和检索用户、组、资源等信息。RFC1823 提供了关于 LDAP 应用程序接口...

    LDAP应用概述与qmail+LDAP安装配置

    ### LDAP应用概述与qmail+LDAP安装配置 #### 一、LDAP基础知识介绍 **LDAP**(Lightweight Directory Access Protocol)是一种基于X.500标准的目录访问协议,但进行了简化以便更适合互联网环境下的轻量级目录服务...

    基于Linux的LDAP应用环境研究与目录服务实现.pdf

    【基于Linux的LDAP应用环境研究与目录服务实现】 在信息技术领域,目录服务是管理和存储组织信息的一种高效方式,尤其在大型网络环境中。轻量级目录访问协议(LDAP)作为目录服务的标准,因其轻便和高效而被广泛...

    理解与应用LDAP服务器

    【LDAP(Lightweight Directory Access Protocol)理解与应用】 LDAP,全称为轻量级目录访问协议,是一种用于存储和检索信息的协议,常用于构建企业级的目录服务。它允许用户和应用程序快速查找、修改和管理分布式...

    RFC1823LDAP应用程序接口官方文档[定义].pdf

    LDAP应用程序接口官方文档 LDAP(Lightweight Directory Access Protocol,轻量级目录访问协议)是一种目录服务协议,用于存储和管理分布式目录信息。LDAP应用程序接口(LDAP API)是开发者使用LDAP协议与目录服务...

    基于LDAP统一用户管理系统的研究与应用

    在实际应用中,LDAP和SSO的结合还涉及到以下关键技术: 1. 认证机制:包括简单绑定(Simple Bind)、匿名绑定、以及更安全的SASL(Simple Authentication and Security Layer)协议,这些机制确保了用户身份验证的...

    Go-使用Golang编写基于LDAP的Web应用程序

    总的来说,使用Golang编写基于LDAP的Web应用程序涉及网络编程、身份验证、目录服务交互等多个技术领域。通过学习和实践,你可以利用Go语言的强大功能,构建出高效、可靠的Web应用,满足企业级的身份管理和访问控制...

    LdapBrowser ldap连接工具

    1. **图形化界面**:LdapBrowser提供了直观的图形用户界面,使得非技术用户也能轻松理解和操作LDAP目录。 2. **连接管理**:支持创建、保存和管理多个LDAP服务器连接,适应多环境下的工作需求。 3. **目录浏览**:...

    ldap.zip_LDAP DELPHI_delphi ldap

    综上所述,这个"ldap.zip"压缩包中的项目是一个结合了DELPHI和LDAP技术的电话簿应用,涵盖了从连接LDAP服务器、查询和操作数据,到设计用户界面等多个方面的知识。开发者在实现这个应用时,需要熟练掌握DELPHI编程和...

    ldap技术总结和开发文档

    **LDAP技术概述** LDAP(Lightweight Directory Access Protocol)是一种轻量级目录访问协议,用于管理和检索分布式目录服务中的数据。这种协议设计的目标是提供一种快速、简单的方式,以供用户和应用程序查找、...

    理解与应用ldap服务器

    【LDAP(轻量级目录访问协议)的理解与应用】 LDAP是一种用于访问和管理分布式目录服务的协议,主要用于存储和检索用户、组、网络资源等信息。尽管“轻量级”可能让人误解其复杂性,但事实上,LDAP简化了目录服务的...

    LDAP 技术总结

    **LDAP技术概述** LDAP(Lightweight Directory Access Protocol)是一种轻量级目录访问协议,用于管理和检索分布式目录服务中的数据。这种协议广泛应用于企业环境中,尤其是那些需要集中存储和管理用户身份信息、...

    ldap技术总结的文档下载

    **LDAP技术概述** LDAP(Lightweight Directory Access Protocol)是一种轻量级目录访问协议,用于存储和检索分布式目录服务中的信息。它基于X.500标准,但设计得更为简洁,适合互联网环境。LDAP允许用户通过简单的...

    基于LDAP目录服务的研究与应用

    目录服务则通过信息的集中存储解决了现实中面临的管理和维护的...为了在实际中应用和部署LDAP,本文讨论了LDAP应用部署的详细过程,并简要介绍了三种LDAP编程模型LDAPCAPI、ADSI、JNDI。文章的后面是LDAP应用方案实例。

    LdapBrowser2.82版和LDAP使用手册

    它主要用于存储和检索用户、组织、资源等信息,广泛应用于身份验证、权限控制、邮件系统以及企业资源管理等领域。 **LdapBrowser 2.82版** LdapBrowser是一款开源的LDAP客户端工具,适用于系统管理员和开发者。它...

    LDAP统一安全身份管理系统_应用开发培训

    **LDAP统一安全身份管理系统:应用开发培训** **一、什么是LDAP** LDAP(Lightweight Directory ...通过这样的培训,开发者可以掌握构建基于LDAP的身份管理系统的关键技术和实践方法,提升企业信息安全管理能力。

    ldap 浏览器 LdapBrowser282

    - **开发人员**:在开发 LDAP 集成的应用程序时,LdapBrowser282可以作为调试工具,帮助验证数据结构和查询逻辑。 - **故障排查**:当遇到 LDAP 相关的问题时,使用LdapBrowser282检查目录状态,定位问题源头。 ###...

Global site tag (gtag.js) - Google Analytics