LDAP概念和原理

2023-10-30

http://blog.sina.com.cn/s/blog_6151984a0100ey3z.html

什么是目录服务?
 

    目录服务就是按照 树状存储信息的模式

      目录服务的特点?目录服务与关系型数据库不同?
  •  目录服务的数据类型主要是字符型,而不是关系数据库提供的整数、浮点数、日期、货币等类型
为了检索的需要添加了BIN(二进制数据)、CIS(忽略大小写)、CES(大小写敏感)、TEL(电话型)等语法(Syntax)
  • 同样也不提供象关系数据库中普遍包含的大量的函数
  • 目录有很强的查询(读)功能,适合于进行大量数据的检索
  • 但目录一般只执行简单的更新(写)操作,不支持批量更新所需要的事务处理功能
  • 它主要面向数据的查询服务(查询和修改操作比一般是大于10:1),不提供事务的回滚(rollback)机制.
  • 目录具有广泛复制信息的能力,适合于多个目录服务器同步/更新


  常见的目录服务软件
  • X.500
  • LDAP
  • Actrive Directory,Microsoft公司
  • NIS

      LDAP
      LDAP是轻量目录访问协议(Lightweight Directory Access Protocol)的缩写
      LDAP标准实际上是在X.500标准基础上产生的一个简化版本


   LDAP特点
  •    LDAP的结构用树来表示,而不是用表格。正因为这样,就不能用SQL语句了
  •    LDAP可以很快地得到查询结果,不过在写方面,就慢得多
  •    LDAP提供了静态数据的快速查询方式
  •    Client/server模型
      Server用于存储数据
      Client提供操作目录信息树的工具
            这些工具可以将数据库的内容以文本格式(LDAP 数据交换格式,LDIF)呈现在您的面前
  •    LDAP是一种开放Internet标准,LDAP协议是跨平台的的Interent协议
        它是基于X.500标准的, 与X.500不同, LDAP支持TCP/IP(即可以分布式部署)



      LDAP存储这样的信息最为有用:也就是数据需要从不同的地点读取,但是不需要经常更新:
  •      公司员工的电话号码簿和组织结构图  
  •      客户的联系信息  
  •      计算机管理需要的信息,包括NIS映射、email假名,等等 
  •      软件包的配置信息  
  •      公用证书和安全密匙  

      Ldap的client /server结构
server   /usr/sbin/slapd -u ldap -h ldap:///
client 数据库操作client   用于对ldap server库进行操作
工具:ldapadd, ldapsearch
  实用client   用于将ldap server库在实际工作中使用
工具:radius+ldap, pam+ldap

   
      身份认证在LDAP中提供三种认证机制:
匿名    Ldapsearch –x-LLL
基本认证   通过用户名和密码进行身份识别,又分为简单密码和MD5密码认证
# ldapadd -x -D"cn=root,dc=otas,dc=cn" -W -f base.ldif
-x就是simpleauthetication

Enter LDAP Password: 输入admin123
 adding new entry "dc=otas,dc=cn"
 adding new entry "ou=People,dc=otas,dc=cn"
 adding new entry"ou=Group,dc=otas,dc=cn"
SASL   Simple Authentication and Secure Layer
LDAP提供的在SSL和TLS安全通道基础上进行的身份认证,包括数字证书的认证


   Ldap端口号(显然提供分布式ldap)——389,636
[root@vmmac modules]# cat /etc/services | grep ldap
ldap                      389/tcp                                  明文
ldap                      389/udp                                                明文
ldaps                    636/tcp                                                # LDAP over SSL
ldaps                    636/udp                                                # LDAP over SSL

      TLS 安全性
      分布式LDAP是以 明文的格式通过网络来发送信息的,包括client访问sldap的密码。TLS(SSL的后继者,由OpenSSL 包)加密机制来解决这个问题。




      LDAP目录数据结构
  •    在LDAP中目录是按照树型结构组织——目录信息树(DIT)
                  DIT是一个主要进行读操作的数据库
  •    DIT由条目(Entry)组成,条目相当于关系数据库中表的记录;
