首页 > 代码库 > LDAP学习

LDAP学习

LDAP概述

目录系统是关于某些类别的对象(例如人)的信息列表。目录可以用于查找特定对象的信息,也可以反方向查找满足特定需求的对象。 企业中的员工通讯录就是一个目录系统。目录访问协议(directory access protocol)就是用来访问目录中数据的标准化方式。最广泛使用的是 轻量级目录访问协议(lightweight directory access protocol,LDAP)。

LDAP数据模型

在LDAP目录中存储的是类似于面向对象语言中 对象 的条目(entry)。每个条目必须有一个能标示自己的 可区别名称(distinguished name, DN),DN又由一组 相对可区别名称(relative DN, RDN)组成。
例如(下面的例子都存在于我们后面将要搭建的openldap环境中):
cn=user01,ou=People,dc=massclouds,dc=com
这个DN唯一标示的条目代表了目录中的一个人。 其中各个RDN的含义是:
cn: common name(s) for which the entity is known by
ou: organizational unit this object belongs to
dc: domain component

就像面向对象语言中的对象一样,条目 也有所属的类,也拥有自己的属性。条目可以属于多个类,这些类也拥有继承关系。 而条目中的属性就是定义在这些类中的。关于objectclass 、属性的规则是定义在schema中的。

下面是定义一个条目的LDIF(LDAP Data Interchange Format, LDAP数据交换格式):

dn: cn=user01,ou=People,dc=massclouds,dc=com
cn: user01
gidnumber: 500
homedirectory: /home/user01
loginshell: /bin/bash
objectclass: inetOrgPerson
objectclass: posixAccount
objectclass: top
sn: user01
title:  
uid: user01
uidnumber: 836031732
userpassword: {SSHA}25vgYD/sRglAUSKLKfIU7hya9Kp/cFUS

 上面的例子中,表示user01的条目属于三个objectclass: inetOrgPerson 、posixAccount和top。 objectclass分为 结构型、辅助型和抽象型,每个条目必须要属于一个结构型的objectclass。 在objectclass中定义了必须的属性和可选的属性,条目如果属于某个objectclass,那么就必须要有这个objectclass所有的必须属性。

技术分享

 

LDAP学习