Git服务器-给gerrit搭建一个LDAP认证服务

2024/05/29 | 字数1406 | 阅读3分钟


在上期《Git服务器-使用gerrit搭建私有git服务》中,我们用nginx搭建了一个HTTP认证服务,用来给gerrit做用户登录,看起来有点简陋。另外每次切换用户的时候,需要先清理本地cookies才可以,有点儿繁琐。今天我们搭建一个LDAP服务,用来给gerrit做登陆服务,不会再有清理cokkies的问题。

LDAP(Lightweight Directory Access Protocol)轻型目录访问协议,是一个开放的、中立的、工业标准的应用协议,它通过IP协议提供访问控制和维护分布式目录信息。之所以选择这个协议,因为这是一个开放的工业标准,成熟稳定,适合私有部署,保证信息安全,同时gerrit原生支持。本次我们使用的LDAP服务软件,是OpenLDAP的slapd,同时也是一个开源软件。使用LDAP后,gerrit的拓扑结构是这样的:

gerrit with LDAP

安装LDAP

bash
1
2
3
4
5
# 安装软件slapd
sudo apt install slapd ldap-utils

## 安装工具用户/组工具
sudo apt install ldapscripts

配置LDAP

这是一个简单的目录树结构,用来为gerrit做认证服务: LDAP root DN

bash
1
2
## 配置Root DN
sudo dpkg-reconfigure slapd

上面的命令中需要填写一些信息,内容如下:

接下来,需要添加people和groups组织单元(OU=organization unit)信息,新建一个add.ldif文件,内容如下:

txt
1
2
3
4
5
6
7
dn: ou=people,dc=ticktechman,dc=tech
objectClass: organizationalUnit
ou: people

dn: ou=groups,dc=ticktechman,dc=tech
objectClass: organizationalUnit
ou: groups

然后执行下面的命令将OU信息添加到LDAP服务中:

bash
1
2
3
4
5
## 添加people和groups,这里需要输入密码,就是上面第4步中输入的密码
sudo ldapadd -x -D cn=admin,dc=ticktechman,dc=tech -W -f add.ldif

## 查询结果,这里ldapi:///使用的本地IPC通道,不是网络
ldapsearch -x -LLL -H ldapi:/// 

接下来我们可以使用ldscripts来访问ldap服务器上的信息,主要是用来添加用户和组信息,不过在此之前,需要先修改好ldscripts的配置(主要是和服务器相关的配置信息),配置文件位于/etc/ldapscripts/ldapscripts.conf中,需要修改的内容如下:

cfg
1
2
3
4
5
6
SERVER="ldap://192.168.1.107"      ## 服务器地址
SUFFIX="dc=ticktechman,dc=tech"    ## DN信息
GSUFFIX="ou=groups"                ## 组对应的OU
USUFFIX="ou=people"                ## 用户对应的OU

BINDPWDFILE="/etc/ldapscripts/ldapscripts.passwd"  ## 这一项不需要修改,这里配置了访问LDAP服务的密码文件位置,注意这里的密码不能包含换行符

使用这个命令将密码添加的上面配置的文件中:

bash
1
echo -n 'admin' | sudo tee /etc/ldapscripts/ldapscripts.passwd

好了,接下来就可以添加用户和组信息了:

bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
## 添加组
sudo ldapaddgroup administrators
sudo ldapaddgroup rnd

## 添加用户
sudo ldapadduser admin administrators
sudo ldapadduser ticktech rnd

## 修改密码
sudo sudo ldapsetpasswd admin
sudo sudo ldapsetpasswd ticktech

配置gerrit

cfg
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# gerrit.config
[auth]
    type = LDAP
[ldap]
    server = ldap://192.168.1.107
    username = cn=admin,dc=ticktechman,dc=tech
    password = admin
    accountBase = ou=people,dc=ticktechman,dc=tech
    groupBase = ou=groups,dc=ticktechman,dc=tech
    accountPattern = (uid=${username})
    supportAnonymous = false

配置完成后,重启gerrit服务。

登陆/登出测试

现在登陆界面变成这样了: gerrit login with LDAP 登陆之后,也可以正常登出。

参考

上一篇:Git服务器-使用gerrit搭建私有git服务 下一篇:Git进阶-如何管理非文本文件

【文章不错,鼓励一下】