统一身份认证系统 OpenLDAP 完整部署
0)LDAP 介绍
LDAP 是什么?在那些地方用会用到 LDAP?
LDAP英文名称:Lightweight Directory Access Protocol 轻型目录访问协议。
常用在单点登录,用户可以通过一个用户和密码登录多个服务,方便管理。目前我们使用的一下工具,Jenkins,GitLab,Jumpserver,Grafana,Confluence,NextCloud 等等,很多开源的软件都集成了 LDAP,方便了用户使用,也方便了运维管理。下面针对 LDAP 在 CentOS7 环境中的安装方法进行一下说明:
1)LDAP 一般组织架构

1)软件安装
yum install openldap openldap-clients openldap-servers -y

2)配置 OpenLDAP Server
vim /etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif
将 cn=Manager,dc=my-domain,dc=com

改为你自己的,内容可以随便,但是所有地方都要一致
cn=admin,dc=wuhanjiayou,dc=cn

vim /etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif
将 olcSuffix: dc=my-domain,dc=com olcRootDN: cn=Manager,dc=my-domain,dc=com

改为
olcSuffix: dc=wuhanjiayou,dc=cn
olcRootDN: cn=admin,dc=wuhanjiayou,dc=cn

然后在末尾添加一行
此处设置的是 认证密码
olcRootPW: 123456

- 拷贝 DB 文件
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
// 修改该文件的权限
chown -R ldap:ldap /var/lib/ldap/
- 测试配置文件是否正确
slaptest -u

- 如果修改了 hostname,相应的要修改 hosts,不然执行命令会卡住,很长时间才会执行完成。
hostnamectl set-hostname ldap
echo '127.0.0.1 ldap' >> hosts
- 启动服务
systemctl start slapd
systemctl enable slapd
- 添加 scheme 表 [ 重要 ]
否则,后面使用 ldapaddgroup 命令会报错 Error adding group test to LDAP
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/cosine.ldif
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
3)创建 base.ldif 文件
- 创建如下文件,内容按照自己的配置修改
[root@localhost ~] vim base.ldif
dn: dc=wuhanjiayou,dc=cn
objectClass: dcObject
objectClass: organization
o: wuhanjiayou.cn
dc: wuhanjiayou
dn: ou=users,dc=wuhanjiayou,dc=cn
objectClass: organizationalUnit
objectClass: top
ou: users
dn: ou=groups,dc=wuhanjiayou,dc=cn
objectClass: organizationalUnit
objectClass: top
ou: groups
- 建立最基础的目录结构
ldapadd -x -W -D "cn=admin,dc=wuhanjiayou,dc=cn" -f base.ldif

- 验证基础目录是否创建成功
vim /etc/openldap/ldap.conf
添加如下行信息
BASE dc=wuhanjiayou,dc=cn
URI ldap://10.0.59.114 ldap://10.0.59.114:666

4)管理用户与组
1. 安装依赖包 yum install sharutils
yum install sharutils -y
2. Ldapscripts 需要手动下载安装
cd /opt
tar xzvf ldapscripts-2.0.8.tgz
cd ldapscripts-2.0.8 && make install PREFIX=/
3. 配置 ldapscripts
vim /etc/ldapscripts/ldapscripts.conf
3.1 将 SERVER="ldap://localhost" 改成 SERVER="ldap://10.0.59.114"
3.2 将 SUFFIX="dc=example,dc=com" 改成 SUFFIX="dc=wuhanjiayou,dc=cn"
3.3 将 BINDDN="cn=Manager,dc=example,dc=com" 改成 BINDDN="cn=admin,dc=wuhanjiayou,dc=cn"
3.4 去掉 #ICONVCHAR="ISO-8859-15" 的注释
4. 修改 /etc/ldapscripts/ldapscripts.passwd 文件
sh -c "echo -n '123456' > /etc/ldapscripts/ldapscripts.passwd"
5)管理 Group,User
// 创建 Group
ldapaddgroup it
// 创建 User
ldapadduser wangj it
// 设置用户密码
ldapsetpasswd wangj

