LDAP应用技术简述

2023-11-07

 
一、简介;

         a)   X500
目录服务;
         OSL X.500目录是基于OSI网络协议的目录服务协议,也是LDAP的前身。但是X。500的缺点是不支持TCP/IP,而是支持OSI协议,显然,在 Windows等个人电脑上不可以使用OSI协议,在此前提下,也就产生了访问X500目录的网关--LDAP。
         b)   LDAP;
         LDAP (Lightweight Directory Access Protocal, 轻型目录访问协议),是针对以X500目录为主的目录服务的前端访问协议,是OSL X.500目录访问网关。由于X500原来不是为TCP/IP网络设计的,而目录服务的最大使用者偏偏是TCP/IP客户,因此,LDAP就被设计成使用 TCP/IP访问OSI 目录服务的服务协议,而随着互联网成为网络的主流,LDAP也成为一个具备目录的大部分服务的协议。
         LDAP 主要解决目录服务的前端访问形式,而不是对目录服务本身制定的的协议,理论上,LDAP支持后台的任何存储形式,包括X500,关系数据库,文本数据库或 文件目录等。LDAP继承了X500目录的大部分定义,无论是访问样式还是语法都与X500相似。

         c)   Active Directory 活动目录;
         Active Directory (AD)是微软为.net中的对象访问定义的目录服务,包括目录服务本身,以及客户端API(ADSI)。Ad并不是LDAP在.net中的实现,而是 X500在.net中的实现,但AD前端支持并主要以LDAP形式进行访问。完整地说,AD是基于微软自身定义的X500扩展的一系列Schema实现的 X500目录服务及相关的访问控制工具的集合,其前端支持LDAP的查询,目的是对.net中涉及的所有网络对象提供目录服务。各个schema在一个树 森林中是唯一的。
        普通的LDAP客户端工具与AD并不兼容。WINDOWS2000自带有一些LDAP客户端工具,包括 ldifde.exe,ldp.exe。并提供专门的LDAP程序接口ASDI。同时,可以在WINDOWS管理台上添加AD管理snap-in,配合已 有的AD基本管理工作。使用以上工具可以得到微软样式的详情,但总的来说,WINDOWS2000原则上不鼓励用户在AD的基础上进一步的开发,没有开发更多的资料。
         WINDOWS2000中,访问AD记录的API被集成到了内核,服务于WINDOWS2000从主机权限和对象管理,直接网络的权限和对象管理,同时API细节没有对外公开。因此,某种程度上,AD是一个只对WINDOWS2000有用的目录服务,AD连同访问 API,形成一个基于X500-LDAP的孤岛,从一开始就没有打算与其他厂商产品有兼容的余地,这也是微软的一贯风格。参考:
    http://www.microsoft.com/windows2000/en/server/help/default.asp? url=/windows2000/en/server/help/sag_ADschema_Intro.htm在WINDOWS2000中注册表中的位置是:HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/NTDS/
        使用AD时,用户可以自行在微软样式的基础上添加新的类和属性,微软称这个就是schema的增添,这与UNIX环境下有一些不同,用户余地较少。如果真的需要添加,可以使用按:
http://www.microsoft.com/ windows2000/techinfo/planning/activedirectory/adschemasteps.asp的指示一步步做,也可以预先做好ldif文件,使用ldifde.exe一次性地进行添加,效果是一样的。         在默认的状况下,WINDOWS2000的AD初始具备三个上下文对象:
         dc=domainname; 微软定义domainname必须是examples.com格式,即dc=example,dc=com;
         cn=Configuration,dc=example,dc=com; 这一条目和上下文存储设置信息;
