1.1、LDAP目录结构

 

此图为树形目录结构,我将此跳过去了,因为这个是按照“国家这种结构来划分的”。如果你喜欢这样看更好,如下还有一种:

树也可以根据互联网域名组主。这种命名方式正越来越受欢迎,因为它允许使用DNS为目录服务定位 。这个LDAP目录树中使用基于域的命名。比较适合我的应用场景(从域名-->部门-->个人)。

1.2、条目(Entry)

条目(Entry)就是目录管理的对象,他是LDAP中最基本的颗粒,就像字典中的词条,或者是数据库中的记录。通常对LDAP的添加、删除、更改、检索都是以条目为基本对象的。

每一个条目都有一个唯一的标识名(distinguished Name ,DN),比如(1.1中图2互联网域名树形图):cn=doubao,ou=Ops,dc=shuyun,dc=com。DN在语法上是由多个相对的标识名(distinguished Name ,DN)组成的,他们之间由逗号分隔。如果把DN看做对象的全路径,那么RDN就是其中的每一段路径。通过DN的层次型语法结构,可以方便地表示出条目在LDAP树中的位置。有时在不一致引起歧义的情况下,RDN也特指DN中最靠前的一段,而剩余的部分称为父标识(Parent DN,PDN)。此处不再举例。RDN本身也可以由多个值构成,比如OU=Tech+CN=doubao,dc=shuyun,dc=com中的RDN为OU=Tech+CN=doubao,由2个值OU=Tech和CN=doubao组成,他们之间由加好隔开。

如果DN中含有一些特殊字符,比如:,=+<>;\",他们需要转转义符(\)来帮助表述。

1.3、属性(Attribute)

每个条目都可以有很多属性(Attribute),比如常见的人都有姓名、地址、电话等属性。每个属性都有名称及对应的值,属性值可以有单个、多个。比如你有多个电话。

LDAP为人员组织机构中常见的对象都设计了属性(比如commonName,surname)。下面有一些常用的别名(表1-3-1)

属性 别名 语法 描述 值(举例)
commonName cn Directory String 姓名 doubao
surname sn Directory String Chen
organizationalUnitName ou Directory String 单位(部门)名称 Tech
organization o Directory String 组织(公司)名称 shuyun
telephoneNumber   Telephone Number 电话号码 110
owner   DN 该条目的拥有者 cn=doubao,ou=ops,dc=shuyun
jpegPhoto   Binary JPEG照片 ..

1.4、属性类型(AttributeType)

每个属性都有唯一的属性类型(AttributeType),属性类型约定属性值的数据格式和语法类型(Syntax)。比如,属性cellPhone的类型为telephoneNumber,它规定了电话号码是由数字组成的,其中允许插入一些分隔符,如连接符、括号、空格等。

属性类型也约定了属性值是否可以有多少个,多值属性类型也可以使人员信息的组织变得更加灵活并接近现实情况,比如:人员的手机、地址、邮箱等属性都可以有多个值。这样,用ldap组织的信息会比简单的表结构更加理想。

类型也规定了属性查询时的匹配规则、排序顺序、大小写敏感等。

1.5、对象类(ObjectClass)

对象类(ObjectClass)是属性的集合,LDAP预想了很多人员组织机构中常见的对象,并将其封装成对象类。比如人员(person)含有姓(sn)、名(cn)、电话(telephoneNumber)、密码(userPassword)等属性,单位职工(organizationalPerson)是人员(person)的继承类,除了上述属性之外还含有职务(title)、邮政编码(postalCode)、通信地址(postalAddress)等属性。

通过对象类可以方便的定义条目类型。每个条目可以直接继承多个对象类,这样就继承了各种属性。如果2个对象类中有相同的属性,则条目继承后只会保留1个属性。对象类同时也规定了那些属性是基本信息,必须含有(Must 活Required,必要属性):哪些属性是扩展信息,可以含有(May或Optional,可选属性)。

对象类有三种类型:结构类型(Structural)、抽象类型(Abstract)和辅助类型(Auxiliary)。结构类型是最基本的类型,它规定了对象尸体的基本属性,每个条目属于且仅属于一个结构型对象类。抽象类型可以是结构类型或其他抽象类型父类,它公国将对象属性中共性的部分组织在一起,称为其他类的模板,条目不能直接集成抽象型对象类。辅助类型规定了对象实体的扩展属性。虽然每个条米只属于一个结构型对象类,但可以同时属于多个辅助型对象类。

对象类本身是可以相互继承的,所以对象类的根类是top抽象型对象类。以常用的人员类型为例,他们的继承关系如图1-5-1:

图1-5-1

如果将其中一支 top-->person-->organizationalPerson-->inetOrgPerson的必要属性和可选属性列表(表1-5-2),就会发现这种设计还是非常合理的。我们可以从任何一个对象派生出自己的对象类,比如organizationalPerson派生出职工(employee)对象类,那么它可以含有工号(employeeNumber)、工种(employeeType)等属性。注意,对象类继承的时候会把属性是必须(Must)还是可选(May)的特性也一并继承。也就是说person有cn和sn两个Must属性,organizationalPerson和inetOrgPerson由于直接或间接继承了person,也会有这两个Must属性。

表1-5-2

对象类 必要属性(Required) 可选属性(Optional)
top objectClass
person cn description seeAlso telephoneNumber
sn userPassword    
organizationalPerson destinationIndicator facsimileTelephoneNumber internationalISDNNumber
1 ou physicalDeliveryOfficeName
postalAddress postalCode postOfficeBox
preferredDeliveryMethod registeredAddress st
street teletexTerminalIdentifier telexNumber
title x121Address  
对象类 必要属性(Required) 可选属性(Optional)
inetOrgPerson   audio businessCategory carLicense
departmentNumber displayName employNumber
employeeType givenName homePhone
homePostalAddress initals jpegPhoto
labeledURL mail manager
mobile o pager
photo preferredLanguage roomNumber
secretary uid userCertificate
userOKCS12 userSMIMECertificate x500UniqueIdentifier

