LDAP打通Gitlab认证

前言: 文章中适用读者了解或者掌握 docker、Ldap、phpLdapAdmin、Gitlab

介绍

LDAP是啥:LDAP一般指轻型目录访问协议。轻型目录访问协议(英文:Lightweight Directory Access Protocol,缩写:LDAP,/ˈɛldæp/)。

Gitlab是啥:GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。

要做成啥: 用户都存储在LDAP上,gitlab通过使用ldap方式登陆。解决了不同系统,各自独立用户的问题,方便了用户统一在LDAP上进行管理

搭建

操作系统无需多言,只要有docker、docker-compose环境,即可部署。
一台linux机器,部署服务
一个笔记本,访问浏览器界面

LDAP搭建

对LDAP进行部署

root@demo0323:~# mkdir ldap/
root@demo0323:~/ldap# vim docker-compose.yaml
version: '2'
services:ldapui:image: osixia/phpldapadminenvironment:PHPLDAPADMIN_LDAP_HOSTS: ldap-hoststdin_open: truetty: truelinks:- ldap:ldap-hostports:- 7443:443/tcpldap:image: osixia/openldapenvironment:LDAP_ADMIN_PASSWORD: adminLDAP_DOMAIN: softc.comLDAP_ORGANISATION: RancherLDAP_TLS: 'false'LDAP_READONLY_USER: 'true'LDAP_READONLY_USER_USERNAME: rancherLDAP_READONLY_USER_PASSWORD: rancherstdin_open: truetty: trueports:- 389:389/tcp- 636:636/tcp
root@demo0323:~/ldap# docker-compose up -d

等待几分钟,拉取镜像创建容器后,就可以使用浏览器访问了

可通过如下信息,访问LDAP可视化管理页面

访问地址: https://192.168.120.217:7443/

访问账号:cn=admin,dc=softc,dc=com

访问密码: admin

LDAP配置

台子搭建好了,总得手工配置几个用户, 之后用来登陆Gitlab使用。

一般推荐使用LDIF直接导入,单从学习角度来看,还是推荐用界面操作,界面操作如下

1、创建组

用户必须在某个组(Generic: Posix Group)下,所有先整一个组出来,操作如下截图

新建子实体

选择组

录入组名称,这里任意写了一个[group01],点击创建对象

点击提交

2、创建用户

在界面如下操作即可创建用户。

如果有创建多个用户的需求,下面的操作可以重复做几次,录入的用户信息不同即可。

  • 创建子实体
  • 创建用户
  • 录入信息
  • 提交

上面用户添加好了,额外还有个属性“email”是必须要的,不然后面有坑

3、验证用户登陆

提前获得用户DN( Distinguished Name): cn=ab,dc=softc,dc=com

我设置的密码是: 123456

退出系统,在用新建用户登陆,登陆成功

到此,我们LDAP部署和配置完成,有几个关键信息记录下来,再后续配置会使用到

LDAP地址:192.168.120.217 (部署ldap容器的主机地址)

LDAP端口:389 (上面部署时候映射出的端口)

LDAP管理用户: cn=admin,dc=softc,dc=com

LDAP管理用户密码: admin

LDAP自建用户: cn=ab,dc=softc,dc=com

LDAP自建用户密码: 123456

Gitlab搭建

搭建前,在搭建的linux机器添加hosts文件记录

访问界面的window机器,也同样添加hosts文件记录

192.168.120.217 gitlab.example.com

搭建测试使用http

root@demo0323:~# mkdir gitlab
root@demo0323:~/gitlab# vim docker-compose.yml
web:image: 'gitlab/gitlab-ee:latest'restart: alwayshostname: 'gitlab.example.com'ports:- '1080:80'- '10443:443'- '1022:22'volumes:- '/srv/gitlab/config:/etc/gitlab'- '/srv/gitlab/logs:/var/log/gitlab'- '/srv/gitlab/data:/var/opt/gitlab'
root@demo0323:~/gitlab# docker-compose up -d

等待一会,就可以界面访问了

http://gitlab.example.com:1080/users/sign_in

第一次访问要设置八位数以上密码,之后root用户即可登陆

Gitlab支持LDAP配置

先关闭服务

root@demo0323:~/gitlab# docker-compose down

再修改gitlab.rb文件

#文件部署时候通过volume挂载出来了
root@demo0323:~# vim /srv/gitlab/config/gitlab.rb

