入门学习LDAP

编程入门 行业动态 更新时间:2024-10-05 07:24:23

<a href=https://www.elefans.com/category/jswz/34/1770026.html style=入门学习LDAP"/>

入门学习LDAP

LDAP简介

1.1 LDAP介绍
LDAP的英文全称是Lightweight Directory AccessProtocol(轻量型目录访问协议),它是基于X.500标准的,但是简单多了并且可以根据需要定制。与X.500不同,LDAP支持TCP/IP,这对访问Internet是必须的。LDAP的核心规范在RFC中都有定义,所有与LDAP相关的RFC都可以在LDAPman RFC网页中找到。LDAP目录中可以存储各种类型的数据:电子邮件地址、邮件路由信息、人力资源数据、公用密匙、联系人列表,等等。通过把LDAP目录作为系统集成中的一个重要环节,可以简化员工在企业内部查询信息的步骤,甚至连主要的数据源都可以放在任何地方。

1.2 LDAP优劣
目录服务的数据类型主要是字符型,为了检索的需要添加了BIN(二进制数据)、CIS(忽略大小写)、CES(大小写敏感)、TEL(电话型)等语法(Syntax),而不是关系数据库提供的整数、浮点数、日期、货币等类型,同样也不提供像关系数据库中普遍包含的大量的函数,它主要面向数据的查询服务(查询和修改操作比一般是大于10:1),不提供事务的回滚(rollback)机制,它的数据修改使用简单的锁定机制实现All-or-Nothing,它的目标是快速响应和大容量查询并且提供多目录服务器的信息复制功能。
LDAP最大的优势是:
可以在任何计算机平台上,用很容易获得的而且数目不断增加的LDAP的客户端程序访问LDAP目录。而且也很容易定制应用程序为它加上LDAP的支持。
LDAP在查询时是做过优化的,因此查询速度快,但是在更新时相对关系型数据库要慢得多 。
可以存储在其它条件下很难存储的管理信息。
数据安全可靠,访问控制粒度细腻。
LDAP是一个标准的,开放的协议,具有平台无关性。
数据分布广,规模可灵活扩充。
LDAP目录服务器可以使任何一种开放源代码或商用的LDAP目录服务器。
1.3 LDAP协议
LDAP协议是跨平台的和标准的协议,因此应用程序就不用为LDAP目录放在什么样的服务器上操心了。实际上,LDAP得到了业界的广泛认可,因为它是Internet的标准。厂商都很愿意在产品中加入对LDAP的支持,因为他们根本不用考虑另一端(客户端或服务端)是怎么样的。LDAP服务器可以是任何一个开放源代码或商用的LDAP目录服务器(或者还可能是具有LDAP界面的关系型数据库),因为可以用同样的协议、客户端连接软件包和查询命令与LDAP服务器进行交互。与LDAP不同的是,如果软件厂商想在软件产品中集成对DBMS的支持,那么通常都要对每一个数据库服务器单独定制。不像很多商用的关系型数据库,你不必为LDAP的每一个客户端连接或许可协议付费。大多数的LDAP服务器安装起来很简单,也容易维护和优化。

1.4 LDAP服务器
LDAP服务器可以用“推”或“拉”的方法复制部分或全部数据,例如:可以把数据“推”到远程的办公室,以增加数据的安全性。复制技术是内置在LDAP服务器中的而且很容易配置。如果要在DBMS中使用相同的复制功能,数据库产商就会要你支付额外的费用,而且也很难管理。

1.5 LDAP使用权限
LDAP允许你根据需要使用ACI(一般都称为ACL或者访问控制列表)控制对数据读和写的权限。例如,设备管理员可以有权改变员工的工作地点和办公室号码,但是不允许改变记录中其它的域。ACI可以根据谁访问数据、访问什么数据、数据存在什么地方以及其它对数据进行访问控制。因为这些都是由LDAP目录服务器完成的,所以不用担心在客户端的应用程序上是否要进行安全检查

1.6 LDAP目标
1、需要在任何平台上都能读取数据
2、每一个单独的记录项很少改变
3、可以把数据存在平面数据库(flat database)而不是关系型数据库中
4、如果可以把数据存在一张张的卡片里