条目是具有分辨名DN(Distinguished Name)的属性-值对(Attribute-value,简称AV)的集合


      在目录树中怎么组织数据  
cn=Fran Smith,ou=employees,dc=foobar,dc=com
             ------------ -----------------
               容器条目     BaseDN
--------------------------------------------
               DN
 

1。在UNIX文件系统中,最顶层是根目录(root),LDAP目录也通常用 ROOT做根,通常称为BaseDN
2。因为历史(X.500)的原因,LDAP目录用 OU(Organization Unit)从逻辑上把数据分开来。
    Ou 也是一种条目,容器条目
3. Ou 下就是真正的用户条目



    什么是dn?
      DN,Distinguished Name分辨名
      在LDAP中,一个条目的分辨名叫做“DN”,DN是该条目在整个树中的 唯一名称标识
DN相当于关系数据库表中的关键字(Primary  Key);
是一个识别属性,通常用于检索
      常见的两种DN设置:
基于cn(姓名) cn=FranSmith,ou=employees,dc=foobar,dc=com 
dn格式就是这么一大串
最常见的CN是/etc/group转来的条目
基于uid(User ID) uid=fsmith,ou=employees,dc=foobar,dc=com
最常见的UID是/etc/passwd和/etc/shadow转来的条目
 
[root@vmmac migration]# ldapsearch -x -LLL "uid=mac*"
dn:uid=mac,ou=People,dc=otas,dc=cn        唯一标适
uid:mac               
cn:mac                                 CN=Common Name 为用户名或服务器名
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword::e2NyeXB0fSQxJGRTMFJoR1lwJHk0dkdKc1ByM3BlVmo4Z243dEhoQTA=
shadowLastChange: 13697
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 500
gidNumber: 500
homeDirectory: /home/mac

dn: uid=macg,ou=People,dc=otas,dc=cn
uid: macg
cn: macg
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword::e2NyeXB0fSQxJGxHdE9tTW9vJHR0TFhpYXc2Y1VJb0RyWU9xUlVDSzE=
shadowLastChange: 14186
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 503
gidNumber: 503
homeDirectory: /home/macg
 
 
    Base DN (就是dc=,dc= )
LDAP目录树的最顶部就是根,也就是所谓的“Base DN"。
BaseDN通常采用两种格式:
  (假定我在名为FooBar的电子商务公司工作,这家公司在Internet上的名字是foobar.com)
商务型格式——以X.500格式表示的基准DN o="FooBar, Inc.",c=US  
Internet型格式——以公司的Internet 域名地址表示的基准DN)
是最常用的格式
  dc=foobar,dc=com 

 

      LDIF 格式(此格式用于LDAP数据导入、导出)
LDIF是LDAP数据库信息的一种 文本格式,包含:
  •     行界定
  •    冒号分隔
  •    属性-值对
[root@vmmac migration]# cat passwd.ldif
dn: uid=mac,ou=People,dc=otas,dc=cn
uid: mac
cn: mac
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}$1$dS0RhGYp$y4vGJsPr3peVj8gn7tHhA0
gidNumber: 500
homeDirectory: /home/mac


      一个典型的 entry例子(一个属性可以有多个值)
Foobar, Inc.的员工Fran Smith的LDAP记录。
dn: uid=fsmith, ou=employees, dc=foobar,dc=com 
完整DN,包括在目录树中的完整路径

 objectclass: person 
 objectclass:organizationalPerson 
 objectclass:inetOrgPerson 
 objectclass: foobarPerson 
 uid: fsmith 
 givenname: Fran 
 sn: Smith 
 cn: Fran Smith 
 cn: Frances Smith 
