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

对于NOVELL LDAP 轻量级目录服务的学习理解

    博客分类:
  • LDAP
阅读更多

对于NOVELL LDAP 轻量级目录服务的学习理解
采用NOVELL 的API
用到得包如下

import com.novell.ldap.LDAPAttributeSet;
import com.novell.ldap.LDAPConnection;
import com.novell.ldap.LDAPAttribute;
import com.novell.ldap.LDAPEntry;
import com.novell.ldap.LDAPException;


如何获取到一个LDAP服务器的连接

   首先要知道
    服务器地址 ldapHost,
    服务器端口 ldapPort, 默认为 LDAPConnection.DEFAULT_PORT|389
    服务器版本 ldapVersion, 默认为 LDAPConnection.LDAP_V3|3
    服务器管理员 DN,
    服务器密码 password,
   第一步
   LDAPConnection lc = new LDAPConnection();
   lc.connect(ldapHost,ldapPort);
   lc.bind(ldapVersion, username, password.getBytes("UTF8"));
   如果没抛异常,lc即为到LDAPConnection的连接
   
   在操作完成之后一定要关闭LDAP连接 lc.disconnect();

如何在LDAP服务器中加入一个实体即com.novell.ldap.LDAPEntry;

   定义LDAPAttributeSet attributeSet = new LDAPAttributeSet();
   在attributeSet 中加入属性 注意各种实体参数正确 比如 objectclass 具体说明见:ldap 协议 objectclasses 与 attribute
    attributeSet.add(new LDAPAttribute("objectclass", "inetOrgPerson"));
    attributeSet.add(new LDAPAttribute("riseGUID", riseGUID.toString()));
    attributeSet.add(new LDAPAttribute("fullName", name));
    attributeSet.add(new LDAPAttribute("userpassword", password));
    attributeSet.add(new LDAPAttribute("sn", name));
   确定实体dn 即实体在 LDAP 上的树形结构中的位置
   建立实体对象
   LDAPEntry newEntry = new LDAPEntry(dn, attributeSet);
   通过 LDAPConnection 连接 添加此实体 
   lc.add(newEntry);

如何在LDAP服务器中获取某实体

   第一、获取到LDAP服务器的管理员连接
   第二、确定查找参数 包括:该实体的DN 、String returnAttrs[] = { "LoginDisabled", 
      "loginExpirationTime","passwordExpirationTime","loginAllowedTimeMap","lockedByIntruder" };
     //字符串数组 表示要查找的参数 类似数据库中要查找的数据表字段名
   第三、验证某实体的属性
   LDAPAttribute attribute = new LDAPAttribute("userPassword", userPWD);
   lc.compare(userDN, attribute)   //返回true or false 可以用来判断用户的密码是否正确
   第四、进行查找
    LDAPEntry entry = lc.read(userDN, returnAttrs); //返回的是 LDAPEntry 对象 通过 LDAPEntry 对象来获取该实体的信息
如何在LDAP服务器中查找实体 
   第一、获取到LDAP服务器的管理员连接
   第二、确定查找范围,查找参数,查找内容等
    如:String searchBase = "o=武钢氧气有限责任公司";
     String searchFilter = "(cn=a000001)";        // 此处为查找表达式,支持正则表达式
     String searchScope = LDAPConnection.SCOPE_ONE  // 只查找基节点第一层的子节点
           |LDAPConnection.SCOPE_BASE // 只查找基节点
           |LDAPConnection.SCOPE_SUB  // 查找基节点下面的所有子节点
   第三、根据参数进行查找 返回 LDAPSearchResults 对象
   LDAPSearchResults searchResults = lc.search(searchBase,
     searchScope, searchFilter, new String[] { "cn",
       "objectClass", "userPassword","riseGUID"},false);
                  // 此方法中字符串数组表示查询的实体的属性,并在结果中返回这些属性
   第四:列出查询结果
   
    while (searchResults.hasMore()) {        //LDAPSearchResults 实现了 collection 接口
    LDAPEntry le = searchResults.next();      //结果集中每个内容都是一个 LDAPEntry 对象
    System.out.println(le.getDN());
    LDAPAttributeSet attributeSet = le.getAttributeSet();  //通过 LDAPEntry 对象来获取 LDAPAttributeSet 对象
    Set sortedAttributes = new TreeSet(attributeSet);
    Iterator allAttributes = sortedAttributes.iterator();

    while (allAttributes.hasNext()) {
     LDAPAttribute attribute = (LDAPAttribute) allAttributes.next();
     String attributeName = attribute.getName();   //获取参数名
     System.out.println("\t\t" + attributeName);   
     Enumeration allValues = attribute.getStringValues();//其参数值可以为多个,利用Enumeration 列出全部该属性的值
     if (allValues != null) {
      while (allValues.hasMoreElements()) {
       String Value = (String) allValues.nextElement();
       System.out.println("\t\t\t" + Value);
      }
     }
    }
   }