LDAP的基本概念

LDAP在数据结构在是一个树型结构,在这个树型结构上的每个节点,称为“条目(Entry)“,每个条目都已自己唯一可以区别的名称(Distinguished Named,DN),条目的DN是由条目所在树型结构的父节点位置(Base DN)和该条目的某个可以来区别身份的属性(称之为RDN,如UID,cn,OU)组合而成。
通过访问http://localhost:10004 来管理,登陆界面

比如一条DN为 “cn=baby,ou=marketing,ou=people,dc=mydomain,dc=org” 。
可以看出目录树(Directory information tree)由条目(Entry)构成,条目是由属性( attribute )构成,每个属性有着对应的值,属性的层次结构构成了这棵树。属性的定义需要符合规则,规则是由模式(Schema)制定的。

说到这里,有小伙伴可能会迷惑什么是Schema,下面对Schema进行简略介绍:

2.Schema

schema 是 OpenLDAP 软件的重要组成部分,主要用于控制目录树中各种条目所拥有的对象类以及各种属性的定义,并通过自身内部规范机制限定目录条目所遵循的逻辑结构以及定义规范,保证整个目录树没有非法条目数据,避免不合法的条目存在目录树中,从而保障整个目录树信息的完整性、唯一性。
在 OpenLDAP 目录树中,schema 用来指定一个条目所包含的对象类(objectClass)以及每一个对象所包含的属性值(attribute value)。其属性又分为必要属性和可选属性两种,一般必要属性是指添加条目时必须指定的属性,可选属性是可以选择或不选择的。schema 定义对象类,对象类包含属性的定义,对象类的属性组合成条目。
目录树中条目可理解为是一个具体的对象,它们均是通过 schema 创建的,并符合 schema 的标准规范,如对你所添加的数据条目中所包含的对象类级属性进行检测,检测通过完整添加,否则打印错误信息。因此,schema 是一个数据模型,数据模型可以理解为关系数据库的存储引擎,如 MyISAM、InnoDB,主要用来决定数据按照什么方式进行存储,并定义存储在目录树不同条目中数据类型之间的关系。

schema 是一个标准,定义了 OpenLDAP 目录树对象和属性存储方式,这也是 OpenLDAP 能够存储什么数据类型的取决因素。因此数据有什么属性等均根据 schema 来实现。OpenLDAP 默认的 schema 文件一般存放在 Centos 在 /etc/openldap/schema/ 目录下(Ubuntu 在 /usr/share/slapd/slapd.conf),此目录下每个文件定义了不同的对象类和属性。如果想引用额外的 schema,只需要在配置文件中通过 include 包含所指定的 schema 即可。

LDAP简称对应

c - countryName(国家)
dc - domainComponent (域名)
o - organization (组织-公司)
ou - organization unit (组织单元-部门)
sn - suer name (真实名称)
cn - common name(常用名称)

Attribute详解
目录树中常见的属性及其描述表

3.LDAP的基本模型

LDAP四种基本模型
信息模型:描述LDAP的信息表示方式

	在LDAP中信息以树状方式组织,在树状信息中的基本数据单元是条目,而每个条目由属性构成,属性中存储有属性值;LDAP中的信息模式,类似于面向对 象的概念,在LDAP中每个条目必须属于某个或多个对象类(Object Class),每个Object Class由多个属性类型组成,每个属性类型有所对应的语法和匹配规则;对象类和属性类型的定义均可以使用继承的概念。每个条目创建时,必须定义所属的对 象类,必须提供对象类中的必选属性类型的属性值,在LDAP中一个属性类型可以对应多个值。

在LDAP中把对象类、属性类型、语法和匹配规则统称为Schema,在 LDAP中有许多系统对象类、属性类型、语法和匹配规则,这些系统Schema在LDAP标准中进行了规定,同时不同的应用领域也定义了自己的 Schema,同时用户在应用时,也可以根据需要自定义Schema。这有些类似于XML,除了XML标准中的XML定义外,每个行业都有自己标准的 DTD或DOM定义,用户也可以自扩展;也如同XML,在LDAP中也鼓励用户尽量使用标准的Schema,以增强信息的互联互通。

