LDAP 简介
一、使用 Directory Services(目录服务)的目的
对于局域网内的一个用户来讲,工作等其它应用需要,我们必须凭帐号登录主机、用帐号收发E-mail,甚至为了管理需要公司还需要维护一个电子号码簿来存储员工的姓名、地址、电话号码等信息。随着时间的增长,我们会为这些越来越多的帐号和密码弄的头晕脑胀。同时,如果一个员工离开,管理员就不得不翻遍所有的记录帐号信息的文件把离职员工的信息删除。这些将是一个繁琐而效率低下的工作。那么,如果能将此些帐号信息等统一到一个文件中进行管理,无疑会大大提高员工及管理员的工作效率。目录服务(LDAP是其实现的一种)正是基于这些应用实现的。
二、概述
LDAP:Lightweight Directory Access Protocol 轻量级目录访问协议
LDAP协议基于X.500标准, 与X.500不同,LDAP支持TCP/IP, 是跨平台的和标准的协议
LDIF(LDAP Interchange Format)是指存储LDAP配置信息及目录内容的标准文本文件格式,之所以使用文本文件来格式来存储这些信息是为了方便读取和修改,这也是其它大多数服务配置文件所采取的格式。
LDIF文件常用来向目录导入或更改记录信息,这些信息需要按照LDAP中schema的格式进行组织,并会接受schema 的检查,
如果不符合其要求的格式将会出现报错信息。LDIF文件样例如下:
dn:cn=stan,ou=linux,ou=computer,dc=ourschool,dc=org
objectClass:organizationalPerson
cn:stan
cn:czm
sn:czm
其中,以"#"号开头的为注释行;第二行起的行中,冒号左边为属性,右边是属性的值,这类同于编程中的变量及为其所赋的值,但属性可以被重复赋值。
注意:同一个属性可以有一个或者多个值,ldap在寻址时,可以根据同一个属性的不同值进行寻址,例如上例中可以根据cn属性的stan和czm进行寻址,这样速度更快。
(1)监听端口
TCP/IP port: 389
SSL port: 636
(2)objectClass :对象类由 LDAP 目录使用来定义给定类型的对象可以有哪些属性。对象类还定义项必须有什么属性,以及项可以有什么属性。所有对象类都从其父对象类继承需求,然后添加它们自己的需求。
(3)Attribute:Attribute类同于编程语言中的变量,它可以被赋值,就像是可以存放一个单一类型信息的容器。官方声明了许多常用的 Attribute,如果其中没有你所需要的,你可以自己定义,但要避免重名。objectClass是一种特殊的Attribute,它包含其它用到的 Attribute以及它自身。
(4)schema:LDAP中,schema用来指定一个目录中所包含的objects的类型(objectClass)以及每一个objectClass中的各个必备(mandatory)和可选(optional)的属性(attribute)。因此,Schema是一个数据模型,它被用来决定数据怎样被存储,被跟踪的数据的是什么类型,存储在不同的Entry下的数据之间的关系。schema 需要在主配置文件slapd.conf中指定,以用来决定本目录中使用到的objectClass。管理员可以自己设计制定schema,一般包括属性定义(AttributeDefinition)、类定义(ClassDefinition)以及语法定义(SyntaxDefinition)等部分。
三、LDAP客户端和LDAP服务器端交互过程
1. 绑定。LDAP客户端与LDAP服务器建立连接。可匿名绑定,也可以用户名+密码形式绑定(具体参考LDAP Server, AD不支持匿名查询)。
2. LDAP客户端向LDAP服务器发出查询、添加、修改、删除entry等操作。
3.解除绑定。LDAP客户端与LDAP服务器断开连接。
示例
linux客户机若要通过LDAP服务器作为身份认证,一般都是和PAM结合起来使用,因此需安装PAM及和LDAP相关的pam_ldap模块,而要成功配置PAM可不是件容易的。
1.tinylogin程序登录流程
下面流程图是按照login程序中函数出现的顺序而成,都是C标准库里的函数.基本上可以看出login要处理的环节.
getty启动login进程
↓
+---------------------+
| fflush → fgets | 输入用户名.当登录认证失败时,login进程并不立即返回到getty,而是处理用户名输入.
+---------------------+ 当失败3次以上,login进程才退出并返回到getty
↓ (说明:getty会先处理用户名输入过程,并将用户名传递给login进程)
+---------------------+
| getpwnam | 获取用户信息.包括:用户名、用户密文、用户ID
+---------------------+
↓
+---------------------+
| getpass | 输入口令
+---------------------+
↓
+---------------------+
| crypt | 生成密文.将用户输入的口令生成密文
+---------------------+
↓
+---------------------+
| strcmp | 验证密文.将用户口令生成的密文与用户信息里的密文相比较
+---------------------+
↓
+----------------------------------------------+
| initgroups → endgrent → setgid → setuid | 切换用户ID.将正在运行的login进程的用户ID(为root身份)换为登录用户ID
+----------------------------------------------+
↓
+---------------------+
| clearenv | 清除环境变量.将当前的环境变量清除掉
+---------------------+
↓
+---------------------+
| setenv | 设置环境变量.有:TERM、HOME、SHELL、USER、LOGNAME、PATH
+---------------------+
↓
+---------------------+
| execv | 运行shell.如:bash、sh
+---------------------+
↓
login进程结束
2.pam_ldap程序验证流程
是基于LDAP的两次绑定验证,如下:
+------------------+
| 登录名和密码录入 |
+------------------+
↓
+--------------------------------+
| 第一次绑定(匿名或默认用户绑定) |
+--------------------------------+
↓
+---------------------+ 返回多个或0个entry
| 根据登录名搜索entry |----------------------------->{登录名错误,结束}
+---------------------+
↓返回唯一entry
+--------------------------+ 绑定失败
| 第二次绑定(使用DN和密码) |---------------------> {密码错误,验证失败}
+--------------------------+
↓绑定成功
{验证成功}
LDAP 简介的更多相关文章
- LDAP简介及LDAP服务器的安装与配置
一.LDAP简介 全称:Lightweight Directory Access Protocol,目录服务是一种特殊的数据库系统,其专门针对读取. LDAP目录中的信息是按照树型结构组织,具体信息存 ...
- (一)LDAP 简介
一 LDAP 简介 LDAP是一种通讯协议,LDAP支持TCP/IP.协议就是标准,并且是抽象的.在这套标准下,AD(Active Directory)是微软出的一套实现. AD 暂且把它理 ...
- Spring Security LDAP简介
1.概述 在本快速教程中,我们将学习如何设置Spring Security LDAP. 在我们开始之前,了解一下LDAP是什么? - 它代表轻量级目录访问协议.它是一种开放的,与供应商无关的协议,用于 ...
- LDAP入门与OpenLDAP使用配置
LDAP入门与OpenLDAP使用配置 1.LDAP简介 LDAP(轻量级目录访问协议,Lightweight Directory Access Protocol)是实现提供被称为目录服务的信息服务. ...
- LDAP注入
理解LDAP与LDAP注入 0x01 LDAP简介 查阅了一些网上的资料,读了好久还是觉得理解起来很困难,感觉还是不够干,之后看到的一个博客http://www.chinaunix.net/old_j ...
- Spring Boot教程(四十一)LDAP来管理用户信息(1)
LDAP简介 LDAP(轻量级目录访问协议,Lightweight Directory Access Protocol)是实现提供被称为目录服务的信息服务.目录服务是一种特殊的数据库系统,其专门针对读 ...
- 配置OpenLDAP,Java操作LDAP,DBC-LDAP进访问
LDAP快速入门 1. LDAP简介 LDAP(轻量级目录访问协议,Lightweight Directory Access Protocol)是实现提供被称为目录服务的信息服务.目录服务是一种特殊的 ...
- 理解LDAP与LDAP注入
0x01 LDAP简介 LDAP,轻量目录访问协议 |dn :一条记录的位置||dc :一条记录所属区域||ou :一条记录所属组织||cn/uid:一条记录的名字/ID| 此处我更喜欢把LDAP和 ...
- LDAP协议入门
LDAP协议入门(轻型目录访问协议) LDAP简介 轻型目录访问协议,全称:Lightweight Directory Access Protocol,缩写:LDAP,它是基于X.500标准的,但是简 ...
随机推荐
- Python--批量修改文件名称
Dr. he 最近忙着毕业论文的事情,需要将一千多张超声切面图的文件名后缀名去掉,例如:剔除文件名"1802014223FAMFIBAI.jpg"的第11个字符至第18个字符&qu ...
- Java学习_Java核心类
字符串和编码 字符串在String内部是通过一个char[]数组表示的,因此,可以按下面的写法: String s2 = new String(new char[] {'H', 'e', 'l', ' ...
- Plugin 插件体系
Solon 的插件也可以叫扩展组件,相当于Spring 的 starter.Solon已经提供了大量的基础插件,但对第三方的框架适配目前较少. 插件 说明 boot插件:: 说明 org.noear: ...
- Trick:如何去掉html标签点击时的蓝色边框
我们在用html标签时,如input.button.select,img标签时,点击标签经常出现一个蓝色的边框,这个边框真的很low,想要去掉怎么办 其实,css有样式可以设置一下,这个问题就轻松 ...
- OpenManipulator RM-X52 ROS 开源机械臂
DYNAMIXEL PRO PH54-200-S500-R 简介
- Android开发用到的几种常用设计模式浅谈(一):组合模式
1:应用场景 Android中对组合模式的应用,可谓是泛滥成粥,随处可见,那就是View和ViewGroup类的使用.在android UI设计,几乎所有的widget和布局类都依靠这两个类.组合模式 ...
- 最全Java面试题(一)
一.基础篇 1.1 java基础 面向对象的特征:继承.封装和多态 final, finally, finalize 的区别 final用于声明属性.方法和类,分别表示属性不可变.方法不可覆盖.类不可 ...
- Redis性能篇(二)CPU核和NUMA架构的影响
Redis被广泛使用的一个很重要的原因是它的高性能.因此我们必要要重视所有可能影响Redis性能的因素.机制以及应对方案.影响Redis性能的五大方面的潜在因素,分别是: Redis内部的阻塞式操作 ...
- centos7.5安装Oracle11gR2
centos7.5安装Oracle11gR2 说明:由于上一台旧的笔记本电脑(CPU:i5-7200,内存:8G,硬盘:128SSD+1T机械)卸任,所以打算在家搭建一个个人服务器(主要是换不锈钢盆不 ...
- user&group_management.md
登录shell bin/bash sbin/nologin useradd 的参数 -c comment 用户的注释性信息 -u UID 指定用户的UID -g initia ...