1.6、模式(Schema)

对象类(ObjectClass)、属性类型(AttributeType)、语法(Syntax)分别约定了条目、属性、值,他们之间的关系如下图所示。所以这些构成了模式(Schema),模式中的每一个元素都有唯一的OID编号,如2.5.4.41.条目数据在导入时通常需要接受模式检查,它确保了目录中所有的条目数据结构都是一致的。

LDAP概念的更多相关文章

  1. LDAP概念和原理介绍

    LDAP概念和原理介绍 相信对于许多的朋友来说,可能听说过LDAP,但是实际中对LDAP的了解和具体的原理可能还比较模糊,今天就从“什么是LDAP”.“LDAP的主要产品”.“LDAP的基本模型”.“ ...

  2. LDAP概念和原理

    LDAP概念和原理介绍 相信对于许多的朋友来说,可能听说过LDAP,但是实际中对LDAP的了解和具体的原理可能还比较模糊,今天就从“什么是LDAP”.“LDAP的主要产品”.“LDAP的基本模型”.“ ...

  3. LDAP概念了解

    LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP.LDAP支持TCP/IP,这对访问Internet是必须的. L ...

  4. LDAP概念和原理介绍 (转)

    相信对于许多的朋友来说,可能听说过LDAP,但是实际中对LDAP的了解和具体的原理可能还比较模糊,今天就从"什么是LDAP"."LDAP的主要产品"." ...

  5. JAVA操作LDAP总结

    一.LDAP概念 LDAP的全称为Lightweight Directory Access Protocol(轻量级目录访问协议), 基于X.500标准, 支持 TCP/IP. LDAP目录为数据库, ...

  6. LDAP学习笔记总结

    一.LDAP概念LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP.它是基于X.500标准的,但是简单多了并且可以根 ...

  7. centos7下ldap+kerberos实现单点登陆

    一. LDAP概念 http://wiki.jabbercn.org/index.php/OpenLDAP2.4%E7%AE%A1%E7%90%86%E5%91%98%E6%8C%87%E5%8D%9 ...

  8. 2020年,手把手教你如何在CentOS7上一步一步搭建LDAP服务器的最新教程

    同步滚动:关 什么是LDAP 什么是LDAP? 要想知道一个概念,最简单的办法就是wikipedia,当然也可以百科. LDAP全称是轻型目录访问协议(Lightweight Directory Ac ...

  9. [Liferay] Liferay 实现单点登录 - OpenLDAP

    Liferay 的单点登录绝对是个难啃的骨头,更何况网上能搜到的基本都是些滥竽充数的文章,很不负责任. 于是在自己搭通单点登录一条线之后,决定整理下思路并写出来,希望各位能别重蹈覆辙. 本文不介绍概念 ...

随机推荐

  1. STM32-对芯片启动读保护,实现加密(详解)

    STM32可以对存储在flash上的程序进行读保护. 启动读保护后,用户就不能再读写程序了. 所以,在烧写程序之前,需要程序调用关闭读保护.关闭读保护后,会自动清空flash上的程序 头文件位于:#i ...

  2. netty-socketio 概述

    netty-socketio 概述 netty-socketio是一个开源的Socket.io服务器端的一个java的实现,它基于Netty框架,可用于服务端推送消息给客户端. 说到服务端推送技术,一 ...

  3. Python 字典(Dictionary) 基本操作

    Python字典是一种可变容器模型,可存储任意类型对象:如字符串.数字.元组等.它以键值对(key-value)的形式存在,因此相当于Hashmap在python中的实现. §1. 创建字典  字典由 ...

  4. Flask 系列之 LoginManager

    说明 操作系统:Windows 10 Python 版本:3.7x 虚拟环境管理器:virtualenv 代码编辑器:VS Code 实验目标 通过使用 flask-login 进行会话管理的相关操作 ...

  5. 虚拟机与Docker有何不同?

    译者按: 各种虚拟机技术开启了云计算时代:而Docker,作为下一代虚拟化技术,正在改变我们开发.测试.部署应用的方式.那虚拟机与Docker究竟有何不同呢? 原文: Comparing Virtua ...

  6. 用js实现博客打赏功能

    前几天在一个博客中看到有一个打赏功能.其实简单说来就是在页面中加入动态DOM节点,使用的也是简单的HTML.CSS.JS这些前端的一些简单知识.在GitHub上有开源的代码,这里稍加改造就可以用在自己 ...

  7. blfs(systemd版本)学习笔记-为桌面环境构建xorg服务

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs准备使用桌面环境,首先需要构建xorg服务 xorg服务项目地址:http://www.linuxfromscratch. ...

  8. 微信小程序获取复选框全选,反选选中的值

    wxml文件 <view class="tr"> <view class="th"> <checkbox bindtap=&quo ...

  9. JMeter Dubbo请求插件jmeter-plugin-dubbo.jar

    JMeter Dubbo请求插件jmeter-plugin-dubbo.jar   by:授客 QQ:1033553122 测试环境 apache-jmeter-3.2 Dubbo  2.6.2 声明 ...

  10. 「破解」Xposed强

    「破解」Xposed强 Hook Hook Hook! 两张图片,第一张是我的微信截图,第二张是我从微信Hook出的一些类名. 一段代码,Hook这些类名出来的源码. 知道这些我们能干嘛,当然是分析( ...