Schema是LDAP的一个重要组成部分,类似于数据库的模式定义,LDAP的Schema定义了LDAP目录所应遵循的结构和规则,比如一个 objectclass会有哪些属性,这些属性又是什么结构等等,schema给LDAP服务器提供了LDAP目录中类别,属性等信息的识别方式,让这些可以被LDAP服务器识别。
    在LDAP的schema中,有四个重要的元素:
    1. Objectclass
    objectclass定义了一个类别,这个类别会被不同的目录(在LDAP中就是一个Entry)用到,它说明了该目录应该有哪些属性,哪些属性是必须的,哪些又是可选的。一个objectclass的定义包括名称(NAME),说明(DESC),类型(STRUCTURAL或AUXILARY ,表示是结构型的还是辅助型的),必须属性(MUST),可选属性(MAY)等信息。

在BAP产品中,有下面几种类别

# GalaxyTitle
objectclass ( 2.16.840.1.153730.3.4.2NAME 'GalaxyTitle'DESC 'GalaxyTitle use to manage title'SUP topSTRUCTURALMUST ( uid )MAY (sortid ))  # GalaxyPost
objectclass ( 2.16.840.1.153730.3.4.32NAME 'GalaxyPost'DESC 'GalaxyPost use to manage post'SUP topSTRUCTURALMUST ( uid )MAY (sortid $ type )) # GalaxyDuty
objectclass ( 2.16.840.1.153730.3.4.22NAME 'GalaxyDuty'DESC 'GalaxyDuty use to manage duty'SUP topSTRUCTURALMUST ( dutyuid )MAY (sortid )) # GalaxyGroup
objectclass ( 2.16.840.1.153730.3.2.12NAME 'GalaxyGroup'DESC 'GalaxyGroup use to manage group'SUP topSTRUCTURALMUST ( uid )MAY (sysid $ employeeids $ sortid $ groupType $ searchCondition $ groupManager $ telephone $email $ gfax $ others1 $ others2 $others3 $  uniqueMember $ searchConditionXml))  # GalaxyPeople
objectclass ( 2.16.840.1.153730.3.2.22NAME 'GalaxyPeople'DESC 'GalaxyPeople use to manage people'SUP InetOrgPersonSTRUCTURALMAY (otherDepartmentNumber  $ sortid   $  ifactivated  $  peopleLevel $ leadermember $ leaderFilter $ title $ post $ globalsortid $  virtualaccount)) # GalaxyOrganization
objectclass ( 2.16.840.1.153730.3.2.2NAME 'GalaxyOrganization'DESC 'GalaxyOrganization use to manage dep'SUP topSTRUCTURALMUST ( uid )MAY (sysid $ employeeids $ sortid $ depmanager $ telephone $email $ gfax $ others1 $ others2 $others3 $ depmanagerFilter $ title $ post))  # GalaxyContainer
objectclass ( 2.16.840.1.153730.3.2.16NAME 'GalaxyContainer'DESC 'a container,can fill with people,org,group...'SUP topSTRUCTURALMUST ( cn ))    # GalaxyLevel
objectclass ( 2.16.840.1.153730.3.3.18NAME 'GalaxyLevel'DESC 'level inof'SUP topSTRUCTURALMUST ( cn $ number ))     # GalaxyAttOfPeople
objectclass ( 2.16.840.1.153730.3.3.19NAME 'GalaxyAttOfPeople'DESC 'att name and sn'SUP topSTRUCTURALMUST ( sn $ cn ))      

    2. Attribute
    attribute就是一个上面objectclass中可能包含的属性,对其的定义包括名称,数据类型,单值还是多值以及匹配规则等。后面用具体的例子来说明。
    3. Syntax
    syntax是LDAP中的“语法”,其实就是LDAP中会用到的数据类型和数据约束,这个语法是遵从X.500中数据约束的定义的。其定义需要有一个ID(遵从X.500)以及说明(DESP)
    4. Matching Rules
    是用来指定某属性的匹配规则,实际上就是定义一个特殊的Syntax的别名,让LDAP服务器可以识别,并对定义的属性进行匹配。
    LDAP的schema的主要元素就是这些了,下面列举出了一些LDAP规定好的或是现在比较通用的schema,一般的LDAP服务器都应该可以识别这些定义。
    这就是一个名为subschema的objectclass的定义:
    (2.5.20.1 NAME 'subschema'  AUXILIARY
     MAY ( dITStructureRules $ nameForms $ ditContentRules $
                 objectClasses $ attributeTypes $ matchingRules $ matchingRuleUse ) )
    首先是ID,这里是2.5.20.1,接着是NAME,AUXILIARY说明是辅助型,之后是可选属性的定义,subschema中没有定义必须属性,如果需要定义,应该和MAY一样,将属性放在MUST()中并用$隔开
  
    再来看一个属性定义:
    ( 2.5.4.3 NAME 'cn' SUP name EQUALITY caseIgnoreMatch )
  可以看到cn属性的父属性是name,它相等性匹配于caseIgnoreMatch(匹配原则为EQUALITY,还有如SUBSTR是字符串匹配,ORDERING是顺序匹配)
  
    syntax定义一般都比较简单,如:
    ( 1.3.6.1.4.1.1466.115.121.1.6  DESC  'String' )
    这个定义说明,这一串数字1.3.6.1.4.1.1466.115.121.1.5就代表了LDAP中的字符串,这个数字串的定义和X.500相关,包括了它的存储方式,所占空间大小等。