cn=schema,cn=configuration,dc=example,dc=com;

    二、服务器实现方式;
     用户可以选择购买商业的LDAP服务器,如SUN的iplanet directory server;但在大部分情况下,使用openldap足以完成所需要的目录服务工作。另外,包括windows 2000以及如domino6这样的系统软件中,通常也都集成了一个自身使用的LDAP服务器。

    三、数据结构原理;

         不少LDAP开发人员喜欢把LDAP与关系数据库相比,认为是另一种的存贮方式,然后在读性能上进行比较。实际上,这种对比的基础是错误的。LDAP和关 系数据库是两种不同层次的概念,后者是存贮方式(同一层次如网格数据库,对象数据库),前者是存贮模式和访问协议。LDAP是一个比关系数据库抽象层次更 高的存贮概念,与关系数据库的查询语言SQL属同一级别。 LDAP是实现了指定的数据结构的存贮,它包括以下可以用关系数据库实现的结构要求:树状组织、条目认证、类型定义、许可树形记录拷贝。
         a)   树状组织;
         无论是X500还是LDAP都 是采用树状方式进行记录。每一个树目录都有一个树根的入口条目,子记录全部是这一根条目的子孙。这是目录与关系数据类型最大的区别(关系数据库的应用结构也可实现树状记录)。因此,把目录看作是更高级的树状数据库也未尝不可,只不过除此外,它不能实现关系存贮的重要功能。

         b)   条目和条目认证;
         LDAP是以条目作为认证的根据。ROOT的权限认证与目录本身无关,但除此外所有条目的认证权限由条目本身的密码进行认证。LDAP可以配置成各种各样不同的父子条目权限继承方式。
        每一个条目相当于一个单一的平面文本记录,由条目自身或指定的条目认证进行访问控制。因此,LDAP定义的存贮结构等同于一批树状组织的平面数据库,并提供相应的访问控制。
        条目中的记录以名-值对的形式存在,每一个名值对必须由数据样式schema预定义。因此,LDAP可以看作是以规定的值类型以名值对形式存贮在一系列以树状组织的平面数据库的记录的集合。
         c)   数据样式(schema);
         数据样式schema是针对不同的应用,由用户指定(设计)类和属性类型预定义,条目中的类(objectclass)和属性必须在在LDAP服务器启动 时载入内存的schema已有定义。因此,AD活动目录中的条目记录就必须符合Active Directory的schema中。如果已提供的schema中的定义不够用,用户可以自行定义新的schema.
        在
这里中可以看到常用的schema。

         d)   类型分类(objectClass);
        条目中的记录通过objectclass实现分类,objectClass是一个继承性的类定义,每一个类定义指定必须具备的属性。如某一条目指定必须符合unit类型,则它必须具备chinacfirm类形指定的属性,象法人代表什么的。
通过objectclass分类,分散的条目中的记录就实际上建立了一个索引结构,为高速的读查询打下了基础。Objectclass也是过滤器的主要查询对象。

         e)   过滤器和语法;
         LDAP是一个查询为主的记录结构,无论是何种查询方式,最终都由过滤器缺点查询的条件。过滤器相当于SQL中的WHERE子句。任何LDAP的类过滤和字符串都必须放在括号内,如(objectclass=*),指列出所有类型的记录(不过分类)。
        可以使用=,>=,<=,~=(约等于)进行比较,如(number<=100)。合并条件是最怪的,必须把操作符放在两个操作对象的前面而不是中间,单一操作对象用括号括起来。如
         A与B,不是A&B,而是(&(A)(B))。
        或使用"|"表示;
        非使用"!"表示。
        对于"与",或"或"在操作符后可以跟多个条件表达式,但非后则只参是单个表达式。
        详见RFC1558。

         f)   树移植;
         LDAP 最重要的特性和要求并不是读性能,而是扩展性。这一特性是通过树移植和树复制实现的。按LDAP的RFC要求,LDAP目录应该可以任意地在不同的目录间连接、合并并实现自动复制,及自动性同步。这意味着用户可以在任一LDAP中访问条目,而不用管其中某一部分是否复制自全世界另一目录中的记录,同时另一目录中的记录同样在正常运作。
        这一特性如果在关系数据库中实现,意味着要使用程序化的非规范化预复制。类似于汇总帐目的设计。
         g)   LDIF交换文件
         LDIF是LDAP约定的记录交换格式,以平面文本的形式存在,是大部分LDAP内容交换的基础,如拷贝、添加、修改等操作,都是基于LDIF文件进行操作。

         f)   JAVA或CORBA对象串行化存储
        网络高效率的访问加上JAVA的跨平台能力,当把JAVA或CORBA对象串行化后存储到LDAP目录上时,可以产生非同一般的集成效果--实际上,这正是EJB和.NET的网络定位基础技术。
        使用JAVA或CORBA对象存储时,必须首先让LDAP服务支持该对象定义,也就是说包含qmail.schema或corba.schema。
         JAVA 必须存储在objectclass=javacontainer的条目中,而且必须带有cn属性,这意味着除非该JAVA类专门实现了 DirContext接口,对于大多数JAVA类来说,只能采用DirContext代替Context实现bind的添加操作。取出JAVA类相对要简 单得多,只需使用context.lookup()获得该对象的句柄,然后强制造型成所需要的对象就可以了,如:
         Person p=(Person)contex.lookup("cn=elvis,dc=daifu,dc=com");
