`
hugang357
  • 浏览: 187048 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

定制你的LDAP目录的Schema

    博客分类:
  • java
阅读更多
第一部分:理解LDAP的Attribute

  

 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。

分享到:
评论

相关推荐

    openldap,ldapbrowser,mozillaOrgPerson.schema

    3. **MozillaOrgPerson.schema**:在LDAP中,Schema定义了目录中的对象类和属性类型。MozillaOrgPerson.schema是Thunderbird(Mozilla公司的电子邮件客户端)使用的特定Schema,它可能包含了描述组织内人员(如员工...

    LDAP基础培训资料

    LDAP目录服务的核心概念包括DN(Distinguished Name)和Schema。DN是唯一标识目录条目的字符串,而Schema定义了目录中的数据结构,包括语法、匹配规则、属性类型和对象类。 **7. LDAP目录设计** 在设计LDAP目录时...

    LDAP学习笔记相关资料

    配置完成后,你可以使用ldapsearch等工具进行查询,以验证配置是否正确,并开始利用LDAP来管理用户、组和其他目录信息。在实际应用中,LDAP常用于身份验证、授权和目录服务,如用户账户管理、邮件系统、网络设备配置...

    apacheds-schema-archetype-1.0.2.jar.zip

    当你解压并使用`apacheds-schema-archetype-1.0.2.jar.zip`时,你可以通过Maven命令行或者集成开发环境(IDE)来创建一个新的目录服务器schema项目。这通常涉及到运行一个`mvn archetype:generate`命令,并指定相应...

    LDAP 技术总结.

    LDAP 是基于 X.500 标准设计的,但它更加轻量级且可定制,最重要的是,它支持 TCP/IP,使得它成为访问目录服务的理想选择,特别是在互联网环境中。 **二、LDAP 技术核心概念** LDAP 全称为 Lightweight Directory ...

    LDAP技术文档

    - **定制性**:LDAP可以根据不同的需求进行定制,灵活性高。 - **跨平台兼容性**:由于支持TCP/IP,LDAP可以在多种操作系统平台上运行,如Windows、Unix/Linux等。 - **可扩展性**:LDAP允许添加新的类和属性,从而...

    openldap-2.3.34.tgr.gz_ldap_openldap

    《OpenLDAP 2.3.34:深入理解 LDAP 服务器源码与模式管理》 ...总之,OpenLDAP 2.3.34 源码是一个深入了解 LDAP 技术和目录服务实现的宝贵资源,无论你是开发者还是系统管理员,都有助于提升你在 LDAP 领域的专业技能。

    ldap配置方法

    **LDAP**(Lightweight Directory Access Protocol, 轻量目录访问协议)是一种应用层协议,主要用于管理和访问分布式目录信息。它基于X.500标准,但更加轻量级且可定制化。与X.500相比,LDAP最大的特点是支持TCP/IP,...

    最新LDAP技术总结中文版

    LDAP是一种基于X.500标准的简化版目录访问协议,旨在提供高效、可定制的信息存储和检索解决方案。它允许组织在其内部网络中建立一个中心化的数据库,用于存储各种类型的数据,如电子邮件地址、人力资源数据、公共...

    Java LDAP Server-开源

    2. **Directory Schema**:LDAP目录中的数据遵循一定的规则,这些规则定义了对象类(Object Classes)和属性类型(Attribute Types)。开发者需要理解和配置这些元数据以定义服务器可以存储的数据类型。 3. **SLAPD...

    Apache Directory Studio

    6. Schema编辑器:用户可以使用Schema编辑器来查看和管理 LDAP 服务器的架构,定义新的对象类和属性类型,以满足特定的业务需求。 7. LDAP证书管理:工作室还支持数字证书的管理,包括导入、导出和更新SSL证书,这...

    picketlink-idm-schema-3.0.0-2013Feb01.zip

    【标题】"picketlink-idm-schema-3.0.0-2013Feb01.zip" 提供的是PicketLink Identity Management Schema的3.0.0版本,该版本发布于2013年2月1日。PicketLink是Red Hat开发的一个身份管理和安全框架,它为Java应用...

    openldap 服务端配置

    LDIF文件通常用于导入数据到LDAP服务器或更新现有记录,并且必须遵循LDAP schema的结构,否则会触发错误。 objectClass在LDAP中扮演了重要角色,它定义了记录数据的模板,并包含了记录中必须赋值的属性和可选的属性...

    Deploying OpenLDAP

    对于目录基础设施的规划,需要设计一个结构合理的目录模式(schema),这涉及到数据模型的定义,包括属性类型、对象类和匹配规则等。模式设计得当,能够极大提高搜索和访问数据的效率。另外,还需要考虑备份策略、...

Global site tag (gtag.js) - Google Analytics