LDAP协议

2023-11-19

1、LDAP是Lightweight Directory Access Protocol的缩写,顾名思义,它是指轻量级目录访问协议(这个主要是相对另一目录访问协议X.500而言的;LDAP略去了x.500中许多不太常用的功能,且以TCP/IP协议为基础)。目录服务和数据库很类似,但又有着很大的不同之处。数据库设计为方便读写,但目录服务专门进行了读优化的设计,因此不太适合于经常有写操作的数据存储。同时,LDAP只是一个协议,它没有涉及到如何存储这些信息,因此还需要一个后端数据库组件来实现。

运行在  tcp/ip之上, 一般使用389端口进行数据传输。目录服务用于通过键-值类型格式存储、整理及表达数据。一般来讲,目录会面向查找、搜索以及读取操作做出优化,因此适用于经常引用但却较少变更的数据。

2、几个概念

条目:

单凭属性本身没有多少作用,我们必须将其与其它事物进行关联。在LDAP中,我们在条目内使用属性。条目基本上相当于属性与一条用于描述事物的名称的集合。

LDIF(即LDAP数据交换格式)内的条目示例如下:

dn: sn=Ellingwood,ou=people,dc=digitalocean,dc=com
objectclass: person
sn: Ellingwood
cn: Justin Ellingwood

以上即为LDAP系统中的一条有效条目。

objectClass 

对象类由 LDAP 目录使用来定义给定类型的对象可以有哪些属性。对象类还定义项必须有什么属性,以及项可以有什么属性。所有对象类都从其父对象类继承需求,然后添加它们自己的需求。

对象类有五个组件:OID(对象标识)、唯一名称、父对象(SUP)、任何需要的属性(MUST)和允许的属性列表(MAY)。OID是由LDAP目录的内部数据库机制使用的数据标识符。从概念上讲,它们与IP地址相似,因为每个对象类都必须有一个唯一数字。并且象DNS和IP之间的关系那样,由创建它们的个人进行注册,并由这些人“拥有”。

在LDAP中objectClass分为三种:Abstract,Structural,AUXIALIARY。要定义一个Entry必须包含一个Structural类型的ObjectClass,

其他两个类型可包括0或多个。其中Top是一个顶级ObjectClass,里面定义了一个MUST Attribute:ObjectClass,于是也就决定了必须有

一个其它的Structural ObjectClass才能定义一个Entry.其中ObjectClass又可以存在继承关系,子ObjectClass会继承父ObjectClass中的

全部Attribute.该继承关系于Java中有点相似.

Attribute

Attribute类同于编程语言中的变量,它可以被赋值,就像是可以存放一个单一类型信息的容器。官方声明了许多常用的 Attribute,如果其中没有你所需要的,你可以自己定义,但要避免重名。objectClass是一种特殊的Attribute,它包含其它用到的 Attribute以及它自身。常见的Attribute如下:

schema

LDAP中,schema用来指定一个目录中所包含的objects的类型 (objectClass)以及每一个objectClass中的各个必备(mandatory)和可选(optional)的属性 (attribute)。因此,Schema是一个数据模型,它被用来决定数据怎样被存储,被跟踪的数据的是什么类型,存储在不同的Entry下的数据之间的关系。schema 需要在主配置文件slapd.conf中指定,以用来决定本目录中使用到的objectClass。管理员可以自己设计制定schema,一般包括属性定 义(AttributeDefinition)、类定义(ClassDefinition)以及语法定义(SyntaxDefinition)等部分。   

LDAP V3中在x.500标准的基础上定义了一个包含了网络中大多常见对象的schema,这些对象包括国家、所在地、组织、人员、小组以及设备等。同时,LDAP V3中可以很方便的从目录中提取出schema,它正是一条记录中关于属性的声明部分。

对象标识符