如何修改、删除 已存在的某实体的 属性 Attribute
    第一、获取到LDAP服务器的管理员连接
    第二、创建该实体要修改的属性列表 ArrayList modList = new ArrayList();
    第三、用 LDAPModification 对象填充该列表 如:
      LDAPAttribute attribute = new LDAPAttribute("telephoneNumber", "1 801 555 1212");
      modList.add(new LDAPModification(LDAPModification.ADD, attribute));
      // 这里 LDAPModification 对象有几种方式 LDAPModification.ADD、LDAPModification.DELETE、LDAPModification.REPLACE
    第四、用list填充 LDAPModification  对象
      LDAPModification[] modsadd = new LDAPModification[modList.size()];
      modsadd = (LDAPModification[]) modList.toArray(modsadd);
    第五、通过 LDAP连接就行修改操作
      lc.modify(dn, modsadd);         //注:lc为LDAP服务器的连接 modsadd 为封装后的LDAPModification 对象
      
      
如何删除某个已存在实体
    通过获取LDAP连接 deleteDN为该节点的DN
    lc.delete(deleteDN);
    
    
    
    
JLDAP 访问LDAP服务器的错误代码含义(已知的)

91:Unable to connect to server 172.16.5.12:389 (91) Connect Error  //在获取连接的时候LDAP 服务器连接地址或端口不正确
68:Entry Already Exists (68) Entry Already Exists      //添加实体时抛出实体已经存在信息
32:No Such Object (32) No Such Object        //实体不存在

分享到:
评论