6)基于 PHPLDAPAdmin 访问管理后台
LDAP 装好后,下面安装 Web 界面 PHPLDAPAdmin。
我们可以安装 PHPLDAPAdmin Web 平台来管理我们的 OpenLDAP 服务,这样就可以在 Web 页面进行 OpenLDAP 服务的数据增删改查,方便运维。
安装 Apache 和 PHP
yum install httpd php php-ldap php-gd php-mbstring php-pear php-bcmath php-xml -y
安装 PHPLDAPAdmin
# 需要先安装 epel 源
yum -y install epel-release
yum --enablerepo=epel -y install phpldapadmin
配置 HTTPD
vim /etc/httpd/conf/httpd.conf
AllowOverride All // 第 151 行
DirectoryIndex index.html index.cgi index.php // 第 164 行
# 末尾添加如下几行
# server's response header
ServerTokens Prod
# keepalive is ON
KeepAlive On

配置 PHPLDAPAdmin,修改登入规则和监听端口
vim /etc/phpldapadmin/config.php
# 397 行取消注释, 398 行添加注释 [设置通过 DN 整个条目来登入 PHPLDAPAdmin 而不是通过用户的 UID 来登入 ]
$servers->setValue('login','attr','dn');
// $servers->setValue('login','attr','uid');
# [ 如果 LDAP 服务安装和 PHPLDAPAdmin 服务安装不在同一个服务器上 ]
# 则修改 298 和 301 行, 修改 PHPLDAPAdmin 监听的 IP 和端口, 并取消注释
# [ 如果 LDAP 服务和 PHPLDAPAdmin 服务在同一台服务器上 ]
# 且 LDAP 的端口为 389, 则可不修改, 直接取消注释即可
/* Examples:
'ldap.example.com',
'ldaps://ldap.example.com/',
'ldapi://%2fusr%local%2fvar%2frun%2fldapi'
(Unix socket at /usr/local/var/run/ldap) */
$servers->setValue('server','host','127.0.0.1');

配置 PHPLDAPAdmin
修改 PHPLDAPAdmin 的配置文件,访问控制权限 vim /etc/httpd/conf.d/phpldapadmin.conf,允许谁访问添加访问的 IP 段,允许远程客户端访问。
vim /etc/httpd/conf.d/phpldapadmin.conf
#
# Web-based tool for managing LDAP servers
#
Alias /phpldapadmin /usr/share/phpldapadmin/htdocs
Alias /ldapadmin /usr/share/phpldapadmin/htdocs
<Directory /usr/share/phpldapadmin/htdocs>
<IfModule mod_authz_core.c>
# Apache 2.4 # Apache版本是 2.4 的修改这里的配置
Require local
Require ip 10.0.59.0/24 # 修改
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
Allow from ::1
</IfModule>
</Directory>

启动 PHPLDAPAdmin
systemctl enable httpd
systemctl start httpd
Web 浏览器访问网址
使用数据库管理账户登入 PHPLDAPAdmin,如果登入成功,则表示配置成功。
用户名:cn=admin,dc=wuhanjiayou,dc=cn 密码:123456

如登录报错:可尝试关闭服务器 SELinux 试试
setenforce 0