对象标识符(Object Identifiers )是被LDAP内部数据库引用的数字标识。Attribute的名字是设计为方便人们读取的,但为了方便计算机的处理,通常使用一组数字来标识这些对象,这类同于SNMP中的MIB2。例如,当计算机接收到dc这个Attribute时,它会将这个名字转换为对应的OID: 1.3.6.1.4.1.1466.115.121.1.26。

3、形象描述

从用途上阐述LDAP,它是一个存储静态相关信息的服务,适合“一次记录多次读取”。常用LDAP服务存储的信息: 

  • 公司的物理设备信息(如打印机,它的IP地址、存放位置、厂商、购买时间等)
  •  公开的员工信息(地址、电话、电子邮件…)
  •  合同和账号信息(客户信息、产品交付日期、投标信息、项目信息…)
  •  凭证信息(认证凭证、许可证凭证…)

从数据结构上阐述LDAP,它是一个树型结构,能有效明确的描述一个组织结构特性的相关信息。在这个树型结构上的每个节点,我们称之为“条目(Entry)”,每个条目有自己的唯一可区别的名称(Distinguished Name ,DN)。条目的DN是由条目所在树型结构中的父节点位置(Base DN)和该条目的某个可用来区别身份的属性(称之为RDN如uid , cn)组合而成。对Full DN :“shineuserid=linly , ou=Employee , dc=jsoso , dc=net”而言,其中Base DN:“ou=Employee , dc=jsoso , dc=net”,RDN:“shineuserid=linly”下面是一个LDAP服务器的数据结构图: 

从协议衍化上阐述LDAP,它是“目录访问协议DAP——ISO X.500”的衍生,简化了DAP协议,提供了轻量级的基于TCP/IP协议的网络访问,降低了管理维护成本,但保持了强壮且易于扩充的信息框架。LDAP的应用程序可以很轻松的新增、修改、查询和删除目录内容信息。 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LDAP协议 的相关文章