这个句法在EJB的程序中,是经常用到的。
         使用CORBA的跨语言性质,使用CORBA存储对象比JAVA更加诱人,这意味着所存储的对象可以被任何语言编写的客户端访问。其实,微软的.net说 到底也非常简单,无非是把COM对象存储到微软自家的目录ActiveDirectory里面,从而可以在网络范围内使用任何微软平台的语言进行对象访问 而已。众所周知,COM就是与CORBA相对的微软规范。
         使用对象串行化技术,可以把常用对象如某个打印机,某个客户直接存储到LDAP中,然后快速获取该对象的引用,这样,就比把对象信息存储到关系数据库中, 分别取出属性,然后再初始化对象操作的做法,效率要高得多了。这是LDAP目前比普通关系数据库存储要优秀的地方,而对象数据库还不成熟。


    http://msdn.microsoft.com/library/default.asp? url=/library/en-us/netdir/ad/schema_implementation.asp

         AD
一、              客户端访问工具;
a)         openldap 命令行;
Openldap 提供了在UNIX命令行下的访问工具集。包括ldapsearch,ldapadd,ldapmodify,ldappassword,ldapdelete等必要的工具。除了使用man获得使用帮助外,还可以在http://www.tldp.org/HOWTO/LDAP-HOWTO/,及http://www.csis.gvsu.edu/GeneralInfo/Oracle/network.920/a96579/,获得使用的支持。
例子:通过查询根上下文判断LDAP服务器是否正常工作:
$ ldapsearch -x -b "" -s base "objectclass=*" namingContexts
注:该命令查询该当前服务器上的命令上下文,通常就是rootdn的上下文记录。
-x    指该查询使用目录认证而不是使用SASL认证,;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LDAP应用技术简述 的相关文章