CN有多个值
你可能只知道她的名字叫Fran,但是对人力资源处的人来说她的正式名字叫做Frances。因为保存了她的两个名字

 telephonenumber:510-555-1234 
 roomnumber: 122G 
 o: Foobar, Inc. 
 mailRoutingAddress:fsmith@foobar.com 
 mailhost: mail.foobar.com 
 userpassword:{crypt}3x1231v76T89N 
 uidnumber: 1234 
 gidnumber: 1200 
 homedirectory:/home/fsmith 
 loginshell:/usr/local/bin/bash  



      属性/值搜索的时候是不区分大小写的
  某些特殊的属性(例如,password)在搜索的时候需要区分大小写。 


      / etc/passwd和/etc/group文件里的用户被migrate导入ldap后,会产生两条条目,分别属于People这个ou,和Group这个ou
显然属于People ou的条目对应passwd,属于Group ou的条目对应group
dn: cn=test1,ou=Group,dc=otas,dc=cn
objectClass: posixGroup
objectClass: top
cn: test1
userPassword:: e2NyeXB0fXg=
gidNumber: 500
   /etc/group
dn:uid=test1,ou=People,dc=otas,dc=cn
uid: test1
cn: test1
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword::e2NyeXB0fSQxJHpGR3drdUdlJFIyZ3BZTlh3QzVPaXFOck1CTGU2QjE=
shadowLastChange: 14298
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 500
gidNumber: 500
homeDirectory: /home/test1
   /etc/passwd
/etc/shaddow


   user和group在ldap中的不同
  •    从属ou不同
user属于ou=People
group属于ou=Group
  •    dn表示方式不同
user的dn用uid打头:uid=news,ou=People,dc=otas,dc=cn
group的dn用cn打头:cn=news,ou=Group,dc=otas,dc=cn

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

LDAP概念和原理 的相关文章

  • 日历插件美化版

    https ext dcloud net cn plugin id 3324
  • 服务器显卡:驱动高性能计算和人工智能应用

    一 引言 随着高性能计算和人工智能应用的不断发展 服务器显卡的性能显得越来越重要 服务器显卡是服务器硬件配置中的一个关键组件 它不仅提供基本的图形渲染能力 还在高性能计算和人工智能应用中发挥着重要作用 本文将探讨服务器显卡的重要性和发展趋势
  • 使用ESP8266 12-E板载的CH340对ESP01-s进行烧录

    先借两张图 因为ESP01 S的烧录器找不到了 临时用ESP8266 12 E板载的CH340对ESP01 s进行烧录 1 12 E的EN引脚接地G 2 ESP01 s的3v3连接12 E的3v3 3 ESP01 s的GND连接12 E的G
  • 【左神算法课学习笔记】动态规划

    左神算法课学习笔记 动态规划 动态规划是对暴力递归算法的优化 主要是通过数组记录的方法 优化掉一些重复计算的过程 总结下动态规划的过程 1 抽象出一种 试法 递归解决问题的方法 很重要 2 找到 试法 中的可变参数 规划成数组表 可变参数一
  • 蓝桥杯官网练习题(李白打酒)

    题目描述 本题为填空题 只需要算出结果后 在代码中使用输出语句将所填结果输出即可 话说大诗人李白 一生好饮 幸好他从不开车 一天 他提着酒壶 从家里出来 酒壶中有酒2斗 他边走边唱 无事街上走 提壶去打酒 逢店加一倍 遇花喝一斗 这一路上
  • 查看python环境路径_查看python环境的一些知识点

    1 查看python中的查找模块的路径import sys sys path usr bin usr lib64 python26 zip usr lib64 python2 6 usr lib64 python2 6 plat linux
  • CDC处理——异步FIFO

    1 异步FIFO原理 请看 硬件架构的艺术 笔记 三 3 8节 异步FIFO 2 格雷码传递FIFO读写指针 回环特性 通常情况下 设计的异步FIFO的深度是2的N次方 但事实上 选择这个2 N的原因也是因为格雷码这么取的时候 最大值 1回
  • S4 MB5B 结算库存数量与 MMBE 中的数量不同

    用户在查询库存过程中发现MB5B 结算库存数量与 MMBE 中的数量不同 我们知道MMBE是系统的当前库存 MB5B是可以根据输入的日期查询输入日期当天的库存 MMBE查询库存数量为971米 再来看MB5B库存 输入物料 工厂 日期为今天2
  • 在Windows10上安装虚拟机---VMware 17 Pro下载与安装

    在Windows10上安装虚拟机 VMware下载与安装 0 前言 1 下载VMware 17 pro 2 安装VMware 17 Pro 3 打开Vmware 0 前言 电脑原生系统 Windows10 虚拟机软件 VMware 17 p
  • ORACLE随机查询

    1 select from select from tablename order by dbms random value where rownum lt N 注 dbms random是一个可以生成随机数值或者字符串的程序包 value
  • 训练模型的3种方法

    公众号后台回复关键字 Pytorch 获取项目github地址 Pytorch没有官方的高阶API 一般通过nn Module来构建模型并编写自定义训练循环 为了更加方便地训练模型 作者编写了仿keras的Pytorch模型接口 torch
  • STM8普通定时器中断使用寄存器版本

    本文章只讲如何使用STM8的普通定时器 原理以及其他知识点可以网上查阅相关的资料 废话不多说 直奔主题 第一步 了解TIM4的时钟来源 查阅书册可以知道TIM4的时钟来源系统的主时钟 第二步 初始化相关寄存器 从ST官方手册可以知道 TIM
  • Spring Boot的文件上传

    Spring Boot的文件上传并不需要单独进行 当前端进行请求时 所要上传的文件作为请求的一个参数即可 与其他类型参数相同 服务端接收时 只需要对这个文件参数使用MultipartFile类型接收即可 由于文件上传的参数无法直接拼接到UR
  • unplugin-vue-components/vite自动将项目中使用的 Vue 组件按需引入

    unplugin vue components 是一个 Vite 插件 它可以自动将项目中使用的 Vue 组件自动按需引入 以减小打包体积 它的使用方式如下 安装插件 npm install D unplugin vue component

