===============================================

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的更多相关文章

  1. LDAP落地实战(三):GitLab集成OpenLDAP认证

    上一篇文章介绍了svn集成OpenLDAP认证,版本控制除了svn外,git目前也被越来越多的开发者所喜爱,本文将介绍GitLab如何集成openldap实现账号认证 GitLab集成OpenLDAP ...

  2. kubernetes实战(十四):k8s持久化部署gitlab集成openLDAP登录

    1.基本概念 使用k8s安装gitlab-ce,采用GlusterFS实现持久化(注意PG使用的是NFS存储,使用动态存储重启postgresql的pod后无法成功启动pg,待解决),并集成了open ...

  3. gitlab 集成openldap

    Setting up LDAP sign-in If you have an LDAP directory service such as Active Directory, you can conf ...

  4. Gitlab环境快速部署(RPM包方式安装)

    之前梳理了一篇Gitlab的安装CI持续集成系统环境---部署Gitlab环境完整记录,但是这是bitnami一键安装的,版本比较老.下面介绍使用rpm包安装Gitlab,下载地址:https://m ...

  5. LDAP落地实战(四):Jenkins集成OpenLDAP认证

    前几篇分文章分别介绍了OpenLDAP的部署管理和维护以及svn.git的接入,今天我们再下一城接入jenkins. 前情提要:LDAP系列文章 LDAP落地实战(一):OpenLDAP部署及管理维护 ...

  6. LDAP落地实战(一):OpenLDAP部署及管理维护

    公司内部会有许多第三方系统或服务,例如Svn,Git,VPN,Jira,Jenkins等等,每个系统都需要维护一份账号密码以支持用户认证,当然公司也会有许多的主机或服务器,需要开放登录权限给用户登录使 ...

  7. ldap 用户组和用户(4)

    Posixgroup用户组属性 默认情况下openldap的用户组属性是Posixgroup,Posixgroup用户组属性和用户没有实际的对应关系.如果我们一定要把Posixgroup和user对应 ...

  8. jenkins部署java项目

    #########################################jenkins部署#################################3 一.jenkins是什么? J ...

  9. OpenLdap 对接内部系统(Gitlab+Wiki+Jumpserver+Openvpn)配置

    LDAP 全称轻量级目录访问协议(英文:Lightweight Directory Access Protocol),是一个运行在 TCP/IP 上的目录访问协议.目录是一个特殊的数据库,它的数据经常 ...

随机推荐

  1. caffe+opencv3.3dnn模块 完成手写数字图片识别

    最近由于项目需要用到caffe,学习了下caffe的用法,在使用过程中也是遇到了些问题,通过上网搜索和问老师的方法解决了,在此记录下过程,方便以后查看,也希望能为和我一样的新手们提供帮助. 顺带附上老 ...

  2. Android Weekly Notes Issue #286

    December 3rd, 2017 Android Weekly Issue #286 本期文章包含如何通过踩坑来学习Kotlin,以及利用Kotlin的data class做MVVM状态保存,还包 ...

  3. Python 串口通信操作

    下载  pyserial包 https://pypi.python.org/packages/source/p/pyserial/pyserial-2.7.tar.gz#md5=794506184df ...

  4. Java反射机制(创建Class对象的三种方式)

    1:SUN提供的反射机制的类: java.lang.Class<T> java.lang.reflect.Constructor<T> java.lang.reflect.Fi ...

  5. android应用集成facebook登录

      之前都是做国内的应用开发,没有用过国外的三方登录,比如谷歌登录.facebok登录,最近参与了一个海外的支付相关的项目,调研了一下谷歌登录和facebook登录,其实调研之后觉得也是很简单的,尤其 ...

  6. JavaScript tips ——搞定闰年

    前言 处理时间时,常常要考虑用户的输入是否合法,其中一个很典型的场景就是平闰年的判断,网上其实有很多类似的算法,但是其实不必那么麻烦,下面我讲讲的我的思路. 规则 公元年数可被4整除为闰年,但是整百( ...

  7. google开源服务器apprtc的搭建

    本文参考网帖: http://www.jianshu.com/p/c55ecf5a3fcf http://io.diveinedu.com/2015/02/05/%E7%AC%AC%E5%85%AD% ...

  8. Linux多线程编程——线程的创建与退出

    POSIX线程标准:该标准定义了创建和操纵线程的一整套API.在类Unix操作系统(Unix.Linux.Mac OS X等)中,都使用Pthreads作为操作系统的线程.Windows操作系统也有其 ...

  9. Nginx平台构架

    深入理解Nginx模块发开与架构解析读书笔记. nginx在启动后,在unix系统中会以daemon的方式(能够手动关闭 nginx.conf daemon off)在后台执行,后台进程包括一个mas ...

  10. 【ASP.NET】DataTable序列化

    问题描述 主要解决DataTable数据转化为JSON,从Controller传递数据给View的问题. 1   内容区 提供如下方法,仅供参考 public static class ObjectE ...