1. LDAP简介
LDAP是一种轻量级的目录访问协议,它是用来管理信息的一种方法。LDAP通常用来存储连接、用户、组等信息,可以通过LDAP检索和修改这些信息。LDAP是一个比较常用的协议,目前广泛用于Web应用程序的身份验证和授权。
2. 搭建LDAP服务器
2.1 安装OpenLDAP
在Linux环境下,安装OpenLDAP非常简单,只需要使用系统的包管理器即可安装:
sudo apt-get install ldap-utils slapd
安装完成后,可以使用以下命令检查LDAP服务器是否成功运行:
sudo systemctl status slapd
应该可以看到类似下面的提示:
● slapd.service - LSB: OpenLDAP standalone server (Lightweight Directory Access Protocol)
Loaded: loaded (/etc/init.d/slapd; generated)
Active: active (running) since Tue 2020-07-28 09:03:58 UTC; 3s ago
Docs: man:systemd-sysv-generator(8)
Tasks: 4 (limit: 4669)
Memory: 35.3M
CGroup: /system.slice/slapd.service
└─694 /usr/sbin/slapd -d 0 -u openldap -g openldap -h ldap:/// ldapi:/// -F /etc/ldap/slapd.d
2.2 配置LDAP服务器
在安装完成OpenLDAP之后,需要对LDAP服务器进行配置,包括设置管理员用户、打开SSL加密以及添加组织架构等。以下是LDAP服务器的常见配置文件和设置:
配置LDAP管理员用户
在配置LDAP服务器之前,需要设置LDAP管理员用户,以便管理员用户可以在进行LDAP服务器的配置和管理时进行身份验证。
sudo ldapadduser
执行该命令后应该会提示输入管理员用户的账户名,如下所示:
Enter new LDAP admin account name: admin
然后会提示输入管理员用户的密码:
Enter new LDAP admin account password: 执行该命令后应该会提示输入管理员用户的账户名,如下所示:
然后再次输入管理员用户的密码,以确认管理员密码无误:
Please retype again for confirmation:
配置OpenLDAP SSL证书
如果要允许加密连接到LDAP服务器,则需要为LDAP配置SSL证书。SSL证书用于加密LDAP连接,以确保传输过程中的信息是安全的。以下是使用OpenSSL自签名证书的步骤:
1. 生成证书Signing Request:
openssl req -new -nodes -keyout server.key -out server.csr
2. 生成证书:
openssl x509 -req -in server.csr -days 365 -out server.crt -signkey server.key
3. 将生成的证书和私钥复制到指定目录:
sudo cp server.crt /etc/ldap/slapd.crt
sudo cp server.key /etc/ldap/slapd.key
4. 修改LDAP配置文件指定SSL证书和私钥:
sudo nano /etc/ldap/slapd.conf
修改下面的行:
TLSCACertificateFile /etc/ldap/slapd.crt
TLSCertificateFile /etc/ldap/slapd.crt
TLSCertificateKeyFile /etc/ldap/slapd.key
5. 重新启动OpenLDAP:
sudo systemctl restart slapd
添加组织结构
在配置文件/etc/ldap/slapd.conf中添加:
slapd.conf1:
database bdb
suffix "dc=example,dc=com"
rootdn "cn=admin,dc=example,dc=com"
rootpw {SSHA}KhLFBxaTmaaqhvNitnSV9XH5NxsW9orm
directory /var/lib/ldap
其中,上述LDIF格式的内容是将主机标识符myhost.example.com的信息添加到LDAP数据库。下面是一些Slapd.conf文件的常见设置:
属性(Attribute)
在LDAP中,属性就是存储数据的单元。有以下常见属性:
cn 指定客户端名称
dc 指定客户端的域名
uid 指定用户的ID
o 企业或者组织名称
ou 部门名称
mail 电子邮件
description 描述
telephoneNumber 电话号码
postalCode 邮政编码
facsimileTelephoneNumber 传真号码
添加单个的Zimbra邮件服务器,Zimbra的管理员将在LDAP中创建标识符
dn: cn=myServer,ou=servers,dc=example,dc=com
objectclass: top
objectclass: device
objectclass: ipHost
cn: myServer
ipHostNumber: 192.0.2.11
ipServicePort: zimbraAdminPort
ipServiceProtocol: tcp
zimbraServiceInstalled: zimbraAdmin
zimbraServiceEnabled: zimbraAdmin
(注:objectclass可以使用多个,每个表明该条目的属性)
3. 使用LDAP进行认证
在LDAP服务器成功设置和运行后,接下来需要将应用程序配置为使用LDAP进行身份验证。以下是使用LDAP进行身份验证的情况下,基于Linux的应用程序所需的基本技术和步骤:
安装LDAP客户端工具
在Linux系统中,需要使用LDAP客户端工具authconfig命令安装LDAP客户端:
sudo yum install authconfig
将Linux系统配置为LDAP客户端
安装好LDAP客户端后,需要对Linux系统进行配置,以便可以使用LDAP进行身份验证。
sudo authconfig --enableldap --ldapserver=ldap://ldap.example.com/ --ldapbasedn="dc=example,dc=com" --enableldapauth --update
测试LDAP身份验证
完成LDAP客户端的安装和配置后,需要对LDAP身份验证进行测试,以确保应用程序可以使用LDAP进行身份验证。以下是在Linux系统中测试LDAP身份验证的步骤:
1. 首先检查/etc/nsswitch.conf文件的配置,确保将“ldap”添加到本地用户数据库中:
passwd: files ldap
shadow: files ldap
2. 切换到LDAP用户:
su - ldap-user
3. 如果可以登录,则应该可以使用su命令切换到LDAP用户,如下所示:
su: warning: cannot chance to ldap-user
如果无法登录,则可能需要检查LDAP身份验证配置,以确定是否设置正确。
总结
通过以上的步骤,我们成功的在Linux环境下搭建了LDAP服务器,并且实现了使用LDAP进行身份验证。LDAP作为一个轻量级的目录访问协议,不仅可以用于Web应用程序的身份验证和授权,还可以使用公司内部的系统内部身份验证,具有广泛使用价值。