`
holdbelief
  • 浏览: 705815 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

兔八哥笔记12:定制你的LDAP目录的Schema

    博客分类:
  • LDAP
 
阅读更多

第一部分:理解LDAPAttribute

 

 

 

LDAP之所以成功或之所以流行的原因是LDAP可以存储很多种类型的信息。而LDAP的Schema定义并控制了LDAP中可以存储什么样的数据。作者的这一系列文章包括4部分,这是第三部分。

 

1.什么是LDAP的Schema?

 

在LDAP目录中,Schema是定义的Attribute、定义的objectClass和控制什么样的数据被存到哪里的ACI的集合。

 

任何的数据库都有一个Schema,下一个简单的定义:Schema是一个数据模型,它被用来决定数据怎样被存储,被跟踪的数据的是什么类型,存储在不同的Entry下的数据之间的关系。

 

当你搭建好你的LDAP后,一些已经定义好的Entry的信息存储在一系列的Attribute中的值中。你也可以创建一个要存储在LDAP中的新的值类型。

 

所有的Attribute可能被放到一起用来组成一个叫做Object Class的类型。为了满足你的需要,你可以定义自己的Object Class,每一个Object Class中的属性都可以设计成reqired(必选的)或optional(可选的)。

 

如果你熟悉关系型数据库,那么下面的描述有助于你对Schema的理解:Attribute相当于字段(Field),而Object Calss相当于表。

 

你可以设计你的LDAP信息树(DIT),在同一个Entry存储许多相似的Object Class。

 

2.理解LDAP的Attribute

 

简单的说,Attribute是可以存放一个单一类型信息的容器。(采用Key/Value进行对应)。

 

定制Schema可以使你设计很多你需要的Attribute,如你喜欢的食物、生日、工作日期等等,但你也不得不为你的目录服务器的配置文件(Schema)添加正确的Attribute。

 

       一个Attribute包括以下几个部分,我们稍后会详细介绍。

 

n         Attribute名字

 

n         描述

 

n         Attribute的对象标识符(OID)

 

n         用于进行类型检查和模式匹配的语法

 

n         Attribute是否允许有多个值

 

 

 

(1)什么是Attribute的名字?

 

 

 

       这在概念上已经很清晰了,但在你自己创建一个新属性类型之前,你应该检查一下LDAP规范中是否已经存在能够满足你的要求的Attribute。你可以从下面这个站点查找已经定义好的object class的Attribute列表:http://www.ldapman.org/schema-references

 

       假设你需要的Attribute不存在,那么你要自己添加。首先你应该为自己将要添加的属性定义一个新的名字,需要注意的是你的Attribute的名字要避免与很可能成为“官方指定”的Attribute的名字冲突。

 

       你可以用你的单位、公司甚至停车场的ID来作为你的Attribute的名字。当定义Schema时,Gizmo公司的LDAP的系统管理员很可能定义这样的名字作为Attribute名:"gizmoParkingPassNumber”。我们可以看到这个Attribute名字可以很好避免同日后的官方指定的Attribute名字冲突。

 

       请注意“gizmoParkingPassNumber”作为Attribute看起来很优美,你应该养成这样的习惯:Attribute的名字的第一个字母必须小写,其他单词的第一个字母必须大写,其他的字母必须小写,并且你的Attribute名字应该足够长,这样可以根据你的Attribute的名字就可以知道它所存储的数据的意义。

 

       Attribute的名字由a-z,0-9以及其他少量的字母构成,名字的第一个字符必须是字母,空格、下划线及一些特殊字符是不允许出现在Attribute的名字中的。

 

 

 

(2)描述

 

       是一个描述Attribute的用途的注释。

 

 

 

(3)对象标识符(Object Identifiers

 

 

 

       对象标识符(OID)是被LDAP内部数据库引用的数字。Attribute的名字是让你和我看的,但计算机不喜欢,因为计算机处理数字是最有效率的。如果你对DNS的概念很熟悉的话,那么你应该很容易理解这点。比如:www.sendmail.net 这个域名被计算机接收后会翻译成一个IP地址。

 

       当计算机接收到Attribute的名字gizmoParkingPassNumber后,将这个名字转换为一个OID,这个例子中将转换为:1.3.6.1.4.1.1234。

 

       在你定制自己的object class和Attribute之前,你需要为自己的OID注册吗?这要取决于你的目录服务器。很多目录服务器允许你指定一个简单的字符串作为OID。如果Gizmo公司没有注册,1.3.6.1.4.1.1234可能已经分配给了“gizmoParkingPassNumber”,但它仍然是唯一的,依然可以正常的工组。

 

       你可以不注册你的OID,但它仍然是个好主意。LDAP的Attribute、语法定义和所有使用OID的object class及SNMP和其他的支持ANSI的统一标识Schema的协议都是这样做的。

 

       得到自己的OID很容易,你可以向ANSI (American National Standards Institute)致富1000美元(注:这是2000年的价格,现在什么行情就不知道了!^_^)得到自己的OID,你也可以从权威机构得到你的免费的OID:http://www.iana.org/

 

 

 

(4)语法(syntax

 

 

 

       当你创建Attribute时,下表列出了你要经常使用的语法。

 

 

 

 

 

  code

 

syntax name

 

Description

 

Dn

 

Distinguished Name

 

Allows any alphanumeric string.
Pattern matching against fields of type DN are normalized for DN equivalency. For example, 
"uid=ratboy,ou=accounts,dc=ldapman,dc=com" is equivalent to 
"uid=Ratboy, ou=Accounts, dc=LDAPman, dc=com"

 

Cis

 

Case Ignore String

 

Allows any alphanumeric string.  Information stored using cis is stored with the case preserved, but matches are performed with case ignored.  This is the most commonly used syntax type because of its versatility.

 

ces

 

Case Exact String

 

Allows any alphanumeric string.  Matches against attributes of format cis are case sensitive.  Used for attributes like passwords, where you only wish to match exact strings.

 

int

 

Integer

 

Allows only integers to be stored in this attribute.

 

tel

 

Telephone Number

 

Like cis, but when searching against attributes of this type, the match ignores spaces and dashes.  This allows "510-555-1212" to match "510 555 1212".

 

bin

 

binary

 

Used to store binary data in a standardized format.

 

       一些LDAP目录允许你添加定制的语法。具体怎样做超出了本文的范围,我只是顺便提醒你一下。当创建自己的语法时,你可以为自己的Attribute指定只允许指定的字符存储在Attribute中,并且你也可以指定匹配规则。

 

       假如你想在目录中存储十六进制的代码,但你并不关心代码以什么格式存储(一些人可能输入00 A2 34 FF,另一些可能输入00a234ff,肯能还有人输入00a2.34ff,你想匹配任何一种格式)。为了满足需要,你需要定义一个新的类型hex的语法,只允许字符串0-9,a-z和空格。匹配将是大小写不敏感的,并删除所有的空格进行格式化。很快!任务完成了。

 

       关于创建自定义的语法更详细的信息,你可以在你使用的LDAP的使用手册中找到。

 

 

 

(5)请恕我冒昧,你是单身吗?(作者有些调侃的味道!)

 

 

 

       一些(不是所有)的LDAP服务器允许你为Attribute指定“single”,它的用处是保证你的目录中的属性只有一个值。我们举个例子:一个员工叫Mike Jones,你可以为它的CN指定多个值(Michael Jones、Mike Jones),但存储它的邮箱时你希望只存储一个值。

 

 

 

好了,本文的第2部分将讨论object class和怎样使用Attribute构建自己的object class,第3部分我们将使用第1和第2部分学习到的知识创建一个新的object class,并设计你的LDAP目录的Schema。

 

       如果你有问题,请发邮件给我:donnelly@ldapman.org.。

 

 

 

2000年8月3日

 

 

 

怎么,你是否想读到后2部分呢?哈哈,我也想!所以,我几天前给Mr. Michael Donnelly发了封邮件,希望能够拜读到后续部分,因为那几天我正在查ObjectClass的内容,Michael Donnelly很快回复了,说后续部分尚未完成,已经计划在近期完成,看来我们要再等待一段时间了。但有些夸张了吧?3年多了,还没写完?不过我们要感谢他所做的工作,至少让我们向LDAP的应用方面迈出了第一步!

 

 

 

 

 

 

 

 

 

 

 

                                                       兔八哥

 

                                                    2003-12-4 中午

分享到:
评论

相关推荐

    兔八哥风格for dvbbs7.0 sp2

    Board)是一个广泛使用的开源论坛系统,它允许用户通过安装不同的皮肤来改变论坛的外观和感觉,以实现个性化和品牌定制。"兔八哥风格"则是这款皮肤的主题,可能以经典卡通角色兔八哥为主题,带给用户一种轻松、幽默...

    兔八哥ValueList的文档0.3

    兔八哥ValueList文档翻译 概述:ValueList是一个强大的数据访问工具,它可以帮助开发者快速构建数据驱动的应用程序。本文档是ValueList的官方文档翻译,旨在帮助开发者更好地理解和使用ValueList。 一、ValueList...

    兔八哥和猎人源码c++.cpp

    https://aes.codemao.cn/contest/59/problems 第三题兔八哥和猎人的源码

    Pytorch框架实现mnist手写库识别(与tensorflow对比)

    Tensorflow版本转载来源(CSDN博主「兔八哥1024」):https://www.jb51.net/article/191157.htm Pytorch实战mnist手写数字识别 #需要导入的包 import torch import torch.nn as nn#用于构建网络层 import torch....

    arcgis工具

    12. 导出Shape格式为其他软件识别的打印格式如JEPG等格式 FILE/EXPORT MAP 然后选择相应的图片格式,此时也可设置答应的分辨率 pdi 13. 建立注记层 方法一.carvert to Ananotation ,方法二.Draw工具条 方法三.从...

    漫画设计考试答案.pdf

    12. **多人合作创作**:机器猫(哆啦A梦)是由多人合作创作的动漫形象,而其他选项如史努比、大力水手和蓝精灵则由单一创作者创造。 13. **中国漫画发展**:中国漫画发展相对较慢的原因包括盲目跟风、体制问题以及...

    常用地图投影系列小程序

    欢迎使用常用地图投影系列小程序 本套系列程序最初在2004年4月完成,包括“3°、6°带高斯-克吕格投影正反转换程序”、“墨卡托投影正反转换程序”...2006-12-26 青岛海洋地质研究所 戴勤奋 Email:qddqinfen@cgs.gov.cn

    春节后短信大全.doc

    9. **幽默元素**:一些短信用幽默的方式表达祝福,如“烦恼是神马东西,兔八哥的字典里只字不提”,增添了轻松愉快的氛围。 10. **祈福传统**:“求佛赐福”的概念,体现了人们对信仰的敬畏和对未来的期盼。 这些...

    dos全集,从入门到精通

    在这个提示符下,你可以输入各种命令,比如`dir`用于列出当前目录下的文件和子目录,`cd`用来切换目录,`copy`用于复制文件,`del`则是删除文件。 接下来,让我们探讨DOS的文件管理。DOS支持FAT(File Allocation ...

    初中美术教师资格证面试试讲逐字稿万能模板.pdf

    4. **新课讲授**:讲解卡通形象设计的特点,包括简洁夸张的造型(如兔八哥的牙和耳朵)、色彩鲜明的视觉效果,以及拟人化的特征。通过对比实际动物和卡通形象,让学生理解卡通形象的创作原则。 5. **互动与实践**:...

    bootstrap 图片预览

    在Bootstrap框架中,实现这一功能可以借助Blueimp的Bootstrap Image Gallery插件。...它提供了丰富的定制选项和灵活性,适合各种网页设计需求。通过深入理解其工作原理和API,可以更好地利用这个插件提升网页的交互性。

    bugs-bunny:使用 RabbitMQ 的兔子客户端进行可靠的消息传递

    兔八哥 这个存储库包含一组示例以及 Bunny 的外观,以帮助可靠的消息传递。 假设: 消息的生产者和消费者都是同步的。 PHP 仍然不适合异步工作负载。 您有rabbitmq采用 您依赖于,并且您不关心消息将被处理的顺序...

    beautifulsoup4-4.3.0.tar.gz

    2. **导航树**:BeautifulSoup对象构建了一个树形结构,你可以通过元素的属性(如`name`,`string`,`children`等)进行导航。 3. **搜索文档**:使用`find()`和`find_all()`方法查找特定的元素。`find()`返回第一...

    【2020教师资格证考试备考资料夹】初中美术面试试讲逐字稿万能模板.pdf

    接着,教师展示了几个经典卡通形象,如兔八哥、路薇和米老鼠,让学生观察它们的特点,指出卡通形象通常采用简洁夸张的造型手法,赋予人的情感特征,并使用鲜明的色彩。 在新课讲授环节,教师强调了卡通形象设计的三...

    kettle中调用restful接口时的SSL信任证书问题

    **打开Kettle安装目录**:找到Kettle的安装目录。 2. **编辑启动脚本**:找到`spoon.sh`(Linux/Mac系统)或`Spoon.bat`(Windows系统)文件。 3. **添加系统属性**:在文件中添加以下内容(根据操作系统不同,...

    动画短片的分类PPT学习教案.pptx

    **幽默型动画**则以夸张的动作和幽默元素带来欢笑,如《兔八哥》等经典卡通;**哲理探索型动画**则深入探讨人生哲理,其情节和画面可能简单,但富含深意。 接着,**按表现形式分类**,主要有二维手绘动画、定格动画...

    漂亮老师和坏小子练习试题库.doc

    这些坏小子分别是:肥猫(鲁云飞)、米老鼠(米奇)、兔八哥(战小欧)和豆芽儿(黄豆豆),他们的组合被称为H4,H代表坏。故事发生在白果林小学,这是一个充满活力和个性的小学。校长白校长、副校长、教导主任和...

    支持thinkphp5微信登陆授权插件

    在项目根目录下,打开终端并运行以下命令: ```bash composer require 插件作者/插件名 ``` 安装完成后,需要在ThinkPHP5的config文件中配置微信插件的相关参数,包括AppID、AppSecret、回调URL等。这些参数需要与...

    arcgis空间分析教程

    在进行空间分析之前,需要设置分析环境,包括分析范围、存储形式、坐标系统、输出Grid的大小以及缺省的输出目录。坐标系统的指定是必不可少的步骤,因为许多空间分析操作都需要有明确的坐标系统。只有确定了坐标系统...

    introduction animation

    运动笑话在动画中大放异彩,例如《兔八哥》中的威利·E·考约特悬挂在空中的一幕,令观众捧腹。动画观众能迅速接受信息,短短几帧内就能理解复杂的剧情发展。因此,动画的节奏比传统喜剧更为紧凑,剧本页数通常多于...

Global site tag (gtag.js) - Google Analytics