相关推荐

    suse下的novell目录服务(基于ldap协议)

    Novell eDirectory 是一款高级目录服务解决方案,支持 LDAP(轻量级目录访问协议)标准,被广泛用于企业环境中管理用户账户、组、策略等目录信息。 #### 安装与配置步骤 ##### 准备阶段 - **操作系统**: 使用 OES...

    novellLDAPjar

    1. **LDAP协议**: LDAP是一种轻量级的目录访问协议,它允许用户查询和修改存储在分布式目录服务中的信息。这种服务通常用于存储用户账户、组信息、配置数据等,并提供快速查找和验证身份的功能。 2. **Novell LDAP ...

    LDAP技术,LDAP学习大全

    X.500目录服务是一种基于OSI网络协议的目录服务标准,它是LDAP(轻量级目录访问协议)的前身。X.500的核心在于提供一种全局性的目录服务框架,允许组织间共享目录信息。然而,X.500的一个主要缺点是它并不直接支持...

    ldap目录数据库讲义

    LDAP(轻量级目录访问协议)是一种用于访问和管理分布式目录信息的标准协议,它在IT行业中广泛应用于身份验证、用户账户管理、权限控制等多个领域。相较于X.500,LDAP更加轻量、高效,并且适应互联网环境。 X.500是...

    ldap技术总结的文档下载

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

    什么是LDAP连接工具?如何利用好它.docx

    JXplorer 是一个轻量级且跨平台的 LDAP 浏览器,适用于 Windows、Linux 和 MacOS 操作系统。它的特点是拥有简洁的用户界面,让用户能够快速地浏览、搜索和修改 LDAP 目录。JXplorer 支持多种 LDAP 协议和安全性设置...

    LDAP编辑器:可以连接LDAP和编辑LDAP数据

    LDAP(Lightweight Directory Access Protocol)是一种轻量级目录访问协议,常用于组织和管理分布式身份信息。它提供了一种标准的方式来存储和检索用户、组、服务等对象的数据。一个 LDAP 编辑器是专门设计用来与 ...

    Ldap学习手册pdf版

    它被设计成一种轻量级、易于部署和使用的目录服务协议。 - **主要用途**:主要用于存储、检索和管理用户账号数据,如电子邮件地址、电话号码等,以及组织结构信息。 #### 2. LDAP的历史与发展 - LDAP是由Internet ...

    Ldap browser 2.5

    LDAP(轻量级目录访问协议)浏览器是一种用于交互式浏览和管理基于LDAP的目录服务的工具。在标题"LDAP浏览器2.5"中,我们可以理解这是一款特定版本的软件,专为开发和操作Ldap环境提供便利。版本号2.5表明这是该工具...

    Softerra LDAP Browser 4.5 (64-bit)

    【Softerra LDAP Browser 4.5 (64-bit)】是一款专为IT专业人士设计的轻量级且功能强大的LDAP(轻量目录访问协议)浏览器工具。它允许用户轻松地探索、管理和维护LDAP目录服务器,提供了高效的数据查看、编辑和管理...

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

    LDAP(Lightweight Directory Access Protocol)是一种轻量级目录访问协议,它被设计用于快速查找和管理分布式目录信息。在IT环境中,LDAP通常用于存储和管理用户账户、权限、组信息等,是企业实现身份验证、授权和...

    CsharpLDAP-v2.1.4 C#

    在IT行业中,LDAP(轻量级目录访问协议)是一种广泛应用于网络目录服务的标准协议,它允许用户和应用程序查询和修改分布式目录服务信息。C#作为.NET框架的主要编程语言,提供了丰富的库来与LDAP服务器进行交互。本文...

    用JAVA实现LDAP的访问.txt

    无论是使用Spring框架中的`LDAPTemplate`还是轻量级的`JLDAP`,都可以有效地实现对LDAP服务的访问。选择哪种方式取决于具体的应用场景和需求: - 如果需要与Spring框架集成并且享受其带来的便利,那么`LDAPTemplate`...

    LdapAdmin.rar

    **LDAP(轻量级目录访问协议)**是一种用于管理和访问分布式目录服务的协议,它允许网络用户通过TCP/IP协议在互联网上查找、编辑和管理目录信息。LDAPAdmin是一款专为系统管理员设计的实用工具,方便他们高效地进行...

    lib-v2.1.4 C# dot net 开发库

    描述中提到的“lib-v2.1.4 novell LDAP 开发库”进一步明确了这个库是针对Novell公司的轻量级目录访问协议(LDAP)的。LDAP是一种行业标准协议,用于访问和管理分布式目录服务,如用户账户、组信息、网络资源位置等...

    EAD与LDAP服务器配合方案[参照].pdf

    《EAD与LDAP服务器配合方案》这篇文档主要讨论了如何在软件开发领域中,利用EAD(Endpoint Admission Decision,端点准入决策)系统与LDAP(Lightweight Directory Access Protocol,轻量级目录访问协议)服务器相...

    EAD与LDAP服务器配合方案实用.pdf

    本方案探讨了EAD如何与LDAP(Lightweight Directory Access Protocol,轻量级目录访问协议)服务器协同工作,以提供更高效、安全的网络接入管理。 **适用行业** EAD与LDAP服务器的配合方案广泛适用于政府机关、...

    jxplorer(LDAP工具)绿色版

    Jxplorer是一款开源、跨平台的轻量级 LDAP (Lightweight Directory Access Protocol) 浏览器和编辑器。它为用户提供了直观且易用的界面,使得对LDAP目录服务的数据操作变得简单而高效。这款绿色版的Jxplorer无需安装...

    jldap4.3.jar下载

    LDAP(轻量级目录访问协议)是一种用于访问和管理分布式目录服务的开放标准协议。它允许用户快速查找、修改和管理网络中的信息,如用户账户、组、网络资源等。在Java中,我们可以利用Java LDAP API来与LDAP服务器...

    第05部分 Kerberos及LDAP协议

    然而,X.500 的 **目录访问协议(DAP)** 实现起来较为复杂,且客户端负担重,因此后来发展出了更简洁的版本 **轻量级目录访问协议(LDAP)**。 **LDAP** 是一种简化版的 DAP,旨在降低实现难度和减轻客户端的负担。...

Global site tag (gtag.js) - Google Analytics