随机推荐

  • 上拉和下拉的解释

    1 什么是上下拉电阻 上拉电阻 把一个不确定的信号通过电阻连接到高电平 是电信号初始化为高电平 下拉电阻 把一个不确定的信号通过电阻连接到地 使电信号初始为低电平 本质 上拉是对器件注入电流 下拉是输出电流 2 上下拉电阻接线方法 上拉电阻
  • Kafka 消费者“group_name”组正在永远重新平衡

    目录 一 场景 1 1 场景应用环境 1 2 问题重现 二 问题分析 三 解决方案 一 场景 1 1 场景应用环境 卡夫卡 2 11 1 0 1 主题 并发度为 5 且分区为 5 1 2 问题重现 当应用程序重新启动并且在分区分配之前在主题
  • MySQL获取分组中的第一条数据和最后一条数据

    mysql 8 WITH ranked messages AS SELECT m ROW NUMBER OVER PARTITION BY name ORDER BY id DESC AS rn FROM messages AS m SEL
  • 《C++11标准库》4.2头文件( Header File)

    在C 标准化过程中 将C 标准库中所有的标识符都定义于 namespace std 内 这样的作法不具备向后兼容性 因为原先的C C 头文件都将C 标准库的标识符定义于全局范围 标准化过程中有些 class 接口也有了变动 为此 C sta
  • vscode 变量命名插件_10款VS Code插件神器,第7款超级实用!

    VS Code是这两年非常热门的一款开发工具 它不仅有提升开发体验的界面 轻量化的编辑器 还有丰富而强大的插件 这些优秀的插件使得VS Code生态体系更加吸引人 让开发效率大大提升 本文来介绍10款高效的VS Code插件 总有一款能够惊
  • iOS 使用“./compile-ffmpeg.sh all”编译 ijkplayer 报错“C compiler test failed.

    原因 compile ffmpeg sh 脚本找不到 Xcode 解决方案 compile ffmpeg sh clean sudo usr bin xcode select switch Applications Xcode app Co
  • 微信小程序相关面试题

    微信小程序相关面试题 1 请谈谈wxml与标准的html的异同 2 请谈谈WXSS和CSS的异同 3 请谈谈微信小程序主要目录和文件的作用 4 请谈谈小程序的双向绑定和vue的异同 5 简单描述下微信小程序的相关文件类型 6 微信小程序有哪
  • 未竟的Web 3.0理想,DID或打开关键入口

    寄托往往意味着断送 维克多 雨果 悲惨世界 里的经典之言正是Web2 0时代的写照 近期 B站 答题领卡兑换大会员 活动被网友指出涉嫌出卖用户个人隐私 虽然B站回应称 该页面系文案措辞不妥引起误会 目前已下线该页面并整改 但风波并没有止息
  • 未预期的符号 `then’ 附近有语法错误加粗样式

    未预期的符号 then 附近有语法错误加粗样式 编写shell脚本执行时发生如下报错 后经分析 错误原因是因为if后面没有加空格 加入空格之后则不再存在语法错误 修改后脚本截图
  • 重启人生1.0-day1:704. 二分查找;27. 移除元素

    数组理论基础 704 二分查找 左闭右闭区间 left right size len nums left 0 right size 1 while left lt right 当left right的时候 循环区间是个合法区间 middle
  • dataguard-(ORA-16004/ORA-01196/ORA-01110)

    author skatetime 2009 08 01 1 故障现象 一次突然断电导致我的standby open时报如下的错误 ORA 16004 备份数据库需要恢复ORA 01196 文件 1 由于介质恢复会话失败而不一致ORA 011
  • Unity Text 透明

    Unity Text透明化问题 Shader UI TextBlend Properties HideInInspector MainTex Texture 2D white HideInInspector BlendTex Blend T
  • 集度汽车(武汉java)一面

    hashMap底层结构 hash算法的好处是什么 为什么采用数组加链表 数组有哪些特性 内存地址连续 查找快 怎么解决哈希碰撞 链地址法 并发编程需要注意哪些地方 如何处理变量的线程安全 sycronized关键字原理 分布式锁实现方式 有
  • 华子这题确实不错!

    我们来看一下这道题目到底哪里不错 题目描述 小王在进行游戏大闯关 有一个关卡需要输入一个密码才能通过 密码获得的条件如下 在一个密码本中 每一页都有一个由 26 个小写字母组成的若干位密码 从它的末尾开始依次去掉一位得到的新密码也在密码本中
  • 小程序从后台切到前台首页刷新机制 (Banner图 )

    问题 后台 banner 图 更新后 小程序首页不会自动更新 注明 这里只针对首页 其他页进入 onload即可 解决方案一 直接在page页面 每次onShow 都执行 解决方案二 app js 文件 app js App onLaunc
  • MongoDB报错:org.springframework.data.mongodb.UncategorizedMongoDbException: Exception authenticating

    org springframework data mongodb UncategorizedMongoDbException Exception authenticating MongoCredential Caused by com mo
  • Me and My Girlfriend靶机实验

    目录 靶机描述 准备 信息收集 一键三连IP 端口 目录扫描 ip 端口扫描 目录扫描 需要用到kali中的dirsearch 漏洞分析 渗透攻击 提权 这里我们可以尝试使用漏洞检查脚本 靶机的下载地址 Me and My Girlfrie
  • Ubuntu 18.04 镜像下载

    打开 官网 点击 下载 点击 Ubuntu桌面系统 点击 其他下载 鼠标滑到最下方 点击 Ubuntu 18 04 6 桌面版 64位 点击 保存
  • STM32 USB学习笔记9

    主机环境 Windows 7 SP1 开发环境 MDK5 14 目标板 STM32F103C8T6 开发库 STM32F1Cube库和STM32 USB Device Library 现在我们来分析VCP例程的最后一个文件USB设备类的us
  • LDAP概念和原理

    http blog sina com cn s blog 6151984a0100ey3z html 什么是目录服务 目录服务就是按照 树状存储信息的模式 目录服务的特点 目录服务与关系型数据库不同 目录服务的数据类型主要是字符型 而不是关