一、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基础培训资料,LDAP基础培训资料,LDAP基础培训资料
细致全面的讲述LDAP的基础知识,通俗易懂,适合自学。
从数据结构上阐述LDAP,它是一个树型结构,能有效明确的描述一个组织结构特性的相关信息。在这个树型结构上的每个节点,我们称之为“条目(Entry)”,每个条目有自己的唯一可区别的名称(Distinguished Name ,DN)...
1 LDAP 基础 LDAP 的英文全称是 Lightweight Directory Access Protocol, 一般都简称为 LDAP。 它是基于 X.500 标准的,但是简单多了并且可以根据需要定制。与 X.500 不同,LDAP 支 持 TCP/IP,这对访问 Internet ...
用于安装 LDAP 基础的 Python FUSE 模块 例子 将此添加到您的 /etc/fstab 中: ldapfuse.py#ldaps://my.ldap.server/dc=domain,dc=tld /ldap fuse noauto,allow_other 0 0 sshd 配置 通过做类似的事情: ...
资源类似于chm,但是是html版的,一个从基础开始的教程。资源来源于晚上,如有雷同,纯属巧合
ldap入门基础资料,自己整理,不对的还请指正
IBM LDAP一些基础知识及red book for LDAP
LDAP学习笔记,包含LDAP基础知识,以及一些技巧和思考
jenkins配置使用,并接入公司LDAP系统
《ldap详解——ibm tivoli directory server从入门到精通》以ibm tivoli directory server(tds)软件产品为基础,针对ldap目录服务进行了全面、系统的阐述和介绍。全书涵盖了ldap的原理、安装、配置、管理、设计、...
基于Java JNDI 操纵LDAP的基础实现,包括LDAP连接相关生命周期,认证的两种策略demo,条目的操作,schema的基础操作包括(attributeDefinition\objectDefinition\)但未包含相关syntaxDefinition的操纵. 没有资源分的朋友...
LDAP全称是一个轻量级的目录访问协议,它是建立在TCP/IP基础之上的用来查询和修改目录服务的。这是照着wiki翻译的,但是有人要问了什么是directory Service(目录服务)? 按照wiki的说法的话讲:在软件行业,目录就...
ldap的基础教程,讲述了什么是ldap,及ldap的基础语法
LDAP协议是Internet中用于数据查询访问的重要协议,在PKI基础设施中,LDAP可用于证书和CRL的查询下载,具有广泛而重要的应用。结合了LDAP协议标准和PKI实现的具体要求,提出了一种基于关系数据库的LDAP服务器的实现方式,...
ldap基本概念的系统介绍,入门级别的实用手册
提出并建立了一套保障信息安全的全局身份认证管理系统,在采用RC4安全加密技术的基础上,实现了基于RADIUS的无线802.1x/EAP接入认证和基于LDAP的认证服务的整合。实现接入用户认证管理和应用层统一身份认证用户的全局...
Orchestra将用户身份集成到Kubernetes中,从而实现: API服务器和LDAP基础结构之间的SSO Kubernetes仪表板的SSO 自助访问现有命名空间自助创建新的命名空间在不让系统管理员参与的情况下自动执行访问批准的工作流程...
Orchestra将用户身份集成到Kubernetes中,从而实现: API服务器和LDAP基础结构之间的SSO Kubernetes仪表板的SSO 自助访问现有命名空间自助创建新的命名空间在不让系统管理员参与的情况下自动执行访问批准的工作流程...