ldap 中 ObjectClass 详解(转)

发表于2012 年 1 月 6 日由maomao27302033

初学LDAP时关于objectClass和Attribute之间的关系总是困扰着我,找过许多的中文资料都没有得到答案。最近终于彻底弄明白了这个问题,决定记录下来,以让后学者少走弯路。非常奇妙的是他们之间的关系与Java里面的一些概念很相似,接下来我会结合Java 来讲讲LDAP中的objectClass与Attribute。
LDAP中每一个Entry必须属于某一个objectClass,用Java的方式来理解这个Entry对应着一个Instance,而 objectClass自然就是class了。
在Java中Class大致可以分为Abstract,concrete两种,只有concrete Class才能生成instance。而在LDAP中objectClass分为三种:Abstract,Structural,AUXIALIARY。具体定义如下:
* Abstract object classes are only intended to be extended by other object classes. An entry must not contain any abstract class unless it also contains a structural or auxiliary class that dervies from that abstract class (i.e., includes a non-abstract object class which has the abstract class in its inheritance chain). All entries must contain at least the “top” abstract object class, in the inheritance chain for their structural class. They may or may not contain other abstract classes in the inheritance chains for their structural class or any of their auxiliary classes.

* Structural object classes are intended to define the crux of what an entry represents. Every entry must include exactly one structural object class chain, and the root of that chain must ultimately be the “top” abstract object class. The structural object class for an entry is not allowed to be changed.

* Auxiliary object classes are intended to define additional qualities of entries. An entry may contain zero or more auxiliary classes, and the set of auxiliary classes associated with an entry may change over time.

简单描述就是:Abstract只用来被其它object class继承,只有当其被Structural object class继承时才出现。要定义一个Entry必须有且只有一个Structural类型的ObjectClass。 Top是一个顶级Abstract ObjectClass,里面定义了一个MUST Attribute:ObjectClass,这就决定了必须有一个其它的Structural ObjectClass才能定义一个Entry.其中ObjectClass又可以存在继承关系,该继承关系于Java中有点相似,子ObjectClass会继承父ObjectClass中的全部Attributes.

接下来看一看ObjectClass与Attribute的关系。
如同Java里面的一个类可以包括多个Field,在业务上可能会定义某些Field是必须的,另外一些是可选的。在LDAP中也存在类似关系,每一个 ObjectClass都定义了一些Attribute,其Attribute仍然可以是ObjectClass。在这些Attriubte中分为两种类型MUST,MAY, MUST表示这个Entry必须包括的属性,MAY为可选。一个ObjectClass的Attribute也包括所有继承自父ObjectClass和自身定义的ObjectClass。
下面用一个类型进行说明:
objectclass ( 2.5.6.0 NAME ‘top’ ABSTRACT
MUST objectClass )
objectclass ( 1.3.6.1.4.1.1466.344 NAME ‘dcObject’
DESC ‘RFC2247: domain component object’
SUP top AUXILIARY
MUST dc )
上面是两个objectclass的定义,其中top为ABSTRACT,dcObject为AUXILIARY,这两个类型都不能定义Entry.下面这个LDIF文件在导入到LDAP时会出错:
dn: dc=java,dc=com
objectClass:dcObject
dc: java.com

要定义这个Entry必须找到一个STRUCTURAL类型的ObjectClass。
objectClasses: ( 2.5.6.4 NAME ‘organization’
DESC ‘RFC2256: an organization’ SUP top STRUCTURAL
MUST o
MAY ( userPassword $ searchGuide $ seeAlso $ businessCategory
$ x121Address $ registeredAddress $ destinationIndicator
$ preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier
$ telephoneNumber $ internationaliSDNNumber $ facsimileTelephoneNumber
$ street $ postOfficeBox $ postalCode $ postalAddress
$ physicalDeliveryOfficeName $ st $ l $ description ) )
这个objectClass的类型为STRUCTURAL,因此可以用来定义Entry.具体定义如下
dn: dc=java,dc=com
objectClass:dcObject
objectClass:organization
dc: java.com
o: java.com

其中dc:java.com为dcObject的MUST Attribute,o: java.com为organization的MUST Attribute。