在Schema中最难理解的是匹配规则,这是LDAP中为了加快查询的速度,针对不同的数据类型,可以提供不同的匹配方法,如针对字符串类型的相等、模糊、大于小于均提供自己的匹配规则。
  
命名模型:描述LDAP中的数据如何组织
LDAP中的命名模型,也即LDAP中的条目定位方式。在LDAP中每个条目均有自己的DN和RDN。DN是该条目在整个树中的唯一名称标识,RDN是条目在父节点下的唯一名称标识,如同文件系统中,带路径的文件名就是DN,文件名就是RDN。
功能模型:描述LDAP中的数据操作访问
在LDAP中共有四类10种操作:查询类操作,如搜索、比较;更新类操作,如添 加条目、删除条目、修改条目、修改条目名;认证类操作,如绑定、解绑定;其它操作,如放弃和扩展操作。除了扩展操作,另外9种是LDAP的标准操作;扩展 操作是LDAP中为了增加新的功能,提供的一种标准的扩展框架,当前已经成为LDAP标准的扩展操作,有修改密码和StartTLS扩展,在新的RFC标 准和草案中正在增加一些新的扩展操作,不同的LDAP厂商也均定义了自己的扩展操作。
安全模型:描述LDAP中的安全机制
LDAP中的安全模型主要通过身份认证、安全通道和访问控制来实现。

身份认证 在LDAP中提供三种认证机制,即匿名、基本认证和SASL(Simple Authentication and Secure Layer)认证。匿名认证即不对用户进行认证,该方法仅对完全公开的方式适用;基本认证均是通过用户名和密码进行身份识别,又分为简单密码和摘要密码认 证;SASL认证即LDAP提供的在SSL和TLS安全通道基础上进行的身份认证,包括数字证书的认证。

通讯安全 在LDAP中提供了基于SSL/TLS的通讯安全保障。SSL/TLS是基于PKI信息安全技术,是目前Internet上广泛采用的安全服务。LDAP 通过StartTLS方式启动TLS服务,可以提供通讯中的数据保密性、完整性保护;通过强制客户端证书认证的TLS服务,同时可以实现对客户端身份和服 务器端身份的双向验证。

访问控制 虽然LDAP目前并无访问控制的标准,但从一些草案中或是事实上LDAP产品的访问控制情况,我们不难看出:LDAP访问控制异常的灵活和丰富,在 LDAP中是基于访问控制策略语句来实现访问控制的,这不同于现有的关系型数据库系统和应用系统,它是通过基于访问控制列表来实现的,无论是基于组模式或 角色模式,都摆脱不了这种限制。

在使用关系型数据库系统开发应用时,往往 是通过几个固定的数据库用户名访问数 据库。对于应用系统本身的访问控制,通常是需要建立专门的用户表,在应用系统内开发针对不同用户的访问控制授权代码,这样一旦访问控制策略变更时,往往需 要代码进行变更。总之一句话,关系型数据库的应用中用户数据管理和数据库访问标识是分离的,复杂的数据访问控制需要通过应用来实现。

而对于LDAP,用户数据管理和访问标识是一体的,应用不需要关心访问控制的实现。这是由于在LDAP中的访问控制语句是基于策略语句来实现的,无论是访问控制的数据对象,还是访问控制的主体对象,均是与这些对象在树中的位置和对象本身的数据特征相关。

在LDAP中,可以把整个目录、目录的子树、制定条目、特定条目属性集或符合某过滤条件的条目作为控制对象进行授权;可以把特定用户、属于特定组或所有目录用户作为授权主体进行授权;最后,还可以定义对特定位置(例如IP地址或DNS名称)的访问权。
  参考引文

关于ldap的一些知识就先讲到这,对于ldap的安装配置请关注我的另外一篇文章。因为我也是最近刚学习的,有不足的地方还请小伙伴们指出,一块学习。

更多推荐

入门学习LDAP

本文发布于:2024-02-28 03:36:34,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1768162.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:入门   LDAP

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!