gogs,jenkins配置通过openldap用户系统进行登录

2019/7/28 posted in  CI/CD OPS

持续集成的工具链非常多(比如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

参考资料

  1. https://fableking.iteye.com/blog/1850824