`
zyadi1980
  • 浏览: 24769 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论
阅读更多

(前段时间一直在做LDAP+POSTFIX相关项目,先把关于LDAP的一些经验写出来,一来可能会帮助一些人,二来对我自己所学知识也是一个巩固。) 

先声明:我写的只是我对LDAP的一些理解,如果我的理解错误,那就是对兄弟们的误导。所以你可以直接看文章的结尾提供的几个网址。 

关于LDAP的概念随便网上有很多,我不想重复,这里只是说一下我自己的理解。 
都说它是“轻量级目录协议”,太专业,我不懂,我只把它想象成“简单”的目录协议。 

几个很重要的概念,以后会用到: 
--------------------------------------------- 
dn :一条记录的位置 
dc :一条记录所属区域 
ou :一条记录所属组织 
cn/uid:一条记录的名字/ID 
--------------------------------------------- 

实际上更多时候我只把它看成数据库。我把它和我非常熟悉的MYSQL数据库做比较,通常会得到更好的理解: 

MYSQL用“表”储存数据,LDAP用“树” 
MYSQL指定一条记录要3个条件:DB、TABLE、ROW。 
LDAP却更自由,为什么呢?因为LDAP数据是“树”状的,而且这棵树是可以无限延伸的,假设你要树上的一个苹果(一条记录),你怎么告诉园丁它的位置呢?当然首先要说明是哪一棵树(dc,相当于MYSQL的DB),然后是从树根到那个苹果所经过的所有“分叉”(ou,呵呵MYSQL里面好象没有这DD),最后就是这个苹果的名字(uid,记得我们设计MYSQL或其它数据库表时,通常为了方便管理而加上一个‘id’字段吗?)。 好了!这时我们可以清晰的指明这个苹果的位置了,就是那棵“歪脖树”的东边那个分叉上的靠西边那个分叉的再靠北边的分叉上的半红半绿的……,晕了!你直接爬上去吧!我还是说说LDAP里要怎么定义一个字段的位置吧,树(dc=waibo,dc=com),分叉(ou=bei,ou=xi,ou=dong),苹果(cn=honglv),好了!位置出来了: 
dn:cn=honglv,ou=bei,ou=xi,ou=dong,dc=waibo,dc=com 

一个有名的画家说过:“世上没有相同的2个鸡蛋”。当然也没有相同的2个苹果……,同样,在LDAP里也不可能存在2个相同的dn。 


LDAP数据填充原理: 
一棵树的生长,要循序渐进,如果还没有长出某个分叉,就不可能在那个分叉里长出苹果(问:FT!苹果是长在分叉上的吗?答:为了便于理解,你就当它是吧),同样,LDAP数据库也要一步步的充实,举一个学校数据库的例子,我们将要把一个庞大的学生档案放到LDAP里,大致需要这么做: 
--------------------------------------------- 
1、建立“树根”,这是通过修改“slapd.conf”来实现的,由于现在的目的是理解,所以具体步骤就不说了,反正就是在这一步建立了一个“dc=ourschool,dc=org”这样一个“树根”。 注意:我把它理解成“目录”,或者“容器”,甚至它本身也是文件(苹果)的特殊形式,熟悉LINUX文件系统的朋友会更容易理解。 
2、建立18个系,分别是“dn:ou=computer,dc=ourschool,dc=org”、“dn:ou=film,dc=ourschool,dc=org”…… 
3、当然是在每个系里面建立专业,比如“dn:ou=linux,ou=computer,dc=ourschool,dc=org”…… 
4、(开始长苹果吧!)加学生喽——“dn:cn=stan,ou=linux,ou=computer,dc=ourschool,dc=org”…… 
5、已经完成了吗?对了!学生的详细信息还没有呐!不过先这样吧,反正记录是可以编辑的。 
--------------------------------------------- 


LDAP记录的详细信息 
dn:cn=stan,ou=linux,ou=computer,dc=ourschool,dc=org 
objectClass:organizationalPerson 
cn:stan 
cn:小刀 
sn:小刀 
description:a good boy 
(以上是一条记录的信息,如果把他保存成LDIF文件,可以导入到LDAP数据库中) 
上面不是说没有学生详细信息吗?怕你着急,就马上写出来了,只是还没有导入到LDAP里,那是以后的事。这里我先就你可能会产生的疑问做回答。 
--------------------------------------------- 
Q1:“cn”不是在“dn”里定义了吗,怎么又在后面重新定义了? 答:你要把“cn=stan,ou=linux,ou=computer,dc=ourschool,dc=org”看成是一个整体,它只是属性dn的值。 
Q2:怎么后面有2个“cn”,我以哪个为准? 答:区别于普通数据库,LDAP每个属性一般可以具有多个值,这样不好吗?你在学校数据库里找我的时候,只要记得我的一个cn就可以了,用“cn=stan”或“cn=小刀”都可以找到我! 
Q3:就这些属性了吗?我都不知道你是男是女。 答:先声明,偶是男地。 LDAP对记录的属性做了严格的限制(这一点我不太喜欢),也就是说,你可以用哪些属性,哪些属性不能为空,哪些属性最多只能有一个值等,他们都给你规定好了。 幸好你有选择的权利,比如这次我们是储存学生信息,那么我们就定义一个“objectClass:organizationalPerson”,这样“organizationalPerson”这个类所规定的所有属性我们都可以用了,而且确实很适合我们。 虽然这个类中没有“sex”这个属性,不过你完全可以用一个“空闲”的属性来顶替。 如果我们能自己建立“类”就更好了,但目前我还没有时间去研究这个东西,我也期望高手指点啊 :) 
--------------------------------------------- 


好了!看到我贴的图了吗?那是我偷别人的,差不多能用我就不自己画了 :) 

############################################################## 

关于安装配置LDAP,使之储存系统用户,这里有一个非常好的网址,如果你的英文不是很差,都应该做的来,我偷个懒,就先不写这方面的东西喽: 
http://www.mandrakesecure.net/en/docs/ldap-auth.php 
上面的方法我已经试过,是可行的,如果兄弟们配置的时候出现问题我们可以讨论讨论。 

关于LDAP+POSTFIX,POSTFIX里的“LDAP_README”中介绍的很详细,我再说就是重复了。 
############################################################## 
其它相关资源: 
yala (很实用的数据库操作工具,简单的说,他就是MYSQL的phpmyadmin,自己找下载地址吧~) 
http://www.openldap.org/ (说实话,我一直没用上它,不过它是官方网站,不提也不好) 
http://ldap.akbkhome.com/ (什么‘类’下面有什么‘属性’,在这里找)




ldap上面的图

分享到:
评论
2 楼 lipengyu2006 2009-02-04  
刚又仔细的找了下,又找到了  呵呵
1 楼 lipengyu2006 2009-02-04  
写的真好,受益了.另请教organizationalPerson类在网址ldap.akbkhome.com中的LDAP Objectclass里怎么没找到尼@-@

相关推荐

    LDAP学习笔记相关资料

    LDAP学习笔记 LDAP,全称为轻量级目录访问协议,是一种用于访问和管理分布式目录服务的网络协议。它源于X.500标准,但在设计上更为轻便且可定制,支持TCP/IP通信,这对于互联网访问至关重要。目录服务主要用于快速...

    Ldap学习手册pdf版

    根据提供的文件信息,我们可以从这份名为“Ldap学习手册pdf版”的文档中提炼出与LDAP相关的知识点。以下是对这些知识点的详细阐述: ### LDAP基础知识 #### 1. LDAP简介 - **LDAP**(Lightweight Directory Access ...

    关于ldap学习资料,感兴趣的看看,ldap5.2管理手册.pdf

    ### LDAP学习资料与Sun Java System Directory Server 5.2管理手册解析 #### 一、LDAP基础知识 LDAP(Lightweight Directory Access Protocol),即轻量级目录访问协议,是一种应用层协议,用于访问和维护分布式...

    LDAP学习资料

    **LDAP学习资料** LDAP(Lightweight Directory Access Protocol)是一种轻量级目录访问协议,用于存储和检索分布式目录信息。在IT行业中,LDAP被广泛应用于身份验证、授权和信息管理,尤其是在大型企业网络环境中...

    LDAP技术,LDAP学习大全

    LDAP技术资源包括了各种文档、工具和社区论坛,这些资源对于学习和掌握LDAP技术非常有帮助。 以上总结了关于LDAP技术的基本概念、原理、工具、访问技术和实际应用等方面的知识点。通过这些内容的学习,读者可以更...

    很好的LDAP学习资料

    在开始学习LDAP之前,我们需要了解它的基本构成和工作原理。LDAP目录服务是基于树形结构的,其中每个节点代表一个对象,如用户、组、计算机、打印机等。这些对象都有唯一的标识符,称为DN(Distinguished Name),并...

    ldap 学习指南

    ldap 学习指南,60大洋买的,学习下,很不错,希望支持。

    LDAP中文学习手册.pdf

    LDAP,即轻量级目录访问协议,是用于访问和维护分布式目录信息服务的协议。它为X.500目录访问协议的简化版本,尽管它来源于X.500标准,但其设计更加易于在互联网上实现。LDAP适用于那些需要快速访问少量数据的场景,...

    ldap openldap

    **LDAP与OpenLDAP** LDAP(轻量级目录访问协议)是一种开放的标准,用于在互联网上存储和检索目录信息。它允许用户和应用程序通过统一的接口访问分布式目录服务,支持多种认证方式,包括简单的密码、证书等。LDAP...

    ldap学习文档

    【LDAP协议详解】 LDAP(Lightweight Directory Access Protocol)是一种用于访问和管理分布式目录服务的协议。它的设计目标是为了提供高效、轻量级的查询服务,特别适用于需要快速查找和浏览大量信息的情况。目录...

    LDAP中文学习手册

    **LDAP中文学习手册** LDAP(轻量级目录访问协议,Lightweight Directory Access Protocol)是一种用于存储和检索分布式信息目录的标准网络协议。它主要用于管理和查询组织的用户账户、资源和配置信息。LDAP目录...

    LDAP.zip_ldap

    总之,这个“LDAP.zip_ldap”压缩包包含了一个初级的LDAP学习教程,通过图文并茂的方式帮助初学者理解这一重要的身份管理和访问控制协议。配合目录服务、认证与授权的概念,以及服务器实现的介绍,读者可以逐步掌握...

    Ldap学习资料

    学习LDAP比较好的资料

    LDAP中文学习手册.doc

    LDAP 中文学习手册 LDAP(Lightweight Directory Access Protocol)是一种轻量级目录访问协议,用于访问目录服务。它是 X.500 目录访问协议的移植,但是简化了实现方法。 目录服务与关系数据库之间的区别 LDAP 与...

    LDAP详解,初学习者可以看看

    **LDAP详解** LDAP,全称轻量级目录访问协议(Lightweight Directory Access Protocol),是一种用于访问和管理分布式目录...通过深入学习,可以掌握如何在各种环境中有效地利用LDAP来提升组织的管理效率和安全性。

    对LDAP的基本操作(Spring-ldap)+Ext实现显示LDAP的树状结构

    由于这些我也是才入门的时候写的,进行测试等用的,所以比较适合新手,对学习LDAP,extjs会有一定的帮助。 (需要改正的是extjs里那个节点的id要加上前面的id才行,比如ou=mail; 那它的子节点cn=wang的id应该是...

    java连接和验证ldap文档

    Java 连接和验证 LDAP 文档是一份关于 Java 语言连接和验证 LDAP 服务器的学习文档。LDAP(Lightweight Directory Access Protocol)是一种目录访问协议,用于管理和访问目录服务中的数据。 一、LDAP 概述 LDAP 是...

    ldap-master.zip

    - **API集成**:学习如何使用Java JNDI、Python LDAP库或其他语言的API与LDAP服务器通信。 通过这个"ldap-master.zip"压缩包,你将有机会亲手实践,加深对LDAP的理解,提升你在企业级目录服务领域的技能。无论是...

    spring-ldap demo

    通过阅读此文档,你可以深入理解 Spring LDAP 的工作原理,学习如何配置 LDAP 连接,编写 LDAP 查询,以及处理 LDAP 操作的异常。 3. `TestExt1.rar`:这是一个压缩子文件,可能包含了一个演示如何集成 Spring LDAP...

Global site tag (gtag.js) - Google Analytics