取消掉文件中注释行 gitlab_rails[‘ldap_enabled’],并修改成true

gitlab_rails['ldap_enabled'] = true

文件中添加如下内容:

gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'main:label: 'LDAP' #界面显示名称host: '192.168.120.217' #ldap部署的机器IPport: 389 #ldap部署的端口uid: 'uid' #这里选择uidbind_dn: 'cn=admin,dc=softc,dc=com' #LDAP管理用户password: 'admin' #LDAP管理用户密码encryption: 'plain'active_directory: trueallow_username_or_email_login: truebase: 'dc=softc,dc=com' #基准DNuser_filter: ''
EOS

上述参数,更多含义请参考官方文档:

https://docs.gitlab.com/ee/administration/logs.html#applicationlog

重新开启服务

root@demo0323:~/gitlab# docker-compose up -d

登陆验证

服务启动成功后,我们打开浏览器访问:http://gitlab.example.com:1080/users/sign_in,有了一个新的登陆方式

点击LDAP登陆,输入自建用户CN:[ab] 和密码[123456]

登陆成功,可正常使用Gitlab

上面是采用了 ab 来登陆的, 之前咱们也单独给ab 用户添加了一个邮箱【ab@qq.com】,同样也可以采用邮箱进行登陆

End .

过程总结

  • 搭建好以后,登陆不成功怎么办

登陆不成功有很多原因,要一步步排查问题,定位问题原因。
主要流程搭建LDAP,搭建Gitlab,配置Gitlab的LDAP,完成并验证

  • Gitlab登陆失败

最可能是配置Gitlab的LDAP没有配置成功,可以配置完成gitlab.rb文件后,进入容器验证

root@demo0323:~/gitlab# docker ps -a | grep gitlab
1a48e9fcc899 gitlab/gitlab-ee:latest “/assets/wrapper” 16 hours ago Up 16 hours (healthy) 0.0.0.0:1022->22/tcp, 0.0.0.0:1080->80/tcp, 0.0.0.0:10443->443/tcp gitlab_web_1

我这里容器ID是:1a48e9fcc899,进入容器

root@demo0323:~/gitlab# docker exec -it 1a48e9fcc899 bash
root@gitlab:/#

修改你的gitlab.rb文件,这个文件其实就是容器外主机中【/srv/gitlab/config/gitlab.rb】文件

root@gitlab:/# vim /etc/gitlab/gitlab.rb

修改完成gitlab.rb文件后,容器内重启服务

root@gitlab:/# gitlab-ctl reconfigure

使用rake验证ldap配置,如有显示【ab】用户,这此环节成功

root@gitlab:/# gitlab-rake gitlab:ldap:check
Checking LDAP …

LDAP: … Server: ldapmain
LDAP authentication… Success
LDAP users with access to your GitLab server (only showing the first 100 results)
DN: cn=ab,dc=softc,dc=com uid: ab
DN: cn=dd,dc=softc,dc=com uid: dd
DN: cn=ff,dc=softc,dc=com uid: ff
DN: cn=ee,cn=pg01,ou=ou01,dc=softc,dc=com uid: ee

Checking LDAP … Finished

  • 搭建总结

搭建过程并不顺利,主要卡在配置Gitlab的LDAP上, 网上文章虽然很多,但是前面的LDAP这块都给省略了。 (LDAP的结构体系可以去B站上直接搜到专题视频)