随机推荐

  • C#时间格式转换问题(12小时制和24小时制)

    string time Convert ToDateTime date ToString yyyy MM dd HH mm 24小时 string time Convert ToDateTime date ToString yyyy MM
  • @FeignClient服务之间调用Get请求传递对象参数

    使用feign进行服务间调用时 Get请求有多个参数的时候如何使用对象传参呢 第一步 引入pom依赖
  • unity中控制主角的移动和旋转

    在游戏中我们通常要控制玩家的移动和旋转 首先我们说一下移动 移动的本质就是在Update 或LateUpdate 中不断修改物体的position来实现移动 移动的方法有4中 1 transform Translate 第一种方法与直接修改
  • 两列表同时排序,排序后对应元素不变(用到zip打包和解包)

    number是数字 lis是要排的序列 def sort number list number lis 利用 解包方式 将一个排序好的元组 通过元组生成器再转成list list sorted list list zip sorted zi
  • 创造自己的专属免费网盘:Nextcloud

    由于百度网盘速度奇慢无比 而且同步文件夹还需要会员什么的 这对于Nextcloud来说简直就是欺负人啊 所以我们通过搭建一个Nextcloud的私有云 来解决这些问题 目录 简介 快捷安装 配置ssl 启用https 报错 意外处理 一 简
  • less动态样式语言(预处理语言)

    一 使用方法 Less是一门CSS 预处理语言 它扩展了 CSS 语言 增加了变量 Mixin 函数等特性 使 CSS 更易维护和扩展 Less 可以运行在 Node 或浏览器端 1 客户端使用 1 下载less 2 编写项目less文件
  • 红米10A 一键root教程 解锁BL 跳过168小时限制 刷面具root救黑砖刷机 解决无法解锁BL 新版本刷机

    新版本 红米10A 解锁BL 无法秒解锁BL root bootloader 要刷机 线刷救砖 获取Root权限都需要解除bootloader锁 我们称解除刷机限制的这个操作就叫解锁BL 只有解锁BL后 才可以进行刷机 刷Root权限等等一
  • Linux多进程:orphan process——孤儿进程

    孤儿进程orphan process 当父进程比子进程先结束 这样的子进程就成为了孤儿进程 每当出现一个孤儿进程 内核会把孤儿进程的父进程设置为init 托管 init进程会循环wait 孤儿进程结束 然后做剩下的善后 回收资源 因此 孤儿
  • 验证链表是否有环

    思路 声明一个快指针 一个慢指针 快指针一次走两步 慢指针一次走一步 如果快慢两个指针相遇 说明链表有环 至于为什么快慢两个指针相遇就说明链表中有环 这个牵扯到数学证明 这里就不论证了 我们直接用结论 代码实现 初始化的时候 快指针指向 h
  • SSM框架学习(三),SSM整合

    主要整合的主要整合Spring和Mybatis 将Mybatis交由Spring管理 第一步配置datasource
  • 因找不到D3DCompiler_47.dll文件导致游戏软件无法启动问题

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库 这时你可以下载这个D3DComp
  • jdbc中加载oracle驱动程序,在一个Java应用程序中使用多个Oracle JDBC驱动程序?

    我想通过JDBC连接到两个不同的Oracle数据库 一个8 0 5 0 0和一个12c 我确实有两个JDBC驱动程序 它们可以通过简单的 hello world 应用程序分别成功地连接到相应的DB 下面 我将它们都放在一个Java应用程序中
  • 【R语言】实验五 综合应用

    系列文章目录 实验一 R 语言数据结构 数据导入与数据处理 实验二 基本数据处理 实验三 数据可视化 实验四 数据分析 实验五 综合应用 实验数据 实验数据下载 1 systation 数据集 systation csv 中包含的是沈阳地铁
  • springmvc_上传图片以及显示图片到页面

    首先我使用的开发工具是IntelliJ idea 今天想做一个上传头像以及显示头像的简单功能 也在网上查询了很多资料 真的看得头大 最后还是自己鼓捣出来了 明明很简单的一个功能 先看看效果吧 需要注意的地方 1 记住要在wepapp文件目录
  • 必看,Mac苹果电脑重装系统教程

    们在使用mac电脑的过程中 因为Mac电脑长时间使用或多或少都可能会出现一些问题 这个时候我们可以选择重新安装系统来解决这些问题 Mac电脑重装系统方法其实很简单 分为两种 一种可以在线重装系统 一种可以将Mac系统制作到U盘里进行系统重装
  • ubuntu pptp

    Hi 1 安装pptp linux sudo apt get install pptp linux binutils 2 建立pptp连接 sudo pptpsetup create testvpn server 45 77 243 243
  • 在Ubuntu18.04上安装Docker CE的方法

    卸载旧版本 如果之前安装旧版本 需要先卸载 1 sudoapt get remove docker docker engine docker io containerd runc 设置仓库 更新apt包索引 1 sudoapt get up
  • Java实验3 员工管理系统

    Java实验3 员工管理系统 文章目录 Java实验3 员工管理系统 toc 1 实验要求 2 具体创建过程 3 结果展示 4 代码展示 1 实验要求 进行一个企业员工基本信息的数据库设计 使用员工信息表 部门信息表两个数据表来存放数据 选
  • SSM集成Redis的小案例

    一 详情介绍 这里是使用Window版本的Redis 将下载好的Windows版本的Redis压缩包解压到一个目录下 客户端使用的是Redis Desktop Manager 使用Redis需要启动相应的服务 操作如下图所示 备注 双击打开
  • LDAP应用技术简述

    LDAP应用技术简述 一 一 简介 a X500 目录服务 OSL X 500目录是基于OSI网络协议的目录服务协议 也是LDAP的前身 但是X 500的缺点是不支持TCP IP 而是支持OSI协议 显然 在 Windows等个人电脑上不可