gitlab 接入 openldap、AD
===============================================
20171009_第2次修改 ccb_warlock
===============================================
今天调试gitlab接入AD域控,找了很多资料才解决了问题,在此处做记录。
gitlab有自己的用户机制,但其也兼容ldap的用户验证机制(本质上openldap和AD域控都是基于ldap机制),由于公司内部的统一账户机制正在调整,故需要将gitlab进行配置,试验下来社区版的gitlab经过修改配置文件后可以使用openldap和微软ad域控作为其用户机制。
版本:gitlab 社区版 9.3.4(汉化)
gitlab目录:/etc/gitlab
gitlab配置文件:/etc/gitlab/gitlab.rb(社区版初始该文件内容为空)
一、接入openldap
1.1 修改配置文件gitlab.rb
在gitlab.rb文件中添加下面配置,其中:
1.host,是搭建的openldap的ip,根据实际情况修改;
2.uid,可以配置cn,也可以配置uid,都能识别(具体为什么没深入研究);
3.bind_dn,openldap的管理员账号,根据实际情况修改;
4.password,openldap的管理员,根据实际情况修改;
5.active_directory,似乎是针对连接是否是ad域控的标示,因为这部分是openldap的配置,故为false;
6.allow_username_or_email_login,用户登录是否用户名和邮箱都可以,方便用户故配置true;
7.base,用户列表所在的目录,因为新增的用户都在openldap的People下,故这么配置,根据实际情况修改;
# 指明服务的地址
external_url = 'http://localhost' # 开启ldap
gitlab_rails['ldap_enabled'] = true
gitlab_rails['ldap_servers'] = YAML.load <<-'EOS' ###! **remember to close this block with 'EOS' below**
main: # 'main' is the GitLab 'provider ID' of this LDAP server
label: 'LDAP'
host: '192.168.6.4'
port: 389
uid: 'uid'
method: 'plain' # "tls" or "ssl" or "plain"
bind_dn: 'cn=Manager,dc=abc,dc=cn'
password: '123456'
active_directory: false
allow_username_or_email_login: true
block_auto_created_users: false
base: 'ou=People,dc=abc,dc=cn'
user_filter: ''
EOS
1.2 重新加载新配置
# gitlab-ctl reconfigure
运行后最后一行为“gitlab Reconfigured!”才说明是加载新配置成功,否则就是根据报错信息找错误。
1.3 查看是否能正常获取用户列表
# gitlab-rake gitlab:ldap:check
正常连接的情况下执行之后能看到用户的列表
1.4 重启gitlab
# gitlab-ctl restart

重启成功后,gitlab的界面就会变成下面这样。

openldap的用户通过“LDAP”页进入,管理员root通过“标准”页进入。
二、接入AD
2.1 修改配置文件gitlab.rb
在gitlab.rb文件中添加下面配置,其中:
1.host,是搭建的微软域服务器的ip,根据实际情况修改;
2.uid,必须配sAMAccountName才能识别;
3.bind_dn,域服务器的管理员账号,根据实际情况修改;
4.password,域服务器的管理员,根据实际情况修改;
5.active_directory,似乎是针对连接是否是ad域控的标示,因为这部分是域服务器的配置,故为true;
6.allow_username_or_email_login,用户登录是否用户名和邮箱都可以,方便用户故配置true;
7.base,用户列表所在的目录,因为新增的用户都在People下(试验了用户放在User时gitlab检测不到用户,故新建了一个目录People,并将新建的用户移入了该目录下),故这么配置,根据实际情况修改;
external_url = 'http://localhost' gitlab_rails['ldap_enabled'] = true
gitlab_rails['ldap_servers'] = YAML.load <<-'EOS' ###! **remember to close this block with 'EOS' below**
main: # 'main' is the GitLab 'provider ID' of this LDAP server
label: 'LDAP'
host: '192.168.6.1'
port: 389
uid: 'sAMAccountName'
method: 'plain' # "tls" or "ssl" or "plain"
bind_dn: 'cn=Administrator,cn=users,dc=myad,dc=cn'
password: '123456'
active_directory: true
allow_username_or_email_login: true
block_auto_created_users: false
base: 'ou=People,dc=myad,dc=cn'
user_filter: ''
EOS
2.2 重新加载新配置
# gitlab-ctl reconfigure
运行后最后一行为“gitlab Reconfigured!”才说明是加载新配置成功,否则就是根据报错信息找错误。
2.3 查看是否能正常获取用户列表
# gitlab-rake gitlab:ldap:check
正常连接的情况下执行之后能看到用户的列表
2.4 重启gitlab
# gitlab-ctl restart

重启成功后,gitlab的界面就会变成下面这样。

