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

LDAP读书笔记7-模式设计

    博客分类:
  • LDAP
阅读更多

本文原创作品,如需转载请注明来源,作者:姜涛, towerjt@gmail.com

 

模式(schema)设计

如果你有使用数据库的背景的话,你应该已经对模式比较熟悉。简单的说,模式就是决定数据存储在数据库或者是目录中的存储规则。模式非常重要,它帮助管理数据的完整性和质量。同时,模式能够减少数据的重复、提供良好的格式以及给外部程序访问和修改数据提供一个预先定义好的规则。

 

    LDAP模式的元素:属性类型、属性语法、匹配规则、对象类(object classes)

     

     

    1、属性

      1.1、属性名
      属性名有如下的属性:
      1、大小写无关
      2、属性名可以只限使用ASCII字母,数字,连接字符(-,不是下划线);并且以字母开头
      3、在整个目录服务中,名字应该是唯一的
      合法命名:cn, telephoneNumber, postalAddress, one-way, faxPhone2, and pagesPerMinute
      非法命名:last#, 2for2, my.boss, and favorite_drink

       

      一些标准的属性因为历史的原因,用长的或短的名字命名都是可以的,如(commonName和cn),但是大多数情况下,短的名字用的更多,在NDS里面,长的名字有时候会用来做短名字的别名和同义词。

       

      1.2、唯一标示属性的OID

        OID是一组用点分隔的数字,如2.5.4.16,因为在X.500系统里面是用这种方式来标示属性类型的。虽然OID能代替属性名,但是实际上还是用名字更多一些,因为更容易使用。

         

        1.3、文本描述


          1.4、 一个属性类型的例子
          The description Attribute
          ( 2.5.4.13 NAME 'description' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch
          SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024} )
          翻译一下就是,这个属性名叫description,是一个字符串,能容纳1024个字符,使用caseIgnore系列比较规则,因此在比较的时候,字母的大小写、开头和结尾的空格都将被忽略,OID是2.5.4.13

          1.5、 属性等级
          在一些LDAP的实现中,很明显的跟最近的X.500标准一样,支持属性的subtype

           


          name(SuperType)
          |
          ------------------------------------
          |   |    |                 |            |  |
          cn sn givenName initials   c  o (subtype)


          在上面的例子里面,因为cn、sn是name的subtype,所以当一个查询条件要查询所有name的值的时候,将会把name和它下面的cn、sn等都返回。
          属性等级是一个有趣的但是却潜在者造成困苦的功能。大部分的LDAP实现并不支持。

           

          1.6、使用指示(标示是给应用程序还是给目录服务用的)

          1.7、标示属性值是否可以有重复的值

          一个属性可能存储多个值,可以通过multivalued来选择,一般来说multivalued是一个缺省选项,因为大多数属性类型都是多值的。

          1.8、标示能否被适当的程序修改

          1.9、约束属性值的大小



          2、相关联的属性语法

          语法也有一个OID,标准语法如下:

           

          Table 8.2. Standard Syntaxes

          Syntax

          OID

          Description

          Binary

          1.3.6.1.4.1.1466.115.121.1.5

          按照Basic Encoding Rules (BER) 或者Distinguished Encoding Rules (DER)—for example, an X.509v3 certificate编码

          Boolean

          1.3.6.1.4.1.1466.115.121.1.7

          TRUE or FALSE

          CountryString

          1.3.6.1.4.1.1466.115.121.1.11

          两位国家代码, 如US

          DirectoryString

          1.3.6.1.4.1.1466.115.121.1.15

          按照UTF8存储的文本

           

          DN
          
          
          
          

           

          1.3.6.1.4.1.1466.115.121.1.12

          Distinguished name (pointer to another entry) in string (RFC 2253) format

          GeneralizedTime

          1.3.6.1.4.1.1466.115.121.1.24

          按照X.208格式的日期和时间—for example, 20010911134600Z

          IA5String

          1.3.6.1.4.1.1466.115.121.1.26

          ASCII文本字符串

          INTEGER

          1.3.6.1.4.1.1466.115.121.1.27

          整数值

          OctetString

          1.3.6.1.4.1.1466.115.121.1.40

          8进制

          PostalAddress

          1.3.6.1.4.1.1466.115.121.1.41

          多行的邮寄地址用$分行

          PrintableString

          1.3.6.1.4.1.1466.115.121.1.44

          可打印字符

          TelephoneNumber

          1.3.6.1.4.1.1466.115.121.1.50

          电话号码,按照E.123格式 format—for example, +1 800 555-1212

          URI

          1.3.6.1.4.1.4401.1.1.1

          Uniform Resource Identifier—for example, a Uniform Resource Locator (URL)

           

           


          3、管理比较和搜索的匹配规则

           

          标准匹配规则

          Matching Rule

          Description

          booleanMatch

          布尔值比较,只有等于被支持

          caseIgnoreMatch

          大小写忽略,开头和结尾的空格被忽略

          caseExactMatch

          大小写敏感,开头和结尾的空格被忽略

          distinguishedNameMatch

          DN比较规则(RDN应该相同,并且类型和值必须匹配)

          integerMatch

          整数比较

          octetStringMatch

          二进制比较,一个字节一个字节的比较

          telephoneNumberMatch

          caseIgnoreMatch类似 , 在比较时,连接符(-)和空格都忽略

           

          4、object classes

          写到这里,实际上我们可以对比一下关系型数据库,前面关于属性的东西可以理解是字段,而现在要提到的object classes类似于表了。只不过在DS里面,属性是全局的,而关系型数据库里面字段是对应表的;在DS里面object classes对属性的要求也比关系型数据库对字段的要求要宽松很多。只是有一个必选和可选的字段要求。比方说person这个object class,cn、sn和objectclass是必须的,而其他的信息则是可选的。

           

          object class是有层次的: top->person->organizationalPerson->inetOrgPerson

           

           

           

          • 大小: 27.5 KB
          分享到:
          评论

          相关推荐

            python_ldap-3.4.4-cp39-cp39-win32.whl.zip

            这个“python_ldap-3.4.4-cp39-cp39-win32.whl.zip”文件是Python LDAP库的特定版本,适用于Python 3.9解释器,并且是为32位Windows系统编译的。在Python生态系统中,`whl`(Wheel)文件是一种预编译的Python软件包...

            python_ldap-3.4.4-cp38-cp38-win_amd64.whl.zip

            这个`python_ldap-3.4.4-cp38-cp38-win_amd64.whl`文件是一个预编译的Python轮子(Wheel)包,特别为Python 3.8(cp38)和64位Windows(win_amd64)平台设计。"whl"是一种二进制分发格式,它简化了Python库的安装...

            Go-ldap-test-tool一个轻量级的ldap测试工具

            Go-ldap-test-tool 是一个专为开发者设计的轻量级工具,旨在简化和加速 LDAP 相关应用的测试过程。 这个工具由 Go 语言编写,充分利用了 Go 语言的并发特性和高效性能,使其在测试 LDAP 服务器和客户端交互时表现得...

            python_ldap-3.4.4-cp312-cp312-win_amd64.whl.zip

            综上所述,`python_ldap-3.4.4-cp312-cp312-win_amd64.whl`文件是为Python 3.12在64位Windows系统上设计的Python LDAP库的预编译版本,方便开发人员快速集成和管理基于LDAP的服务。配合`使用说明.txt`,开发者可以...

            ldap-account-manager-5.0.tar.gz

            ldap页面化管理工具,ldap-account-manager-5.0.tar.gz

            python_ldap-3.3.1-cp37-cp37m-win_amd64

            python_ldap-3.3.1-cp37-cp37m-win_amd64

            python_ldap-3.1.0-cp36-wheel.zip

            这个`python_ldap-3.1.0-cp36-wheel.zip`压缩包包含了适用于Python 3.6版本的Python LDAP库的二进制安装包。"cp36"代表的是Python 3.6的版本标识,而"win32"和"x64"分别表示这些文件是为32位和64位的Windows系统编译...

            LdapAdmin---LDAP工具

            LdapAdmin是一款专为Windows操作系统设计的高效、稳定的LDAP管理工具,它允许管理员便捷地浏览、操作和管理LDAP目录。** ### LDAP概述 LDAP是基于X.500标准的简化版,适用于互联网环境,通过TCP/IP协议进行通信。它...

            ldap-account-manager-3.7

            "ldap-account-manager-3.7" 是一个专用于管理 Lightweight Directory Access Protocol (LDAP) 用户账户的应用程序。在IT领域,LDAP是一种重要的目录服务协议,它允许用户存储、管理和检索组织内的用户信息,权限和...

            api-ldap-codec-core-1.0.0-M24.zip

            本篇文章将重点探讨两个关键组件:“api-ldap-codec-core-1.0.0-M24”和“azure-sdk-for-java”,特别是它们在Java开发中的应用。 首先,让我们关注“api-ldap-codec-core-1.0.0-M24”。LDAP(轻量级目录访问协议)...

            spring-ldap-core-1.3.0.RELEASE.jar

            spring-ldap-core-1.3.0.RELEASE.jar

            python_ldap-3.3.1-cp38-cp38-win_amd64

            python_ldap-3.3.1-cp38-cp38-win_amd64

            Understanding And Deploying Ldap Directory Services ---- Addison Wesley

            《理解和部署LDAP目录服务》是IT领域内的一本权威书籍,由LDAP协议的创造者Timothy A. Howes博士、Mark C. Smith和Gordon S. Good共同编写,出版商为Addison Wesley,出版日期为2003年5月2日,ISBN编号为0-672-32316...

            Python库 | ldap3-2.2.4-py2.7.egg

            2. 完整的操作模式:它提供了所有标准的LDAP操作,如搜索、添加、删除、修改和对比等,同时支持控制和扩展操作。 3. 高级错误处理:ldap3库具有详细的错误处理机制,可以捕获并解析服务器返回的各种错误代码,方便...

            LDAP认证插件 EAP-GTC win10-x64

            Windows操作系统自带拨号终端不支持EAP-GTC认证协议,因此无法认证成功。只有一些移动终端和macOS支持EAP-GTC,Windows需要用户自己安装软件支持EAP-GTC。LDAP认证插件 EAP-GTC win10-x64

            ldap-connector-4.2.2.jar

            Java 连接ldap需要驱动包,否则JDBC无法访问数据库(无法注册驱动),常用的是ldap-connector

            PyPI 官网下载 | ldap3-2.2.4-py2.7.egg

            资源来自pypi官网。 资源全名:ldap3-2.2.4-py2.7.egg

            python_ldap-3.3.1-cp39-cp39-win32

            python_ldap-3.3.1-cp39-cp39-win32

            ldap的离线安装包及安装方法

            Ubuntu 16.04 使用的是 OpenLDAP,其主要组件包括 slapd(LDAP 服务器)、libldap2(LDAP 客户端库)和 ldap-utils(实用工具)。在有网络的环境中,你可以通过 `apt-get download` 命令下载这些包,例如: ``` ...

          Global site tag (gtag.js) - Google Analytics