随机推荐

  • mysql 新版本出现group by 语句不兼容问题

    原文地址 http www cnblogs com anstoner p 6414440 html 注 文中的方式 我只是用了修改sql mode 的方法 其它的未尝试 全文如下 目录 1 具体出错提示 1 1 1 查看sql mode 1
  • Java Web快速开发(1)Java 项目构建

    文章目录 Java 项目构建 1 Java 版本发展 2 集成开发环境 3 Java发布形式 1 扩展参数说明 2 JVM 内存回收机制 3 Java 程序分析调测工具 4 Maven Java 项目构建 1 Java 版本发展 EJB E
  • 流媒体之推流和拉流

    推流 将直播内容推送至服务器的过程 拉流 为服务器已有直播内容 用指定地址进行拉取的过程 什么是推流 推流 指的是把采集阶段封包好的内容传输到服务器的过程 其实就是将现场的视频信号传到网络的过程 推流 对网络要求比较高 如果网络不稳定 直播
  • QPixmap的深拷贝和浅拷贝

    在最近的项目中用到了QPixmap 涉及多线程操作QPixmap对象 为了简单 比如在线程1中构造了一个QPixmap对象 传入线程2 这时调用的函数为operator const QPixmap pixmap 对于不了解QPixmap类的
  • 静态分析基础技术

    静态分析基础技术 原文链接 https hvnt3r top 2019 01 静态分析基础技术 知识点 我觉得安全圈的思路都是差不多的 跟渗透测试一样 对一个恶意软件的分析也需要前期的信息收集阶段来帮助我们对目标有一个大致的了解和认识 方便
  • 使用mui button提交ajax请求后台失败的原因

    在input内输入单号 人工点击按钮触发事件ajax请求后台 一切正常 但是 如果在input内输入完单号 用安卓或苹果手机的软键盘回车键事件调用ajax请求后台 就会有问题 原因如下 mui提供的按钮默认是放在
  • 华为机试题97-记负均正

    描述 首先输入要输入的整数个数n 然后输入n个整数 输出为n个整数中负数的个数 和所有正整数的平均值 结果保留一位小数 0即不是正整数 也不是负数 不计入计算 如果没有正数 则平均值为0 数据范围 1 n 2000 输入的整数都满足 val
  • 配置本地docker与镜像并上传到服务器使用

    1 在本地创建基础容器 官网 1 卸载旧版本 如果有 sudo apt get remove docker docker engine docker io containerd runc 2 设置Docker的存储库并从中安装 更新包索引并
  • SQL优化技巧

    本文以Mysql数据库为例 总结数据库优化方法 一 数据库优化四个层面 Mysql数据库优化 可以从以下四个层面优化 硬件 系统配置 数据库表结构 sql语句及索引 优化效果 SQL语句及索引 gt 数据库表结构 gt 系统配置 gt 硬件
  • CentOS8 同步时间chrony ntpdate已无法使用

    CentOS8 同步时间chrony ntpdate已无法使用 在CentOS8中 已使用chrony替代ntp 首先安装chrony 使用dnf安装 dnf install y chrony 也可以用yum安装 yum install y
  • Linux权限、用户组、用户

    前提 这里以Centos7为例 首先进入 目录 并输入 ls l cd ls l 分析 根据上图我们拿其中一条来说 drwxr xr x 14 root root 3440 Aug 14 07 31 dev 第一个字母 d 代表这个文件的含
  • 俄罗斯担忧开发者无法访问开源代码,为什么开源如此重要?

    俄乌冲突背景下 俄国媒体发文称 世界第一开源软件平台GitHub正在考虑限制俄罗斯软件开发者访问开源软件源代码储存库 此外 数据库巨头 Oracle 也宣布已经暂停了在俄罗斯的所有业务 这些消息迅速刷屏 原因之一便是现在的 IT 世界已离不
  • Win10环境下配置VScode远程开发ssh-remote(免密登录)

    问题背景 在开发或者做实验的过程中 我们经常会用到远程服务器或者Github的项目 而我服务器上的项目只能在Jupyter Notebook上编写 或许可以在其他IDE上写 但我不知道 而我们喜欢用的IDE比如Pycharm 轻量级的VSc
  • C语言之指针知识大总结

    文章目录 一 地址 二 指针与指针变量 三 指针的作用 四 初学指针时常见的错误 五 通过调用函数修改主调函数中的值 六 指针与一维数组 七 使用函数操作一维数组 八 指针变量所占字节数 九 静态数组的缺陷 十 malloc函数 十一 动态
  • ElasticSearch 6.3版本(ES)查询人名关键字不拆词查询

    ElasticSearch 6 3版本 ES 查询关键字不拆词查询 类似mysql 的 like 语句 mysql的sql语法类似如下 采用大量like和locate语法 进行模糊查询 导致查询一个需要8秒多 通过ES优化后 总的查询在1秒
  • postman中进行SHA1或MD5签名

    大部分接口为了防御重放攻击 往往使用SHA1或者MD5对请求进行签名 例如 我们有如下请求 Request URL http xx xx xx xx nonce 123 timestamp 123 Body xxx xxx signatur
  • ESP8266(果云科技的开发板源码)

    ESP8266 果云科技的开发板源码 TOC 最近调试果云科技的老板子ESP8266开发板 比较老了 调试串口输入很麻烦 因为API函数很麻烦 源码已上传 请下载 下面是代码 File uart c Copyright 2013 2016
  • jxls Excel表格导出( 模板导出多个sheet)

    使用模板来导出excel表格 1 使用jxls core jar包来实现 jxls core不支持POI4以上的版本 1 1 maven
  • 在微服务项目中,Spring Security 比 Shiro 强在哪?

    Spring Security 和Shiro的区别
  • LDAP协议

    1 LDAP是Lightweight Directory Access Protocol的缩写 顾名思义 它是指轻量级目录访问协议 这个主要是相对另一目录访问协议X 500而言的 LDAP略去了x 500中许多不太常用的功能 且以TCP I