openldap的用户通过“LDAP”页进入,管理员root通过“标准”页进入。
2.5 确认该用户不处于特殊状态
1.不处于“禁用账户”的状态;
2.不处于“需要首次登录修改密码”的状态;
(处于上面任意一种状态的账户在登录gitlab时都会报“Cloud not authenticate you from Ldapmain because "Invalid creadentials".”)
参考资料:
1.https://my.oschina.net/firxiao/blog/357559
2.https://ssorc.tw/6358
3.https://docs.gitlab.com/ee/administration/auth/ldap.html
gitlab 接入 openldap、AD的更多相关文章
- LDAP落地实战(三):GitLab集成OpenLDAP认证
上一篇文章介绍了svn集成OpenLDAP认证,版本控制除了svn外,git目前也被越来越多的开发者所喜爱,本文将介绍GitLab如何集成openldap实现账号认证 GitLab集成OpenLDAP ...
- kubernetes实战(十四):k8s持久化部署gitlab集成openLDAP登录
1.基本概念 使用k8s安装gitlab-ce,采用GlusterFS实现持久化(注意PG使用的是NFS存储,使用动态存储重启postgresql的pod后无法成功启动pg,待解决),并集成了open ...
- gitlab 集成openldap
Setting up LDAP sign-in If you have an LDAP directory service such as Active Directory, you can conf ...
- Gitlab环境快速部署(RPM包方式安装)
之前梳理了一篇Gitlab的安装CI持续集成系统环境---部署Gitlab环境完整记录,但是这是bitnami一键安装的,版本比较老.下面介绍使用rpm包安装Gitlab,下载地址:https://m ...
- LDAP落地实战(四):Jenkins集成OpenLDAP认证
前几篇分文章分别介绍了OpenLDAP的部署管理和维护以及svn.git的接入,今天我们再下一城接入jenkins. 前情提要:LDAP系列文章 LDAP落地实战(一):OpenLDAP部署及管理维护 ...
- LDAP落地实战(一):OpenLDAP部署及管理维护
公司内部会有许多第三方系统或服务,例如Svn,Git,VPN,Jira,Jenkins等等,每个系统都需要维护一份账号密码以支持用户认证,当然公司也会有许多的主机或服务器,需要开放登录权限给用户登录使 ...
- ldap 用户组和用户(4)
Posixgroup用户组属性 默认情况下openldap的用户组属性是Posixgroup,Posixgroup用户组属性和用户没有实际的对应关系.如果我们一定要把Posixgroup和user对应 ...
- jenkins部署java项目
#########################################jenkins部署#################################3 一.jenkins是什么? J ...
- OpenLdap 对接内部系统(Gitlab+Wiki+Jumpserver+Openvpn)配置
LDAP 全称轻量级目录访问协议(英文:Lightweight Directory Access Protocol),是一个运行在 TCP/IP 上的目录访问协议.目录是一个特殊的数据库,它的数据经常 ...
随机推荐
- [C#]使用GroupJoin将两个关联的集合进行分组
本文为原创文章.源代码为原创代码,如转载/复制,请在网页/代码处明显位置标明原文名称.作者及网址,谢谢! 本文使用的开发环境是VS2017及dotNet4.0,写此随笔的目的是给自己及新开发人员作为参 ...
- php代码中的细节问题
本次主要谈及工作中关于注销功能中的路径设置及session的清除问题之前的调试一直忽略了session的功能,以至于每次使用__ROOT__/index.php/home/Student/logout ...
- hdu 3829 Cat VS Dog 二分匹配 最大独立点集
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3829 题目大意: 给定N个猫,M个狗,P个小朋友,每个小朋友都有喜欢或者不喜欢的某猫或者某狗 管理员从 ...
- 日志模块---logging
作用 在程序的运行过程中,会遇到很多需要打印的中间信息,通过使用logging模块可以详细的输出信息,不同于print()函数的单一功能. 应用场景 对于软件程序的运行过程中输出中间信息,如账单信息, ...
- 关于Switch case条件语句中无break的用法
关于Switch case条件语句的另类用法 今天在拜读一位前辈的程序时,遇到了这样一段程序: /***************************/ switch(operation ...
- Python的集合
1. Python的集合 1.1 集合的定义 在Python中, 集合set是基本数据类型的一种集合类型,它有可变集合(set())和不可变集合(frozenset)两种.Python中的集合set类 ...
- 用shell制作IP脚本
vim ip.sh #!/bin/bashread -p "eth:" eread -p "ip:" ip1read -p "netmask:&qu ...
- WINDOWS java 不能正常卸载 问题, (其他系统问题 也可以试试)
1.JAVA 原安装包无法卸载 不知道 有没有通知 碰到过这种情况的 自己碰到过3次这种情况了, 卸载不掉, 在网上 找了N多中 方法, 注册表什么的都被翻烂了, 单还是没用,其中有一次还把 ...
- C#中级-从零打造基于Socket在线升级模块
一.前言 前段时间一直在折腾基于Socket的产品在线升级模块.之前我曾写过基于.Net Remoting的.基于WCF的在线升级功能,由于并发量较小及当时代码经验的不足一直没有实际应用. ...
- Java 并发专题 : Executor具体介绍 打造基于Executor的Webserver
转载标明出处:http://blog.csdn.net/lmj623565791/article/details/26938985 继续并发,貌似并发的文章非常少有人看啊~哈~ 今天准备具体介绍jav ...