`
izuoyan
  • 浏览: 8882634 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

通过一个简单的例子,介绍如何使用LDAP(转)

阅读更多

定制目录的对象类型

你可以用LDAP存储各种类型的数据对象,只要这些对象可以用属性来表示,下面这些是可以在LDAP中存储的一些信息:

l 员工信息:员工的姓名、登录名、口令、员工号、他的经理的登录名,邮件服务器,等等。

l 物品跟踪信息:计算机名、IP地址、标签、型号、所在位置,等等。

l 客户联系列表:客户的公司名、主要联系人的电话、传真和电子邮件,等等。

l 会议厅信息:会议厅的名字、位置、可以坐多少人、电话号码、是否有投影机。

l 食谱信息:菜的名字、配料、烹调方法以及准备方法。

因为LDAP目录可以定制成存储任何文本或二进制数据,到底存什么要由你自己决定。LDAP目录用对象类型(object classes)的概念来定义运行哪一类的对象使用什么属性。在几乎所有的LDAP服务器中,你都要根据自己的需要扩展基本的LDAP目录的功能,创建新的对象类型或者扩展现存的对象类型。

LDAP目录以一系列“属性对”的形式来存储记录项,每一个记录项包括属性类型和属性值(这与关系型数据库用行和列来存取数据有根本的不同)。下面是我存在LDAP目录中的一部分食谱记录:

dn: cn=Oatmeal Deluxe, ou=recipes, dc=foobar, dc=com

cn: Instant Oatmeal Deluxe

recipeCuisine: breakfast

recipeIngredient: 1 packet instant oatmeal

recipeIngredient: 1 cup water

recipeIngredient: 1 pinch salt

recipeIngredient: 1 tsp brown sugar

recipeIngredient: 1/4 apple, any type

请注意上面每一种配料都作为属性recipeIngredient值。LDAP目录被设计成象上面那样为一个属性保存多个值的,而不是在每一个属性的后面用逗号把一系列值分开。

因为用这样的方式存储数据,所以数据库就有很大的灵活性,不必为加入一些新的数据就重新创建表和索引。更重要的是,LDAP目录不必花费内存或硬盘空间处理“空”域,也就是说,实际上不使用可选择的域也不会花费你任何资源。

作为例子的一个单独的数据项

让我们看看下面这个例子。我们用Foobar, Inc.的员工Fran SmithLDAP记录。这个记录项的格式是LDIF,用来导入和导出LDAP目录的记录项。

dn: uid=fsmith, ou=employees, dc=foobar, dc=com

objectclass: person

objectclass: organizationalPerson

objectclass: inetOrgPerson

objectclass: foobarPerson

uid: fsmith

givenname: Fran

sn: Smith

cn: Fran Smith

cn: Frances Smith

telephonenumber: 510-555-1234

roomnumber: 122G

o: Foobar, Inc.

mailRoutingAddress: fsmith@foobar.com

mailhost: mail.foobar.com

userpassword: {crypt}3x1231v76T89N

uidnumber: 1234

gidnumber: 1200

homedirectory: /home/fsmith

loginshell: /usr/local/bin/bash

属性的值在保存的时候是保留大小写的,但是在默认情况下搜索的时候是不区分大小写的。某些特殊的属性(例如,password)在搜索的时候需要区分大小写。

让我们一点一点地分析上面的记录项。

dn: uid=fsmith, ou=employees, dc=foobar, dc=com

这是FranLDAP记录项的完整DN,包括在目录树中的完整路径。LDAP(和X.500)使用uidUser ID),不要把它和UNIXuid号混淆了。

objectclass: person

objectclass: organizationalPerson

objectclass: inetOrgPerson

objectclass: foobarPerson

可以为任何一个对象根据需要分配多个对象类型。person对象类型要求cncommon name)和snsurname)这两个域不能为空。persion对象类型允许有其它的可选域,包括givennametelephonenumber,等等。organizational Personperson加入更多的可选域,inetOrgPerson又加入更多的可选域(包括电子邮件信息)。最后,foobarPerson是为Foobar定制的对象类型,加入了很多定制的属性。

uid: fsmith

givenname: Fran

sn: Smith

cn: Fran Smith

cn: Frances Smith

telephonenumber: 510-555-1234

roomnumber: 122G

o: Foobar, Inc.

以前说过了,uid表示User ID。当看到uid的时候,就在脑袋里想一想“login”。

请注意CN有多个值。就象上面介绍的,LDAP允许某些属性有多个值。为什么允许有多个值呢?假定你在用公司的LDAP服务器查找Fran的电话号码。你可能只知道她的名字叫Fran,但是对人力资源处的人来说她的正式名字叫做Frances。因为保存了她的两个名字,所以用任何一个名字检索都可以找到Fran的电话号码、电子邮件和办公房间号,等等。

mailRoutingAddress: fsmith@foobar.com

mailhost: mail.foobar.com

就象现在大多数的公司都上网了,FoobarSendmail发送邮件和处理外部邮件路由信息。Foobar把所有用户的邮件信息都存在LDAP中。最新版本的Sendmail支持这项功能。

Userpassword: {crypt}3x1231v76T89N

uidnumber: 1234

gidnumber: 1200

gecos: Frances Smith

homedirectory: /home/fsmith

loginshell: /usr/local/bin/bash

注意,Foobar的系统管理员把所有用户的口令映射信息也都存在LDAP中。FoobarPerson类型的对象具有这种能力。再注意一下,用户口令是用UNIX的口令加密格式存储的。UNIXuid在这里为uidnumber提醒你一下,关于如何在LDAP中保存NIS信息,有完整的一份RFC。在以后的文章中我会谈一谈NIS的集成。

Formhttp://javasky.bloghome.cn/index.php?blogId=7

<!-- google_ad_client = "pub-9232855773311077"; google_ad_width = 250; google_ad_height = 250; google_ad_format = "250x250_as"; google_ad_type = "text_image"; google_ad_channel =""; google_color_border = "FFFFFF"; google_color_bg = "FFFFFF"; google_color_link = "0000FF"; google_color_url = "666666"; google_color_text = "000000"; //--> <iframe name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-9232855773311077&amp;dt=1114852930171&amp;format=250x250_as&amp;output=html&amp;color_bg=FFFFFF&amp;color_text=000000&amp;color_link=0000FF&amp;color_url=666666&amp;color_border=FFFFFF&amp;ad_type=text_image&amp;u_h=768&amp;u_w=1024&amp;u_ah=740&amp;u_aw=1024&amp;u_cd=16&amp;u_tz=480&amp;u_his=28&amp;u_java=true" frameborder="0" width="250" scrolling="no" height="250" allowtransparency="65535"></iframe>
分享到:
评论

相关推荐

    c操作ldap例子c操作ldap例

    c操作ldap例c操作ldap例c操作ldap例c操作ldap例c操作ldap例c操作ldap例c操作ldap例c操作ldap例c操作ldap例

    ldap相关代码例子.rar

    ldap相关代码例子.rar

    LDAP使用手册

    LDAP使用手册,包含很详细的例子,十分适合初学者

    连接ldap服务器实例

    这是一个可以登录ldap服务器并取出想要的结果 的一个简单例子。..

    ldap helloworld 基本例子详解

    1.1 下载相关软件包至/usr/local/src目录 7 1.2 安装openssl 7 1.3 配置库文件搜索路径 8 1.4 查看openssl的版本号,以验正是否安装正确 8 3.1 下载相关软件至/usr/local/src 11 ...3.2.5 一个例子 30

    jndi之fsContext ldap

    提供了使用fsContext服务器的unbind bind list lookup rename的相关例子,及ldap 连接的一个例子 jndi,就是命名服务(n:naming)和目录服务(d:directory). 命名服务:把对象映射到方便记忆的名字的机制.可以通过域名系统...

    spring-ldap demo

    包含spring-ldap的简单操作的例子和EXT结合展示 以及相应的文档

    Spring 初步实现LDAP 域认证

    Spring 实现LDAP 域认证,内有个人项目的实例分析,,希望大家参考,也可以给意见

    java连接LDAP的jar包和实例

    java连接LDAP实例和jar包,里面包含ssl连接和更改LDAP属性的例子,公参考

    spring-boot-ldap-useradmin:使用 ldap 进行用户管理

    它使用了 Spring LDAP 中的许多有用概念,并将作为最佳实践和各种有用技巧的一个很好的例子。LDAP 中的用户和组LDAP 中的用户通常表示为 LDAP 树中的organizationalPerson或inetOrgPerson条目。 这些条目中的属性...

    Ldap实例源码

    该例子是调用ldap服务源码,是用纯Java写的,界面是swing和awt

    novell ldap开发包(java)

    novell ldap开发包(java)加开发文档加例子。稀有资源!

    spring-Ldap

    本人亲手所写一个关于spring-ldap完整的例子,包含多种方法的增删改查,有兴趣的朋友可以下载看看,有代码类和用到的相关包

    jndi.zip_java ldap_jndi_jndi ldap_ldap_ldap java

    JNDI 操作 LDAP的几个例子源码 包括连接、添加、删除、修改、搜寻

    ldap for c

    自己学习ldap精心整理出来的资料包含简单的例子 还windows编程环境的设置

    springldap例子

    NULL 博文链接:https://andilyliao.iteye.com/blog/644326

    RFC1558_LDAP研究过滤器的字符串表达 .doc

    这LDAP(1)定义了一个研究过滤器的网络表示法来传送给一个LDAP服务器。一些应用软件可以发现它的用处来拥有描绘这个研究过滤器的一个普通的方法以一个人类能读的形式。这个文档定义了一个人类能读的字符串格式为了...

    ldap 相关LIB & Samples

    ldap基本JAVA LIB和例子,初步了解LDAP的开发

    Addison Wesley - LDAP Directories Explained.chm

    LDAP编程手册, 本书详细的论述了如何使用使用LDAP, 从C语言和JAVA做为例子来详细的解说LDAP编程。

    SpringLDAP和JNDI的增删改查

    SpringLDAP和JNDI增删改查的入门级例子 能够通过编译和运行 已经包含了需要的包,用eclipse导入即可

Global site tag (gtag.js) - Google Analytics