持续集成的工具链非常多(比如jenkins, gogs, jira, confluence, sonarqube等),每个系统管理一份用户密码显然是工作量巨大的,配置通过openldap进行登录可以显著减少帐号管理的工作量
下面拿gogs,jenkins举例,配置通过openldap进行联合登录
启动openldap服务器
使用docker工具进行启动,openldap镜像参考:https://github.com/nickstenning/docker-slapd
git clone https://github.com/nickstenning/docker-slapd.git
然后进行docker镜像构建
docker build -t slapd .
操作效果如下
编写docker-compose.yml进行容器管理
version: '2.1'
services:
slapd:
image: slapd
restart: always
environment:
- LDAP_DOMAIN=uulvs.com
- LDAP_ORGANISATION="我的公司"
- LDAP_ROOTPASS=root
volumes:
- ./data/ldap:/var/lib/ldap
- ./data/ldapconfig:/etc/ldap/slapd.d
ports:
- 389:389
这里演示就设置管理员密码为root,管理员用户名是默认的admin,一般保持admin即可
启动
docker-compose up -d
查看效果
openldap服务器已经在389端口监听了
使用Apache Directory Studio添加测试用户
填上hostname和端口389
然后以管理员进行登录admin, root
添加Users组织
这个组织下的用户给gogs和jenkins用来进行登录,属性如下
在Users组织下添加两个测试用户
其中userPassword和uid是必填的,用来进行登录验证
我添加了两个用户名密码分别是
suxiaolin1 root
suxiaolin2 root
jenkins中集成openldap
进入到 "jenkins" >> "系统管理" >> "全局安全配置"
将安全域切换到ldap,如下
按照如下进行配置
其中管理员的"Manager DN"可以不填
然后使用Test LDAP settings进行测试
输入用户名密码 suxiaolin2 root 效果如下
说明认证通过,然后保存这个页面,以后jenkins就可以通过openldap进行认证登录了
gogs中集成openldap
打开 "管理面板" >> "授权认证管理" >> "添加新的源"
认证类型选择BindDN
必填项按如下进行设置
然后保存这个页面即可,以后就可以通过openldap的用户登录gogs服务器了
一些注意的点
如果配置完jenkins后,无法登录,可修改jenkins的~/.config.xml进行恢复
<authorizationStrategy class="hudson.security.AuthorizationStrategy$Unsecured"/>
openldap服务器docker启动代码已上传github:https://github.com/neatlife-learn/myslapd