背景
公司各种信息化系统越来越多,需要记住的用户账号也越来越多,人员入职离职就要分别在不同的各种系统上进行添加和删除比较繁锁,急需要一个可以统一认证的服务,于是就开始研究ldap,ldap中openldap是开源的方便使用,于是花了大概2个月时间才把标题上面的这几个服务全部调通,以下记录配置过程,用于保持记忆。
安装openldap
openldap软件有很多基于他的二次开发的软件,我这边就随便搜索了一个并使用容器部署,使用docker compose部署,yml文件如下:
version: '3'
networks:
go-ldap-admin:
driver: bridge
services:
openldap:
image: registry.cn-hangzhou.aliyuncs.com/ali_eryajf/openldap:1.4.0
container_name: go-ldap-admin-openldap
hostname: go-ldap-admin-openldap
restart: always
environment:
TZ: Asia/Shanghai
LDAP_ORGANISATION: "china-xxx.com"
LDAP_DOMAIN: "china-xxx.com"
LDAP_ADMIN_PASSWORD: "123456"
command: [ '--copy-service' ]
volumes:
- ./data/openldap/database:/var/lib/ldap
- ./data/openldap/config:/etc/ldap/slapd.d
- ./config/init.ldif:/container/service/slapd/assets/config/bootstrap/ldif/custom/init.ldif
ports:
- 388:389
networks:
- go-ldap-admin
phpldapadmin:
image: registry.cn-hangzhou.aliyuncs.com/ali_eryajf/phpldapadmin:0.9.0
container_name: go-ldap-admin-phpldapadmin
hostname: go-ldap-admin-phpldapadmin
restart: always
environment:
TZ: Asia/Shanghai # 设置容器时区与宿主机保持一致
PHPLDAPADMIN_HTTPS: "false" # 是否使用https
PHPLDAPADMIN_LDAP_HOSTS: go-ldap-admin-openldap # 指定LDAP容器名称
ports:
- 8091:80
volumes:
- ./data/phpadmin:/var/www/phpldapadmin
depends_on:
- openldap
其实这个yml文件完整的配置不止这些,他是个go-ldap-admin项目,里面包含了go语言版本的可视化控制台和php版本的(项目地址https://gitee.com/eryajf-world/go-ldap-admin,有兴趣的同学可以自己研究一下),go版本的功能主要是用于将ldap用户同步到mysql存储,由于修改项目默认的域名后没法正常使用,我就不使用他了,使用php版本的控制台。 yml配置文件配置好后启动openldap,启动后使用浏览器访问:
创建组和用户
如上截图,我已经创建过名称为Group的ou,底下有个develop的组,再创建名称为people的ou,底下有admin,apaas,chench三个用户,这三个用户都是属于上面develop组的成员:
配置jumpserver集成ldap认证
填写ldap服务器地址端口号,绑定DN(ldap管理员账号),用户ou(用户所在的组名称) 用户过滤器(搜索用户的关键字段),用户属性映射(jumpserver堡垒机的用户和ldap的用户映射关系) 点测试连接 点测试登陆 使用ldap用户登陆 成功登陆,原来旧的用户的信息也成功继承
gitlab集成ldap认证
配置gitlab.rb,因为我是docker compose安装,所以在yml文件添加相关环境变量就行
gitlab_rails['ldap_servers'] = {
'main' => {
'label' => 'LDAP',
'host' => '10.10.10.41',
'port' => 388,
'uid' => 'cn',
'bind_dn' => 'cn=admin,dc=china-xxx,DC=com',
'password' => '123456',
'encryption' => 'plain',
'verify_certificates' => false,
'timeout' => 10,
'active_directory' => false,
'user_filter' => '',
'base' => 'ou=people,dc=china-xxx,dc=com',
'lowercase_usernames' => 'false',
'retry_empty_result_with_codes' => [80],
'allow_username_or_email_login' => false,
'block_auto_created_users' => false
}
}
然后重启容器,如果你是直接在容器里面修改gitlab.rb配置文件则重新加载配置 gitlab-ctl reconfigure 重新启动应用 gitlab-ctl restart 验证是否可以登陆 在经过一段时间的启动后,浏览器界面终于出现ldap登陆的选项 已成功登陆,并且之前旧账号的相关配置还在
配置jenkins集成ldap认证
系统管理--全局安全配置--安全域--ldap 验证配置 使用ldap登陆jenkins 登陆了,但是没有权限,因为之前没有创建过这个用户,用了Role- Based Strategy策略,ldap里面新建一个跟jenkins内置账号同名的用户admin,再次登陆就有权限了
配置jira集成ldap认证
设置--用户管理--用户目录--添加目录-LDAP 高级设置 用户模式设置 组模式设置 成员 模式设置 快速测试 测试并保存 登陆用户登陆 说明: jira内置admin用户和ldap用户会存在冲突,如果ldap用户创建了admin用户,则admin为普通用户,不是管理员。
mindoc集成 ldap认证
修改app.conf文件添加ldap相关配置 验证用户登陆 原内置admin账号不可登陆,如果确实需要切换ldap需要解决这些问题
标签:jira,mindoc,admin,gitlab,用户,openldap,登陆,ldap,go From: https://blog.51cto.com/riverxyz/7470804