LDAP是目录服务,基于X.500,目录服务有两个国际标准,分别是LDAP和X.500。LDAP是X.500的子集,包含了X.500大多数功能,因为X.500是在整个OSI协议栈上操作,占用大量的空间,所以轻量级的有大部分X.500功能的LDAP就应用的广泛了,LDAP在TCP/IP协议操作。
LDAP是活动目录在linux上的开源实现,具有主从复制能力。
LDAP的名词缩写:
1.dc 域名部分
域名可以有很多层级,例如abc.com,com是一级域名(不同的一级域名有不同的行业分类),abc是组织的域名。
dc将域名分为几部分,分别是 dc=abc,dc=com
2. uid 用户id
访问LDAP时候可以根据uid
3.ou 组织单位
类似于linux文件系统 中的子目录 该子目录里可以包含其他各种对象,我们可以把它想象成部门,
例如 市场部门 销售部门 每个部门里可以有很多人,说白了就是层级关系
4.公共名称 例如姓名,为啥叫公共的呢?因为我小名大多数人不知道,都知道大名,能准确的定位
访问LDAP时候可以根据cn
5.sn 姓氏
上面是姓名,这里是姓氏
6.dn 唯一辨别名 主键
基于uid设置,根据用户id查询,肯定是唯一的
基于cn设置,根据用户名称设置
类似于绝对路径,例如 销售部的pablo 确定了查找链路
如:uid=10,cn=pablo,ou=销售部,dc=abc,dc=com
7.rdn 相对辨别名
类似于相对路径
例如cn=pablo,可能是销售部的pablo,也可能是技术部的pablo,只有在绝对的目录下(部门下)才能分辨是哪一个pablo。
8.c 国家
CN 中国
9.o 组织名
某某公司
LDAP特点
1.跨平台的标准协议
2.树形结构不是表格,不用sql语句维护
3.快速查询 但是写很慢
4.支持主从复制
5.LDAP是安全的协议 ,支持SSL/TLS,可以提供不同层次的访问控制,限制权限
6.可存储文本 二进制图片
7.cs模型 Server存储树,Client提供操作目录信息树的工具,此Client操作工具可以将数据库信息以文本呈现
8.是开放的internet标准,基于X.500,支持TCP/IP(即可支持分布式部署)
LDAP目录结构
条目分为数据条目(部门对于人的条目)和容器条目(公司对于部门的条目)其实就是嵌套
ou是容器条目,就是每张表,代表一张表
ou下的具有唯一标识的条目是数据条目,代表一条数据。
按照树状结构组织,目录信息树(DIT),DIT由条目组成(相当于公司中有N个部门,每个部门是一个条目),此条目为相当于mysql里的表
LDIF格式适用于LDAP数据的导入/导出的格式,LDIF是ASCII文件格式,用于LDAP的导入和导出或修改信息。这些信息需要按照LDAP架构格式组织,否则报错。
属性: 值 ObjectClass可以有多个,每条记录中必须包含一个ObjectClass属性
注意:LDIF里的属性相当于变量,同样的属性名值不可重复
此图片来自辣条1号
信息在目录中的组织结构
传统结构:
互联网结构:
信息是如何被引用的
通过标识名被引用例如 uid=pablo,引用时要用绝对的即 cn=pablo,ou=销售部,dc=abc。为什么用绝对的呢?比如销售部和技术部都有名字叫pablo,这时候绝对路径表明是哪一个,就算同一个部门有重名的,属性也有区别。
LDAP工作原理
基于CS
1.客户端连接到服务器发送一个请求
2.服务器有两种反应:
2.1直接给与回应
2.2返回一个指针,该指针是指向另一个LDAP服务器(说明该客户端请求在另一个服务器上)
3.返回数据
注意:不论客户端连接的是哪一个LDAP服务器,看到的目录视图相同,此为全局目录。
LDAP配置模式
1.基本的目录查询服务
2.目录查询代理==》指针指向另一个服务器,类似DNS转发服务器
3.主从复制
主从复制原理图:
主从复制另一种简单方案:
可以对master进行inotify监控,master有改动,rsync文件备份推送到Slave,又因为LDAP不经常写操作,完全可以定时任务扫描+文件备份推送slave来实现主从复制。
LDAP企业架构可以使用集群,即一个总部核心服务器,N个分布客户端
LDAP应用领域
方面:从不同地点读取信息,但不经常更新业务
场景:
信息安全类:数字证书管理 授权管理 单点登录
科学计算类:DCE(分式计算环境),UDDI(统一描述,发现和集成协议)
网络资源管理类:MAIL系统 DNS系统 网络用户管理 电话号码簿
电子政务资源管理类:内网组织信息服务 电子政务目录体系 人口基础库 法人基础库
也可以作为公司入职员工账号的基础信息库,如 油价你账号,电脑登录账号,办公平台账号,共享服务账号,
SVN账号,VPN账号,服务器账号,无线网登录账号等的公共账号登录信息库。
常见的开源产品 OPENLDAP https://www.openldap.org/