大功告成~
统一身份认证系统 OpenLDAP 完整部署的更多相关文章
- 基于DDD + SD.Framework实现的统一身份认证系统
项目地址 http://git.oschina.net/lishilei0523/ShSoft.UAC 项目说明 本项目开发的目的有三: 1.作为一个使用SD.Framework框架开发的项目样板 2 ...
- 中国科学技术大学统一身份认证系统CAS
CAS | Apereohttps://www.apereo.org/projects/cas 中国科学技术大学统一身份认证系统https://passport.ustc.edu.cn/login?s ...
- SSO单点登录统一身份认证系统
什么是单点登录 简单点说就是公司有A,B两个系统,我登录了A系统之后再跳转到B系统可以直接访问,而不需要再次登录B系统. 几种常见的单点登录实现方式 在讲解单点登录之前先讲解几个基本的概念: Cook ...
- 构建基于分布式SOA架构的统一身份认证体系
摘要:本文充分利用SOA架构松耦合的特点,通过规范统一网络接口实现业务系统整合,既提升系统安全性,又简化资源访问操作,具有重要的理论和现实意义. 统一身份认证旨在将分散在各个信息系统中的用户和权限资源 ...
- JEECG 集成KiSSO单点登录实现统一身份认证
JEECG 集成KiSSO单点登录实现统一身份认证 JEECG 如何为其他第三方系统实现统一身份认证服务,实现单点登录? 第三方系统如何对接呢? 今天为大家揭开这层面纱,让大家了解实质,使用它更快速的 ...
- 【.NET Core微服务实战-统一身份认证】开篇及目录索引
简介 学习.NETCORE也有1年多时间了,发现.NETCORE项目实战系列教程很少,都是介绍开源项目或基础教程,对于那些观望的朋友不能形成很好的学习思路,遇到问题怕无法得到解决而不敢再实际项目中 ...
- 统一用户认证系统CUAS实现要点
背景: 基于目前存在多套员工使用的日常工作子系统,现状为各系统各自有一套用户体系,员工需要记住各系统的用户名.密码等信息,还需要登录多个系统,重复工作量颇多.统一用户认证组件将用户名.密码等信息统一存 ...
- 介绍 ASP.NET Identity - ASP.NET 应用程序的成员身份认证系统
ASP.NET Identity 是构建 ASP.NET web 应用程序的一种新的身份认证系统.ASP.NET Identity 可以让您的应用程序拥有登录功能,并可以轻松地自定义登录用户的相关数据 ...
- 记录使用Python登录浙江大学统一身份认证
背景 现在每天要进行健康情况上报,但是因为经常睡过头忘记打卡,于是想着写一个程序来自动打卡. 统一身份认证 访问健康情况上报页面(https://healthreport.zju.edu.cn/nco ...
- 身份认证系统(一)单WEB应用的身份认证
身份认证技术,也就是所谓的登录功能,是现代WEB系统最常见的功能之一.本系列文章就试图为大家详细的介绍身份认证技术. Basic认证模式 Basic认证模式是较早被广泛应用的一种HTTP标准提供的认证 ...
随机推荐
- curl接口调用
CURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP.FTP.TELNET等.最爽的是,PHP也支持 CURL 库.使用PHP的CURL 库可以简单和有效地去抓网页.你只 ...
- LeetCode组合总和I~IV和背包问题小结
一.组合总和问题 最近在看leetcode的组合问题,一共四道,总结一下共通之处与不同之处. 原题链接: 组合总和 组合总和II 组合总和III 组合总和IV 对比如下,为了便于对比,将原题目的叙述方 ...
- offline 2 online | AWAC:基于 AWR 的 policy update + online 补充数据集
论文题目:AWAC: Accelerating Online Reinforcement Learning with Offline Datasets ICLR 2021 reject,3 4 6 6 ...
- MAC使用XQuartz调用图形界面
DBA经常遇到需要调用图形的操作,通常Windows用户习惯使用Xmanager这类软件,MAC用户习惯使用XQuartz,之前版本系统会自带,现在需要自行下载. 比如在 https://www.xq ...
- TStringList的IndexOfName
IndexOfName这个方法用着很好,记录下,以后留意下 上个例子: procedure TForm1.Button1Click(Sender: TObject); var MyList: TStr ...
- MySQL的四种分区方式
1. 什么是表分区? mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可以通过my.cnf中的datadir来查看),一张表主要对应着三个文件,一个是frm存放 ...
- [JVM]GC日志解读解析
GC日志解读解析 示例代码 package jvm.test1; import java.util.Random; import java.util.concurrent.TimeUnit; impo ...
- 鸿蒙开发游戏(三)---大鱼吃小鱼(放置NPC)
效果图 添加了一个NPC(小红鱼),玩家控制小黄鱼 鸿蒙开发游戏(一)---大鱼吃小鱼(界面部署) 鸿蒙开发游戏(二)---大鱼吃小鱼(摇杆控制) 鸿蒙开发游戏(三)---大鱼吃小鱼(放置NPC) 鸿 ...
- NC14545 经商
题目链接 题目 题目描述 小d是一个搞房地产的土豪.每个人经商都有每个人经商的手段,当然人际关系是需要放在首位的. 小d每一个月都需要列出来一个人际关系表,表示他们搞房地产的人的一个人际关系网,但是他 ...
- 【Unity3D】Unity3D技术栈
1 前言 本文梳理了笔者在学习 Unity3D 的过程中,对 Unity3D 的理解和学习路线,以帮助读者循序渐进地学习 Unity3D,后续笔者仍会持续更新 Unity3D 相关技术栈,并同步到 ...