一、Directory <wbr>Services(目录服务)能做什么?
<wbr> <wbr> <wbr> <wbr>我们知道,当局域网的规模变的越来越大时,为了方便主机管理,我们使用DHCP来实现IP地址、以太网地址、主机名和拓扑结构等的集中管理和统一分配。同样,如果一个局域网内有许多的其它资源时,如打印机、共享文件夹等等,为了方便的定位及查找它们,一种集中定位管理的方式或许是较好的选择,DNS和NIS都是用来实现类似管理的方法。
<wbr> <wbr> <wbr> <wbr>
<wbr> <wbr> <wbr> <wbr>对于局域网内的一个用户来讲,工作等其它应用需要,我们必须凭帐号登录主机、用帐号收发E-mail,甚至为了管理需要公司还需要维护一个电子号码簿来存储员工的姓名、地址、电话号码等信息。随着时间的增长,我们会为这些越来越多的帐号和密码弄的头晕脑胀。同时,如果一个员工离开,管理员就不得不翻遍所有的记录帐号信息的文件把离职员工的信息删除。这些将是一个繁琐而效率低下的工作。那么,如果能将此些帐号信息等统一到一个文件中进行管理,无疑会大大提高员工及管理员的工作效率。目录服务(LDAP是其实现的一种)正是基于这些应用实现的。
二、什么是LDAP?
<wbr> <wbr> <wbr> <wbr>
<wbr> <wbr> <wbr> <wbr>LDAP是Lightweight <wbr>Directory <wbr>Access <wbr>Protocol的缩写,顾名思义,它是指轻量级目录访问协议(这个主要是相对另一目录访问协议X.500而言的;LDAP略去了x.500中许多不太常用的功能,且以TCP/IP协议为基础)。目录服务和数据库很类似,但又有着很大的不同之处。数据库设计为方便读写,但目录服务专门进行了读优化的设计,因此不太适合于经常有写操作的数据存储。同时,LDAP只是一个协议,它没有涉及到如何存储这些信息,因此还需要一个后端数据库组件来实现。这些后端可以是bdb(BerkeleyDB)、ldbm、shell和passwd等。
<wbr> <wbr> <wbr> <wbr>LDAP目录以树状的层次结构来存储数据(这很类同于DNS),最顶层即根部称作“基准DN”,形如"dc=mydomain,dc=org"或者"o=mydomain.org",前一种方式更为灵活也是Windows <wbr>AD中使用的方式。在根目录的下面有很多的文件和目录,为了把这些大量的数据从逻辑上分开,LDAP像其它的目录服务协议一样使用OU(Organization <wbr>Unit),可以用来表示公司内部机构,如部门等,也可以用来表示设备、人员等。同时OU还可以有子OU,用来表示更为细致的分类。
<wbr> <wbr> <wbr> <wbr>LDAP中每一条记录都有一个唯一的区别于其它记录的名字DN(Distinguished <wbr>Name),其处在“叶子”位置的部分称作RDN;如dn:cn=tom,ou=animals,dc=mydomain,dc=org中tom即为RDN;RDN在一个OU中必须是唯一的。
三、什么是LDIF?
<wbr> <wbr> <wbr> <wbr>LDIF(LDAP <wbr>Interchange <wbr>Format)是指存储LDAP配置信息及目录内容的标准文本文件格式,之所以使用文本文件来格式来存储这些信息是为了方便读取和修改,这也是其它大多数服务配置文件所采取的格式。LDIF文件常用来向目录导入或更改记录信息,这些信息需要按照LDAP中schema的格式进行组织,并会接受schema的检查,如果不符合其要求的格式将会出现报错信息。LDIF文件样例如下:
#LDIF <wbr>file <wbr>example
dn: <wbr>dc=mydomain,dc=org
objectClass: <wbr>domain
dc: <wbr>mydomain
<wbr> <wbr> <wbr> <wbr>其中,以“#”号开头的为注释行;第二行起的行中,冒号左边为属性,右边是属性的值,这类同于编程中的变量及为其所赋的值,但属性可以被重复赋值。
四、objectClass <wbr>
<wbr> <wbr> <wbr> <wbr>LDAP中,一条记录必须包含一个objectClass属性,且其需要赋予至少一个值。每一个值将用作一条LDAP记录进行数据存储的模板;模板中包含了一条记录中数个必须被赋值的属性和一系列可选的属性。如上述LDIF文件中的记录所示,objectClass的值为domain。
<wbr> <wbr> <wbr> <wbr>objectClass有着严格的等级之分,最顶层的类是top和alias。例如,organizationalPerson这个objectClass隶属于Person,而Person又是top的子类。
<wbr> <wbr> <wbr> <wbr>objectClass大致分为三类:结构型的(如:person和organizationUnit)、辅助型的(如:extensibeObject)和抽象型的(这类不能直接使用)。官方定义的objectClass,如下所示:
alias <wbr>
applicationEntity <wbr>
dSA <wbr>
applicationProcess <wbr>
bootableDevice <wbr>
certificationAuthority <wbr>
certificationAuthority-V2 <wbr>
country <wbr>
cRLDistributionPoint <wbr>
dcObject <wbr>
device <wbr>
dmd <wbr>
domain <wbr>
domainNameForm <wbr>
extensibleObject <wbr>
groupOfNames <wbr>
groupOfUniqueNames <wbr>
ieee802Device <wbr>
ipHost <wbr>
ipNetwork <wbr>
ipProtocol <wbr>
ipService <wbr>
locality <wbr>
dcLocalityNameForm <wbr>
nisMap <wbr>
nisNetgroup <wbr>
nisObject <wbr>
oncRpc <wbr>
organization <wbr>
dcOrganizationNameForm <wbr>
organizationalRole <wbr>
organizationalUnit <wbr>
dcOrganizationalUnitName<wbr>Form <wbr>
person <wbr>
organizationalPerson <wbr>
inetOrgPerson <wbr>
uidOrganizationalPersonN<wbr>ameForm <wbr>
residentialPerson <wbr>
posixAccount <wbr>
posixGroup <wbr>
shadowAccount <wbr>
strongAuthenticationUser<wbr> <wbr>
uidObject <wbr>
userSecurityInformation
五、Attribute介绍
<wbr> <wbr> <wbr> <wbr>如上文所述,Attribute类同于编程语言中的变量,它可以被赋值,就像是可以存放一个单一类型信息的容器。官方声明了许多常用的Attribute,如果其中没有你所需要的,你可以自己定义,但要避免重名。objectClass是一种特殊的Attribute,它包含其它用到的Attribute以及它自身。常见的Attribute如:givenName、l、objectClass、dc、ou、cn、c、mail、telephoneNumber、sn、uid等。分别介绍如下:
c:国家;
cn:common <wbr>name,指一个对象的名字;如果指人,需要使用其全名;
dc:domain <wbr>Component,经常用来指一个域名的一部分,如:dc=mydomain,dc=org;
givenName:指一个人的名字,不能用来指姓或者middle <wbr>name;
l:指一个地名,如一个城市或者其它地理区域的名字;
mail:电子信箱地址
o:organizationName,指一个组织的名字;
objectClass:一个LDAP <wbr>server要想启用必须能够识别每一个对象的Attribute,objectClass <wbr>Attribute正是用来描述一个对象应该具有的Attribute及可选Attribute。因此,每个objectClass“模板”的Attribute中必然含有一条objectClass <wbr>Attribute,我不知道用“自包含”称呼这个算不算合适。
ou:organizationalUnitName,指一个组织单元的名字。
sn:surname,指一个人的姓;
telephoneNumber:电话号码,应该带有所在的国家的代码;
uid:userid,通常指一个人的登录名,这个不同于Linux系统中用户的uid; <wbr>
<wbr> <wbr> <wbr> <wbr>如果可以这样类比的话,我想,我们不妨把objectClass理解为关系数据库的表,而attribute则类同为表中的字段。而下面即可介绍的schema或许可以类比作一个数据库,但它的这个类比或许从逻辑上说更合适些。
六、什么是schema
<wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>好了,现在可以说说到底什么是schema了。LDAP中,schema用来指定一个目录中所包含的objects的类型(objectClass)以及每一个objectClass中的各个必备(mandatory)和可选(optional)的属性(attribute)。因此,[color=Orange]Schema是一个数据模型,它被用来决定数据怎样被存储,被跟踪的数据的是什么类型,存储在不同的Entry下的数据之间的关系。[/color]schema需要在主配置文件slapd.conf中指定,以用来决定本目录中使用到的objectClass。管理员可以自己设计制定schema,一般包括属性定义(AttributeDefinition)、类定义(ClassDefinition)以及语法定义(SyntaxDefinition)等部分。 <wbr> <wbr>
<wbr> <wbr> <wbr> <wbr>LDAP <wbr>V3中在x.500标准的基础上定义了一个包含了网络中大多常见对象的schema,这些对象包括国家、所在地、组织、人员、小组以及设备等。同时,LDAP <wbr>V3中可以很方便的从目录中提取出schema,它正是一条记录中关于属性的声明部分。
七、对象标识符(Object <wbr>Identifiers)
<wbr> <wbr> <wbr> <wbr> <wbr>对象标识符(OID)是被LDAP内部数据库引用的数字标识。Attribute的名字是设计为方便人们读取的,但为了方便计算机的处理,通常使用一组数字来标识这些对象,这类同于SNMP中的MIB2。例如,当计算机接收到dc这个Attribute时,它会将这个名字转换为对应的OID:1.3.6.1.4.1.1466.115.121.1.26。
八、使用LDAP做身份验正
<wbr> <wbr> <wbr> <wbr>验正主要是用来确定一次会主中客户端用户所具有的权利,即用来确立用户能否登录以及登录具有使用哪些资源以及如何使用资源的权限。验正过程中的修改、查询等操作由认证级别来控制。
<wbr> <wbr> <wbr> <wbr>objectClass中的person可以用来作linux系统中用户登入的身份验正,此时需要指定userPassword属性的值,即指定用户登入时使用的密码。密码可以使用的加密方式有MD5、CRYPT、SHA、SSHA等。在LDAP <wbr>V3中,验正客户端时可以使用的验正机制有匿名验正、简单验正、基于SSL/TLS的验正和基于SASL的验正等四种方式。
分享到:
相关推荐
**LDAP基础培训资料** **1. LDAP简介** LDAP(Lightweight Directory Access Protocol)是一种轻量级目录访问协议,主要用于组织和检索分布式信息。它源于X.500标准,但比X.500更为简洁,并允许根据需求进行定制。...
### LDAP基础知识教程知识点详解 #### 一、信息模型 **1.1 LDIF** - **概念**: LDIF(LDAP Data Interchange Format)是一种用于表示LDAP目录条目的标准文本格式。它主要用于目录数据的导入和导出操作,方便数据...
**LDAP基础教程** LDAP,全称轻量级目录访问协议(Lightweight Directory Access Protocol),是一种用于访问和管理分布式目录服务的开放标准协议。这个基础教程将带你深入理解LDAP的概念、结构以及如何在实际环境...
"LDAP基础知识教程.pdf"则可能是一个更全面的教程,涵盖了以下主题: 1. LDAP协议基础:解释LDAP的请求/响应模型,操作类型(如bind、search、modify)及其语法。 2. LDAP目录模型:介绍Distinguished Name (DN)、...
LDAP基础概念 - **DN(Distinguished Name)**:是每个LDAP条目的唯一标识符,由一系列属性组成,例如`cn=John Doe,ou=Employees,dc=example,dc=com`。 - **OU(Organizational Unit)**:是目录结构中的逻辑分组,...
### LDAP基础知识 1. **目录服务**:目录服务是存储和管理网络对象信息的一种服务,如用户账号、组、计算机、打印机等。与数据库不同,目录服务通常设计为快速查找和访问少量信息,而不是存储大量数据。 2. **LDAP...
LDAP基础知识** LDAP目录服务通常用于存储组织的数据,如员工信息、权限设置、邮件列表等,这些数据可以通过标准的查询语言进行访问。它采用树形结构来组织信息,每个节点称为条目,包含一系列属性,属性值可以是...
#### 二、LDAP基础知识 在深入了解示例代码之前,我们先简要介绍一些LDAP的基础概念: 1. **DN (Distinguished Name)**:标识目录条目的唯一名称,由一系列属性组成。 2. **RDN (Relative Distinguished Name)**:...
LDAP基础** LDAP的核心在于提供快速、简单的数据访问。在企业环境中,LDAP目录可以存储多种类型的信息,如电子邮件地址、邮件路由信息、人力资源数据、公钥和联系人列表等。通过整合LDAP,企业内的应用程序无论...
**一、LDAP基础** 1. **目录服务概念**:目录服务是存储和组织网络资源(如用户账户、组、设备等)的一种方式。与数据库不同,目录服务通常用于快速查找信息,而不是处理事务或存储大量复杂数据。 2. **目录结构**...
1. **LDAP基础概念**:理解什么是目录服务,为什么需要LDAP,以及它与数据库的区别。目录服务是轻量级的数据存储,设计为快速查找和检索信息,而非像数据库那样进行大量读写操作。 2. **LDAP架构**:包括服务器、...
Spring Security LDAP基础** Spring Security LDAP提供了一套API,用于连接和操作LDAP目录。它支持多种LDAP操作,如搜索、添加、删除和修改条目。通过这个模块,开发人员可以轻松地将应用程序的用户认证过程与LDAP...
**LDAP基础概念** 1. **目录服务**: LDAP提供的一种服务,它存储和组织数据,如用户账户、组、网络设备等,以供快速查找和访问。这种服务通常是非关系型的,以提高查询性能。 2. **目录结构**: LDAP目录采用树形...
这使得企业能够利用已有的LDAP基础设施,无缝地将禅道融入其IT生态系统,提高用户管理和权限控制的效率。值得注意的是,在实施过程中,需要根据企业的具体需求和 LDAP 服务器的配置进行相应的调整,确保 LDAP 集成既...
#### 一、LDAP基础知识介绍 **LDAP**(Lightweight Directory Access Protocol)是一种基于X.500标准的目录访问协议,但进行了简化以便更适合互联网环境下的轻量级目录服务。LDAP提供了一种高效、可扩展的方式来...
**LDAP基础知识** 1. **LDAP协议**: LDAP是基于X.500标准的一种轻量级目录访问协议,常用于管理和访问分布式目录服务。它提供了一种标准的、开放的方式来存储和检索各种信息,如用户账号、组织结构等。 2. **目录...
1. **LDAP基础知识** - LDAP目录结构:类似于文件系统,由DN(Distinguished Name)定义,例如`cn=John Doe, ou=Employees, o=MyCompany, c=US`,其中每个部分代表一个对象类。 - LDAP对象类:定义了可存储在目录...
LDAP基础知识 LDAP是一种基于X.500标准的目录服务协议,用于存储和检索分布式数据。它的主要特点是查询速度快,支持多种查询方式,如基于属性的查询。在企业环境中,LDAP常用于集中式用户身份管理,提供单点登录...