LADP打通Gitlab(全指南)相关推荐

  1. 京东对话中国农民丰收节交易会 供应链下沉打通产销全链

    京东对话中国农民丰收节交易会 供应链下沉打通产销全链 新闻中国采编网 中国新闻采编网 谋定研究中国智库网 经信研究 国研智库 国情讲坛 哲商对话 万权采编:"现行标准下9899万农村贫困人口 ...

  2. 【秋招】秋招最全指南,如何准备,如何投递,以及面试攻略大全分享!

    [秋招]秋招最全指南,如何准备,如何投递,以及面试攻略大全分享! 大家好,首先想麻烦大家能够一键三连,你们的支持是我做视频的最大动力.今天继续给大家分享秋招攻略.今年的秋招形势比较严峻,而大家也对怎么 ...

  3. 安卓手机备份_手机备份数据迁移全网最全指南(必看)

    大家有没有遇到过这两种情况: 当你喜滋滋地买了一台新手机,新手机空空如也,不知道怎么把旧手机里的资料转移到新手机,尤其是安卓机换了苹果更头痛,软件.照片.通讯录.聊天记录......开心不过三秒! 回 ...

  4. 从DeepNet到HRNet,这有一份深度学习“人体姿势估计”全指南

    大数据文摘出品 来源:blog.nanonets 作者:栾红叶.熊琰.周家乐.钱天培 从DeepNet到HRNet,这有一份深度学习"人体姿势估计"全指南 几十年来,人体姿态估计( ...

  5. 安卓工程师跳槽面试全指南

    课程介绍 年关将至,不少人出于职业规划的考虑,会开始出现跳槽的想法.跳槽念头一旦产生,所有的咨询都不过是为了"说服自己"而已.于是,我们要关注的重点就变成"怎么跳得更好? ...

  6. 23考研报名全指南 时间点|报名成功等常见问题

    23考研报名全指南!时间点|报名成功等常见问题! 2023年全国研究生招生考试将于10月5日至25日进行网上报名.考研预报名已于9月24日正式启动.有机构预测,2023年考研人数或将突出500万大关, ...

  7. API测试之Postman使用全指南(一)——如何创建GET/POST请求

    第1篇文章API测试之Postman使用全指南(一)讲述了如何创建GET/POST请求 第2篇文章API测试之Postman使用全指南(二)讲述了如何将请求参数化 第3篇文章API测试之Postman ...

  8. “三板斧”式文化价值体系互助协作,打通企业全流程管理模式

    在职场上是有三种能力层级的,分别是执行层,管理层和决策层.如果你有一个比自己能力强的下属,那么恭喜你.因为有这样的人在,有些任务才能更好的执行下去. 承认下属比自己强,并不是件丢人的事,因为发现和培养 ...

  9. Git,Git Flow,GitLab使用指南

    高效利用一次蹲坑时间,看看如何使用Git Flow进行高效开发,什么才是Git提交的正确姿势,怎样使用GitLab进行Code Review: 使用Git Flow高效开发: Git提交正确姿势,Co ...

最新文章

  1. 勇攀监控高峰-EMonitor之根因分析 背景
  2. 荣耀20发布会花式官宣:4!-3!+2!伦敦见
  3. 【Java从0到架构师】交错的日志系统、SpringBoot 集成日志框架
  4. java Byte Stream and Character Stream的不同
  5. 吾讲救活公司的办法,当事人还在玩手机,应该怎么办
  6. python 微信扫码登录_python实现微信第三方网站扫码登录(Django)
  7. 中文同义词近义词库 vs 词向量
  8. 器件选型电源篇-LDO器件选型
  9. 漂亮得不像触控板,全新 Magic Trackpad 2
  10. kali网络扫描、嗅探工具Nmap
  11. C# 将raw格式的二进制灰度图像转为正常位图格式
  12. 只有360浏览器能打开别的都打不开
  13. C语言程序static改错题,2014计算机二级C语言程序设计全真测试题
  14. Python 简易实现 quoted-printable 编码
  15. 我们什么时候需要函数隐藏
  16. sparklines_Sparklines入门200年来功能强大的数据可视化形式
  17. three.js中坐标系转换以及camera的position、lookAt与up属性理解
  18. FreeMarker教程---Freemarker操作字符串
  19. 超详细!图论最短路算法与极简c++代码(配题目)
  20. springboot大学生网络教学平台的设计与实现毕业设计源码281819

热门文章

  1. [转贴]一个真实的故事 使我这个曾经邪恶的心为之颤栗
  2. 用python3发短信_Python3调用阿里短信api发送短信
  3. xp访问不了win10计算机,xp系统无法访问win10共享文件怎么办?xp系统和win10局域网共享设置教程...
  4. laravel之homestead安装教程
  5. matlab中ss函数_MATLAB中的S-Function的用法(C语言)
  6. 均线颜色怎么区分_均线,怎么看哪根是,5,10,60,日均线,分别用什么颜色代表,...
  7. 基于WIndow的MailServer和Foxmail搭建本地邮件服务器及实现本地邮箱账号收发邮件
  8. Java程序员必备奇淫巧技篇(上)
  9. 如何通过大数据获客系统实现“获客自由”?
  10. 使用easyswoole进行开发web网站