directory server / openldap / Lightweight Directory Access Protocol / Free IPA / phpladpadmin / ladp browser
s
问题列表
问题1:additional info: modify/add: olcRootPW: no equality matching rule
[root@scts08t ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /root/rootpwd.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={0}config,cn=config"
ldap_modify: Inappropriate matching (18)
additional info: modify/add: olcRootPW: no equality matching rule
解决1:https://blog.csdn.net/sj349781478/article/details/109510211
修改modify.ldif中对应选项的"add"为"replace"即可
参考资料:
https://www.openldap.org/
基于 CentOS 8 搭建 openLDAP 服务器
https://www.cnblogs.com/leviatan/p/14974237.html
Centos7安装OpenLDAP
https://www.cnblogs.com/chadiandianwenrou/p/9522756.html
Centos7 搭建openldap完整详细教程(真实可用)
https://blog.csdn.net/weixin_41004350/article/details/89521170
完整版的OpenLDAP搭建全过程
https://www.cnblogs.com/lemon-le/p/6266921.html
centos 6.5搭建openldap服务部署和测试(YUM安装)
https://www.cnblogs.com/liwanliangblog/p/9991499.html
LDAP Server / Lightweight Directory Access Protocol
https://www.server-world.info/en/note?os=CentOS_Stream_9&p=openldap&f=1
Welcome to the Symas OpenLDAP Repository!
https://repo.symas.com/
| Symas OpenLDAP 2.5 | Long Term Support Release |
| Symas OpenLDAP 2.6 | Current Feature Release |
| Symas OpenLDAP 2.4 for Linux | Most Recent Deprecated Release |
Index of /repo/rpm/SOFL/rhel8/x86_64
LDAP了解
[root@localhost ~]# yum list *ldap* # 检查LDAP默认安装 Last metadata expiration check: 0:04:16 ago on Fri 02 Dec 2022 07:45:22 AM PST. Installed Packages openldap.x86_64 2.4.46-18.el8 @anaconda sssd-ldap.x86_64 2.5.2-2.el8 @anaconda
[root@localhost ~]# tree -f /etc/openldap/
/etc/openldap
├── /etc/openldap/certs
└── /etc/openldap/ldap.conf
1 directory, 1 file
https://www.cnblogs.com/wilburxu/p/9174353.html
一、什么是LDAP?
(一)在介绍什么是LDAP之前,我们先来复习一个东西:“什么是目录服务?”
1. 目录服务是一个特殊的数据库,用来保存描述性的、基于属性的详细信息,支持过滤功能。
2. 是动态的,灵活的,易扩展的。
如:人员组织管理,电话簿,地址簿。
(二)了解完目录服务后,我们再来看看LDAP的介绍:
LDAP(Light Directory Access Portocol),它是基于X.500标准的轻量级目录访问协议。
目录是一个为查询、浏览和搜索而优化的数据库,它成树状结构组织数据,类似文件目录一样。
目录数据库和关系数据库不同,它有优异的读性能,但写性能差,并且没有事务处理、回滚等复杂功能,不适于存储修改频繁的数据。所以目录天生是用来查询的,就好象它的名字一样。
LDAP目录服务是由目录数据库和一套访问协议组成的系统。
(三)为什么要使用
LDAP是开放的Internet标准,支持跨平台的Internet协议,在业界中得到广泛认可的,并且市场上或者开源社区上的大多产品都加入了对LDAP的支持,因此对于这类系统,不需单独定制,只需要通过LDAP做简单的配置就可以与服务器做认证交互。“简单粗暴”,可以大大降低重复开发和对接的成本。
我们拿开源系统(YAPI)做案例,只需做一下简单的几步配置就可以达到LDAP的单点登录认证了:
{
"ldapLogin": {
"enable": true,
"server": "ldap://l-ldapt1.ops.dev.cn0.qunar.com",
"baseDn": "CN=Admin,CN=Users,DC=test,DC=com",
"bindPassword": "password123",
"searchDn": "OU=UserContainer,DC=test,DC=com",
"searchStandard": "mail"
}
}

是不是很方便呢?
二、LDAP的主要产品
LDAP的中文全称是:轻量级目录访问协议,说到底LDAP是一个访问协议,那么我们的数据究竟存储在哪里?
|
厂商 |
产品 |
介绍 |
|
SUN |
SUNONE Directory Server |
基于文本数据库的存储,速度快 。 |
|
IBM |
IBM Directory Server |
基于DB2 的的数据库,速度一般。 |
|
Novell |
Novell Directory Server |
基于文本数据库的存储,速度快, 不常用到。 |
|
Microsoft |
Microsoft Active Directory |
基于WINDOWS系统用户,对大数据量处理速度一般,但维护容易,生态圈大,管理相对简单。 |
|
Opensource |
Opensource |
OpenLDAP 开源的项目,速度很快,但是非主 流应用。 |
没错,就是正常存储数据的地方,而访问这些数据就是通过我们上述所说的LDAP。到这里两者关系了解!
三、LDAP的基本模型
每一个系统、协议都会有属于自己的模型,LDAP也不例外,在了解LDAP的基本模型之前我们需要先了解几个LDAP的目录树概念:
(一)目录树概念
1. 目录树:在一个目录服务系统中,整个目录信息集可以表示为一个目录信息树,树中的每个节点是一个条目。
2. 条目:每个条目就是一条记录,每个条目有自己的唯一可区别的名称(DN)。
3. 对象类:与某个实体类型对应的一组属性,对象类是可以继承的,这样父类的必须属性也会被继承下来。
4. 属性:描述条目的某个方面的信息,一个属性由一个属性类型和一个或多个属性值组成,属性有必须属性和非必须属性。
(二)DC、UID、OU、CN、SN、DN、RDN、slapd
|
关键字 |
英文全称 |
含义 |
|
slapd |
standard alone ldap daemon |
进程监听端口389 进程如:/usr/sbin/slapd -u ldap -h ldap:/// ldaps:/// ldapi:/// |
|
ldif |
LDAP Data Interchange Format |
如/opt/ldap/rootpwd.ldif,一种数据交换文件格式, key-value形式,value后不能有空格。 # vim /opt/ldap/rootpwd.ldif dn: olcDatabase={0}config,cn=config changetype: modify add: olcRootPW olcRootPW: {SSHA}uNbd2c2GGscR3tp5c4LRdjoKg/sCcvCb # 上面内容解析 # dn = distinguish name , 指定文件/etc/openldap/slapd.d/cn=config/olcDatabase={0}config,cn=config # changetype = add,delete,modify,replace等 # add: olcRootPW #表示对这个entry新增了一个olcRootPW的属性 # olcRootPW: {SSHA}uNbd2c2GGscR3tp5c4LRdjoKg/sCcvCb指定了密码属性值 |
|
dc |
Domain Component |
域名的部分,其格式是将完整的域名分成几部分,如域名为example.com变成dc=example,dc=com(一条记录的所属位置) |
|
uid |
User Id |
用户ID songtao.xu(一条记录的ID) |
|
ou |
Organization Unit |
组织单位,组织单位可以包含其他各种对象(包括其他组织单元),如“oa组”(一条记录的所属组织) |
|
cn |
Common Name |
公共名称,如“Thomas Johansson”(一条记录的名称) |
|
sn |
Surname |
姓,如“许” |
|
dn |
Distinguished Name |
“uid=songtao.xu,ou=oa组,dc=example,dc=com”,一条记录的位置(唯一) |
|
rdn |
Relative dn |
相对辨别名,类似于文件系统中的相对路径,它是与目录树结构无关的部分,如“uid=tom”或“cn= Thomas Johansson” |
信息模型:

命名模型:

功能模型:

安全模型:

四、LDAP的使用
那我们是如何访问LDAP的数据库服务器呢?

统一身份认证主要是改变原有的认证策略,使需要认证的软件都通过LDAP进行认证,在统一身份认证之后,用户的所有信息都存储在AD Server中。终端用户在需要使用公司内部服务的时候,都需要通过AD服务器的认证。
那么程序中是如何访问的呢? 我们以PHP脚本作为例子:
$ldapconn = ldap_connect(“10.1.8.78") $ldapbind = ldap_bind($ldapconn, 'username', $ldappass); $searchRows= ldap_search($ldapconn, $basedn, "(cn=*)"); $searchResult = ldap_get_entries($ldapconn, $searchRows); ldap_close($ldapconn);
1. 连接到LDAP服务器;
2. 绑定到LDAP服务器;
3. 在LDAP服务器上执行所需的任何操作;
4. 释放LDAP服务器的连接;
-
LDAP错误码对照
https://www.jianshu.com/p/79707ec11e97
-
LDAP安装
1、环境准备:centos8.5 + ldap 2.4.46
2、本地yum源服务安装
[root@scts08t ~]# yum install openldap openldap-clients openldap-servers
[root@scts08t ~]# rpm -qa | grep ldap #已安装的ldap软件如下
sssd-ldap-2.5.2-2.el8.x86_64
openldap-2.4.46-18.el8.x86_64
openldap-servers-2.4.46-18.el8.x86_64
openldap-clients-2.4.46-18.el8.x86_64
注:从openldap2.4.23版本开始,所有配置都保存在/etc/openldap/slapd.d目录下的cn=config文件夹内,不再使用slapd.conf作为配置文件。
配置文件的后缀为 ldif,且每个配置文件都是通过命令自动生成的,任意打开一个配置文件,在开头都会有一行注释,说明此为自动生成的文件,请勿编辑,使用ldapmodify命令进行修改
slapd即standard alone ldap daemon,该进程默认监听389端口
环境cents 8.6 ,软件ldap 2.4.46
[root@scts08t ldap]# yum list *ldap* Last metadata expiration check: 2:30:54 ago on Mon 28 Nov 2022 01:25:57 AM PST. Installed Packages openldap.x86_64 2.4.46-18.el8 @anaconda openldap-clients.x86_64 2.4.46-18.el8 @media-baseos openldap-servers.x86_64 2.4.46-18.el8 @System sssd-ldap.x86_64 2.5.2-2.el8 @anaconda Available Packages apr-util-ldap.x86_64 1.6.1-6.el8 media-appstream cyrus-sasl-ldap.i686 2.1.27-5.el8 media-baseos cyrus-sasl-ldap.x86_64 2.1.27-5.el8 media-baseos freeradius-ldap.x86_64 3.0.20-9.module_el8.5.0+898+d2e49574 media-appstream krb5-server-ldap.i686 1.18.2-14.el8 media-baseos krb5-server-ldap.x86_64 1.18.2-14.el8 media-baseos mod_ldap.x86_64 2.4.37-41.module_el8.5.0+977+5653bbea media-appstream nss-pam-ldapd.i686 0.9.9-3.el8 media-appstream nss-pam-ldapd.x86_64 0.9.9-3.el8 media-appstream openldap.i686 2.4.46-18.el8 media-baseos openldap-devel.i686 2.4.46-18.el8 media-baseos openldap-devel.x86_64 2.4.46-18.el8 media-baseos openssh-ldap.x86_64 8.0p1-10.el8 media-baseos perl-LDAP.noarch 1:0.66-7.el8 media-appstream perl-Mozilla-LDAP.x86_64 1.5.3-25.el8 media-appstream php-ldap.x86_64 7.2.24-1.module_el8.2.0+313+b04d0a66 media-appstream postfix-ldap.x86_64 2:3.5.8-2.el8 media-appstream python3-ldap.x86_64 3.3.1-2.el8 media-appstream
-
拷贝数据库配置文件
[root@scts08t ~]#cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG [root@scts08t ~]#chown ldap:ldap /var/lib/ldap/DB_CONFIG
-
[root@scts08t ldap]# systemctl start slapd.service
[root@scts08t ldap]# systemctl status slapd.service
● slapd.service - OpenLDAP Server Daemon
Loaded: loaded (/usr/lib/systemd/system/slapd.service; disabled; vendor preset: disabled)
Active: active (running) since Mon 2022-11-28 03:48:16 PST; 2h 0min ago
Docs: man:slapd
man:slapd-config
man:slapd-hdb
man:slapd-mdb
file:///usr/share/doc/openldap-servers/guide.html
Process: 42844 ExecStart=/usr/sbin/slapd -u ldap -h ldap:/// ldaps:/// ldapi:/// (code=exited, status=>
Process: 42829 ExecStartPre=/usr/libexec/openldap/check-config.sh (code=exited, status=0/SUCCESS)
Main PID: 42845 (slapd)
Tasks: 2 (limit: 23516)
Memory: 3.1M
CGroup: /system.slice/slapd.service
└─42845 /usr/sbin/slapd -u ldap -h ldap:/// ldaps:/// ldapi:///
Nov 28 03:48:16 scts08t systemd[1]: Starting OpenLDAP Server Daemon...
Nov 28 03:48:16 scts08t runuser[42832]: pam_unix(runuser:session): session opened for user ldap by (uid=>
Nov 28 03:48:16 scts08t runuser[42832]: pam_unix(runuser:session): session closed for user ldap
Nov 28 03:48:16 scts08t slapd[42844]: @(#) $OpenLDAP: slapd 2.4.46 (Aug 10 2021 05:11:20) $
mockbuild@x86-02.mbox.centos.org:/builddir/build/BUILD/ope>
Nov 28 03:48:16 scts08t slapd[42845]: slapd starting
Nov 28 03:48:16 scts08t systemd[1]: Started OpenLDAP Server Daemon.
lines 1-23/23 (END)
-
[root@scts08t ldap]# ls /var/lib/ldap/* #查看文件 /var/lib/ldap/data.mdb /var/lib/ldap/DB_CONFIG /var/lib/ldap/lock.mdb
-
[root@scts08t ldap]# ls /usr/share/openldap-servers #查看文件 DB_CONFIG.example slapd.ldif
-
[root@scts08t ~]# tree /etc/openldap/
[root@scts08t openldap]# tree /etc/openldap/ #查看目录树内容
/etc/openldap/
├── certs
├── check_password.conf
├── ldap.conf
├── schema
│ ├── collective.ldif
│ ├── collective.schema
│ ├── corba.ldif
│ ├── corba.schema
│ ├── core.ldif
│ ├── core.schema
│ ├── cosine.ldif
│ ├── cosine.schema
│ ├── duaconf.ldif
│ ├── duaconf.schema
│ ├── dyngroup.ldif
│ ├── dyngroup.schema
│ ├── inetorgperson.ldif
│ ├── inetorgperson.schema
│ ├── java.ldif
│ ├── java.schema
│ ├── misc.ldif
│ ├── misc.schema
│ ├── nis.ldif
│ ├── nis.schema
│ ├── openldap.ldif
│ ├── openldap.schema
│ ├── pmi.ldif
│ ├── pmi.schema
│ ├── ppolicy.ldif
│ └── ppolicy.schema
└── slapd.d
├── cn=config
│ ├── cn=schema
│ │ └── cn={0}core.ldif
│ ├── cn=schema.ldif
│ ├── olcDatabase={0}config.ldif
│ ├── olcDatabase={-1}frontend.ldif
│ ├── olcDatabase={1}monitor.ldif
│ └── olcDatabase={2}mdb.ldif
└── cn=config.ldif
5 directories, 35 files
-
LDAP 生成密码
[root@scts08t slapd.d]# slappasswd -s 123456
{SSHA}Mpv58bxd5bZzOHiLTN/PzltV5R9AG0Om
LDAP客户端软件
Softerra LDAP Browser(LDAP客户端软件) V4.5 ,v6.0 / https://ldapbrowserwindows.com/
https://www.downkr.com/ruanjian/270999.html
https://soft.xitongxz.net/202103/SofterraLDAPBrowser_V4.5_XiTongZhiJia.zip
Softerra LDAP Browser是一款功能全面的网络浏览器辅助工具,也可以说是LDAP客户端软件。
其实所谓的LDAP就是轻量目录访问协议,支持TCP/IP,这对访问Internet是必须的,所以说LDAP数据无论是在开发客户端软件以及设计程序的时候都是必不可少的存在。
Softerra LDAP Browser可以浏览LDAP服务器上的用户、用户组及其属性,支持从你的开发服务器上获取数据,可以选择将数据重新编辑,可以将数据插入到您新的编程方案中,可以与任何LDAP服务器协同工作,可以LDAP数据保存在组织收藏夹上。
https://bbs.sangfor.com.cn/forum.php?mod=viewthread&tid=118969
我们做在ldap相关的认证配置时,经常要使用第三方工具去读取ldap目录接口,比较常用的就是ldapbrower,这里对ldapbrower做一个简单介绍,工具见附件



<ignore_js_op>
<ignore_js_op>
LDAP中CN OU DC的含义
CN, OU, DC 都是 LDAP 连接服务器的端字符串中的区别名称(DN, distinguished name)
LDAP连接服务器的连接字串格式为:ldap://servername/DN
其中DN有三个属性,分别是CN,OU,DC
在 LDAP 目录中,
· DC (Domain Component) //类似于DNS中的每个元素,类比为盘符
· CN (Common Name) //通用名,类比为文件夹或文件
· OU (Organizational Unit) //组织单位,类比为文件夹
LDAP 目录类似于文件系统目录。
下列目录:
DC=redmond,DC=wa,DC=microsoft,DC=com
如果我们类比文件系统的话,可被看作如下文件路径:
Com\Microsoft\Wa\Redmond
例如:CN=test,OU=developer,DC=domainname,DC=com
在上面的代码中 cn=test 可能代表一个用户名,ou=developer 代表一个 active directory 中的组织单位。这句话的含义可能就是说明 test 这个对象处在domainname.com 域的 developer 组织单元中。
end


浙公网安备 33010602011771号