单点登录配置界面(单点登录系统必备品)
单点登录配置界面(单点登录系统必备品)域名的部分,其格式是将完整的域名分成几部分,如域名为example.com变成dc=example dc=com(一条记录的所属位置)Domain Component全称含义dc
什么是LDAPLDAP全称是轻型目录访问协议(Lightweight Directory Access Protocol)是一个开放的,中立的,工业标准的应用协议,通过IP协议提供访问控制和维护分布式信息的目录信息。
LDAP目录以树状的层次结构来存储数据。如果你对自顶向下的DNS树或UNIX文件的目录树比较熟悉,也就很容易掌握LDAP目录树这个概念
当公司规模大了之后,会有非常多的系统,如果每一个系统都需要注册一个用户名,每一个系统的用户名与密码可能都不一样。对员工来说就是一件折腾的事情,从公司的IT运维角度来说更是麻烦。所以需要统一认证,单点登录。而LDAP就是最适合在单点登录中使用的系统。
关键字 |
全称 |
含义 |
dc |
Domain Component |
域名的部分,其格式是将完整的域名分成几部分,如域名为example.com变成dc=example dc=com(一条记录的所属位置) |
uid |
User Id |
用户Id zuoquantu (一条记录的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” |
- o:organization(组织-公司)
- ou:organization unit(组织单元-部门)
- c:countryName(国家)
- dc:domainComponent(域名)
- sn:suer name(真实名称)
- cn:common name(常用名称)
准备:
系统:Centos7.7.1908
LDAP:openldap 2.4.44
关闭防火墙和SELinux(这里都是临时关闭,避免因此出现访问问题)
systemctl stop firewalld
setenforce 0
安装 OpenLdap
1、安装OPenLDAP与相关安装包
yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel
安装命令
安装完成
2、安装完成后直接启动服务并将服务设置为自动启动。运行如下命令
systemctl start slapd
systemctl enable slapd
systemctl status slapd //查看下服务有没有启动
服务启动状态
启动完之后检查slapd服务和端口运行
netstat -antup | grep -i 389
3、创建LDAP的根密码
此密码用于整个安装过程,为LADP的管理员根密码,使用slappasswd 生成密码
输入slappasswd后会提示输入密码与确认密码,系统会输出一串SSHA加密后的字符串,拷贝出来放到notepad 中备用。
我设置的密码是admin@admin,加密后的字符串为
{SSHA}rks7qNcDYskN42KmLMSK4UIDe8GMsSwb
slappasswd
4、配置LDAP服务
◆ OPenLdap 2.4不再推荐直接使用配置文件方式,并且极容易出错,修改的所有过程,均使用ldapmodify完成
ls/etc/openldap/slapd.d/cn=config
文件名和我的一样差不多就行
修改olcDatabase\=\{2\}hdb.ldif文件,修改的字段如下:
olcSuffix :用于保存域信息,更新为自己的域,这里我填的qiang
olcrootDN :根的DN(唯一识别名),根的区别名,它用于根管理员在此节点下做所有的管理
olcRootPW :LDAP管理员的根密码,刚才执行slappasswd命令生成的加密内容就放在这
vim /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb.ldif
修改的地方
接下来在任意目录下创建 db.ldif文件,但是不能再/etc/openldap/slapd.d/cn=config目录创建。我在root目录下创建的。
◆ 修改db.ldif文件
vim db.ldif
标记黄色的部分改成自己的内容,其他内容可以直接复制
dn: olcDatabase={2}hdb cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=qiang dc=com
dn: olcDatabase={2}hdb cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager dc=qiang dc=com
dn: olcDatabase={2}hdb cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}rks7qNcDYskN42KmLMSK4UIDe8GMsSwb
ldapmodify命令在运行环境中直接修改配置文件,并且不需要重启就生效,具体请看ldapmodify官方文档。
在db.ldif目录下运行命令
ldapmodify -Y EXTERNAL -H ldapi:/// -f db.ldif
要注意的是有三个modifying entry才算全部更新成功。
出现这3个就可以
◆ 修改monitor文件
与修改db.ldif文件类似。在刚刚的db.ldif目录下运行
vim monitor.ldif
在此文件中输入以下内容
olcAccess: {0}to * by dn.base="gidNumber=0 uidNumber=0 cn=peercred cn=external cn=auth" read by dn.base="cn=Manager dc=qiang dc=com" read by * none
// 修改好后,运行如下命令,不报错就行
ldapmodify -Y EXTERNAL -H ldapi:/// -f monitor.ldif
◆ 创建一个基础库,用于保存数据。安装ldap后会有一个example配置,我们复制一份配置文件并赋予它所有权限
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap:ldap /var/lib/ldap/*
完成配置后就可以向数据库中增加schemas,需要增加的有:cosine , nis,inetorgperson
schemas是什么,schemas是数据库表的定义文件,相当于关系数据库中的表的定义。还是有点区别。
◆ 执行ldapadd命令增加,命令如下
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
◆ 完成以后创建base.ldif,在库中增加自己管理域下的内容,运行命令
vim base.ldif
在文件中输入以下内容,黄色区域修改自己的,其他直接复制
dn: dc=qiang dc=com
dc: qiang
objectClass: top
objectClass: domain
dn: cn=Manager dc=qiang dc=com
objectClass: organizationalRole
cn: Manager
description: LDAP Manager
dn: ou=People dc=qiang dc=com
objectClass: organizationalUnit
ou: People
dn: ou=Group dc=qiang dc=com
objectClass: organizationalUnit
ou: Group
// 将此数据保存到库中,运行命令
// 此命令会提示输入ldap的密码,输入的密码与第3步创建的密码一致,我输入的:admin@admin
ldapadd -x -W -D "cn=Manager dc=qiang dc=com" -f base.ldif
到这里基本配置完成
使用工具连接LDAP我这里使用的是ldapadmin工具连接的LDAP数据库,都可以正常连接。