LDAP ObjectClass 详解相关推荐

  1. Spring和Ldap整合详解

    Spring和Ldap整合详解 官方主页 Spring Spring Ldap 概述 LDAP(Light Directory Access Portocol),它是基于X.500标准的轻量级目录访问 ...

  2. centos6.5环境openldap实战之ldap配置详解及web管理工具lam(ldap-account-manager)使用详解

    ldap常用名称解释 1.环境搭建 操作系统:centos6.5 x86_64 关闭防火墙.selinux 开启时间同步 # crontab -e 加入 # time sync */5 * * * * ...

  3. centos6.5环境openldap实战之ldap配置详解及web管理工具lam(ldap-account-manager)使用详解...

    ldap常用名称解释 1.环境搭建 操作系统:centos6.5 x86_64 关闭防火墙.selinux 开启时间同步 # crontab -e 加入 # time sync */5 * * * * ...

  4. 详解Django-auth-ldap 配置方法

    使用场景 公司内部使用Django作为后端服务框架的Web服务,当需要使用公司内部搭建的Ldap 或者 Windows 的AD服务器作为Web登录认证系统时,就需要这个Django-auth-ldap ...

  5. 《Linux/UNIX OpenLDAP实战指南》——1.6 LDIF详解

    本节书摘来自异步社区<Linux/UNIX OpenLDAP实战指南>一书中的第1章,第1.6节,作者:郭大勇著,更多章节内容可以访问云栖社区"异步社区"公众号查看 1 ...

  6. hadoop-core-site.xml配置文件详解

    hadoop配置文件:core-site.xml详解 core-site.xml配置文件介绍 HDFS和MapReduce常用的I/O设置等 core-site.xml配置文件 Hadoop2.0版本 ...

  7. 南大通用GBase 8d产品ldapsearch命令详解

    南大通用GBase 8d产品ldapsearch命令详解 功能: 用于查询条目的客户端工具. 使用格式: ldapsearch [-x] [-D binddn] [-W] [-w bindpasswd ...

  8. SonarQube篇- CentOS7安装Sonarqube8.0详解

    一 原文链接 https://notebook.yasithab.com/centos/centos-7-install-sonarqube 二 操作详解 1. 安装配置 SonarQube 1.1. ...

  9. Tacacs-服务搭建与配置详解

    其他文章: Tacacs+协议原理 Tacacs+服务搭建与配置详解 Tacacs+各厂商交换机配置 Tacacs+协议交互报文抓包示例 简介 tac_plus是TACACS +守护程序.它为网络设备 ...

最新文章

  1. SAP MM 如果存在OPEN的盘点凭证,则不能再次创建盘点凭证
  2. golang获取当前正规时间
  3. 微型计算机字长是不是字节的倍数,2014台湾省WORD全国计算机等级考试二级VB考试技巧重点...
  4. python 二叉树遍历
  5. 不可能解开的谜题 (程序员修炼之道,评注者序)
  6. 【第3篇】python爬虫实战-CSDN个人主页文章列表获取
  7. Jan 09 - Count Primes; Mathematics; Optimization; Primes; DP;
  8. [重要] Cocos2dx 3.0 PageView ListView 在Android设备下背景显示为绿色的问题的解决方案
  9. 动态规划1——生产线调度问题(Dynamic Programming)
  10. spring教程笔记4
  11. yii2 init初始化脚本分析
  12. 计算机组成第五章课后答案,计算机组成原理第五章答案
  13. 鼠标计算机英语怎么说,计算机鼠标器,computer mouse,音标,读音,翻译,英文例句,英语词典...
  14. 漫谈格兰杰因果关系(Granger Causality)——第一章 野火烧不尽,春风吹又生
  15. 仿25ge封装的APP封装源码-可以封装安卓和IOS
  16. disable属性导致后台接收值为null解决方法
  17. JME3 官方教程翻译 - 自定义网格形状
  18. 神经性脚臭案例整理(一)
  19. android开发(43) 动画演示,会跑的小人,从屏幕左侧跑到右侧
  20. 企鹅号日收500总结出来的运营套路,你想知道怎么赚钱的吗?

热门文章

  1. 【高等数学】从法向量到第二类曲面积分
  2. 信息学奥赛一本通:1413:确定进制
  3. python交易是什么意思_py交易是什么意思 py交易是什么梗
  4. 对控制台EXE程序的自动运行问题——以6S模型6s.exe为例
  5. 利用FRP跨局域网操纵虚拟机集群
  6. ROS1云课→18一键配置
  7. 上海家政圈已经这么卷了吗。。。
  8. Excel:数据分列功能分割文本
  9. 刘彬20000词汇02
  10. Django的Forms.py