最后看看Matching Rule的例子,前面提到了caseIgnoreMatch,就看他的吧
  ( 2.5.13.2 NAME 'caseIgnoreMatch'
      SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )  
    其实1.3.6.1.4.1.1466.115.121.1.15 就是LDAP数据类型Directory String的ID,说明前面的cn需要等于这个数据类型才有效。
    还有很多常用schema的定义都在了RFC2252中,LDAP服务器都应该支持这些基本的schema。好了,现在基本对LDAP中的schema有个一个大致的说明,可能有不到位或不妥之处,还望大家指正。

LDAP Schema的概念和基本要素相关推荐

  1. LDAP服务器的概念和原理简单介绍

    仅用于个人学习,侵删. 本文转自:LDAP服务器的概念和原理简单介绍 [http://seanlook.com/2015/01/15/openldap_introduction/] 1. 目录服务 目 ...

  2. MySQL / schema的概念

    mysql 中,怎么理解 schema 的概念,schema 是数据库的组织和结构,是数据库对象的集合,集合包括表,视图,储存过程,索引等. 打一个这样的比喻: database = 一个仓库 dba ...

  3. (王道408考研数据结构)第一章绪论-第一节:数据结构的基本概念、三要素、逻辑结构和物理结构

    文章目录 一:基本概念和基本术语 (1)数据 (2)数据元素和数据项 (3)数据对象 (4)数据结构 二:数据结构三要素 (1)逻辑结构 A:集合 B:线性结构 C:树形结构 D:图形结构 (2)物理 ...

  4. python面向对象的概念_Python面向对象概念和三要素

    语言分类 1.面向机器 抽象成机器指令,机器容易理解 代表:汇编语言 2.面向过程 做一个事情,排出步骤,第一步干什么,第二步干什么,如果出现情况A怎么处理,如果出现情况B做什么处理. 问题规模小,可 ...

  5. 工业4.0的概念及关键要素价值分析

    工业4.0的概念及内涵 工业4.0是什么?工业4.0的概念是德国于2013年提出,随后被上升至德国国家创新战略之一,是德国20个面向2020年的科技战略之一.在2013年汉诺威展会上,德国教研部.科技 ...

  6. 法律部门和法律体系(概念、我国现行的法律部门和法律体系 )、法 律 关 系(概念、构成要素:主体、内容、客体)、法律事实(法律事件、法律行为)

    三.法律部门和法律体系         (一)法律体系与法律部门的概念                 1.法律部门又称部门法,是指根据一定标准和原则所划定的同类法律规范的总称.法律部门划分的标准首先 ...

  7. LDAP组的概念以及命令

    Oracle统一目录支持组,组是作为单个对象管理的条目集合.通常,目录管理员配置打印机组.软件应用程序组.员工组等.在为一组用户分配特殊访问权限时,组尤其有用.例如,您可以配置一组访问管理器,并分配权 ...

  8. linux ladp 原理,轻松了解LDAP的结构概念

    介绍 轻型目录访问协议(LDAP)是目录访问协议的轻型版本,是X.500协议的一部份.它即不是目录也不是数据库,LDAP是一个在目录环境中客户端如何能够访问和更新数据的访问协议.些刻,shark的用户 ...

  9. 简述网络协议的概念及三要素

    网络协议:为进行网络上数据交换而建立的规则.约定.标准称为网络协议 语法:数据与控制信息的格式 语义:数据或控制信息具体的含义 同步:实现事件的顺序的详细说明 如有错误,请及时指出!

最新文章

  1. [开源]Dapper Repository 一种实现方式
  2. SAP Commerce Cloud 的本地开发
  3. html地图缩放比例,百度地图之添加控件——比例尺、缩略图、平移缩放
  4. 携程赴港二次上市在即 “旅游营销枢纽”战略助价值重估
  5. MySQL数据库(六) 一一 基本操作之事物和索引
  6. 【PTA】浙大版《C语言程序设计(第3版)》题目集
  7. 解决微信小程序开发中wxss中不能用本地图片
  8. flutter安装教程(win7)
  9. bzoj 4568: [Scoi2016]幸运数字(树上倍增+线性基)
  10. vc++之剪贴板通信实例
  11. LayaAir 位图添加遮罩与滤镜
  12. 同步虚拟机与本机的时间
  13. oracle cdb to no cdb,将Oracle 12c非CDB数据库转换为CDB多租户体系结构
  14. 给社交软件“一星保护”:95后在想什么
  15. ChatGPT教程之 01 什么是ChatGPT革命性的对话生成新工具
  16. NFT“MetaBunny”公开发售后飙升近35倍 首轮公开发售1000枚后结束
  17. 常见的标识符命名风格
  18. Vue实现web端仿网易云音乐 完成大部分功能
  19. 前端js解析识别图片二维码
  20. c++numeric

热门文章

  1. 2.外部链接数据库报错Can't connect to mysql server on xxx.xxx.xxx.xxx(10038)
  2. 父类和子类在同一张表
  3. [ios][swift]UIButton
  4. 开展Java的学习方向,看最新Java视频教程
  5. ASP.NET MVC easyUI-datagrid 分页
  6. PHPSTORM下安装XDEBUG
  7. 算法笔记--八个常见排序算法总结
  8. Python的异常处理机制 -- (转)
  9. 2012_Houdini_ShowReel.
  10. 基于VC的OPC客户端软件研究与实现