简述

Gitlab支持集成LDAP用户认证系统。兼容包括Microsoft Active Directory, Apple Open Directory, Open LDAP, 与389 Server等。 演示使
用的版本是 Gitlab CE 11.8.2社区版,LDAP用户认证服务使用的是Microsoft Active Directory。 EE企业版支持更高级的功能,包括用
户组同步,同时支持多LDAP服务器等, 有需要可以安装EE版。

测试LDAP查询参数与查询条件

在修改Gitlab配置之前先测试一下是否可以正常从域控上获取用户信息。我这里设置了一个过滤条件,只获取LX_SE,LX_EE组内的用户。

修改配置文件

修改Gitlab的YAML格式配置模板 /etc/gitlab/gitlab.rb ,在其中添加以下内容。

gitlab_rails['ldap_enabled'] = true
# gitlab_rails['prevent_ldap_sign_in'] = 

###! **remember to close this block with 'EOS' below**
 gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
   main: # 'main' is the GitLab 'provider ID' of this LDAP server
     label: 'AD 认证'
     host: '192.168.101.90'
     port: 389
     uid: 'sAMAccountName'
     bind_dn: 'CN=Administrator,CN=Users,DC=LX,DC=com,DC=cn' #认证用户
     password: 'password' #认证密码
     encryption: 'plain' # "start_tls" or "simple_tls" or "plain"
     verify_certificates: true
#     smartcard_auth: false
     active_directory: true
#     allow_username_or_email_login: false
#     lowercase_usernames: false
     block_auto_created_users: false
     base: 'DC=LX,DC=com,DC=cn'
     user_filter: '(&(objectcategory=user)(|(memberOf=CN=LX_SE,CN=Users,DC=LX,DC=com,DC=cn)(memberOf=CN=LX_SE,CN=Users,DC=LX,DC=com,DC=cn)))'

参数详解:

label: AD认证窗口上显示的标题,仅起提示作用,请根据需要填写,配置成功后会出现在登录页面。
host: 用于AD认证的域控服务器。
bind_dn: 与AD交互所使用的的用户账号,由于域控禁用了anonymousbind,所以需要建立一个用户来进行交互。
encryption: 密码加密方式,我这里使用的明文。
user_filter: 用户登录权限控制,格式为LDAP查询条件,我这里是按用户组进行控制。

重新配置Gitlab

...
此处省略日志输出一万行
...
Running handlers:
Running handlers complete
Chef Client finished, 8/8/635 resources updated in 47 seconds
gitlab Reconfigured!

测试获取AD域用户列表

ldapsearch -h 192.168.101.90 -D administrator@LX.com.cn -w LANXIANG@LX0929 -b "DC=LX,DC=com,DC=cn" "(&(objectcategory=user)(|(memberOf=CN=LX_SE,CN=Users,DC=LX,DC=com,DC=cn)(memberOf=CN=LX_SE,CN=Users,DC=LX,DC=com,DC=cn)))" sAMAccountName
# extended LDIF
#
# LDAPv3
# base <DC=LX,DC=com,DC=cn> with scope subtree
# filter: (&(objectcategory=user)(|(memberOf=CN=LX_SE,CN=Users,DC=LX,DC=com,DC=cn)(memberOf=CN=LX_SE,CN=Users,DC=LX,DC=com,DC=cn)))
# requesting: sAMAccountName 
#

# \E5\AD\99\E9\B9\8F\E9\A3\9E, \E8\BD\AF\E4\BB\B6\E7\AE\A1\E7\90\86\E9\83\A8, \
 E8\BD\AF\E4\BB\B6\E5\B7\A5\E7\A8\8B\E4\B8\AD\E5\BF\83, \E6\8A\80\E6\9C\AF\E4\B
 D\93\E7\B3\BB, \E5\8C\97\E6\96\B9\E5\BE\AE\E7\94\B5\E5\AD\90, \E5\8D\8A\E5\AF\
 BC\E4\BD\93\E4\BA\8B\E4\B8\9A\E7\BE\A4, \E5\8C\97\E6\96\B9\E5\8D\8E\E5\88\9B\E
 9\9B\86\E5\9B\A2, LX.com.cn
dn:: Q0495a2Z6bmP6aOeLE9VPei9r+S7tueuoeeQhumDqCxPVT3ova/ku7blt6XnqIvkuK3lv4MsT
 1U95oqA5pyv5L2T57O7LE9VPeWMl+aWueW+rueUteWtkCxPVT3ljYrlr7zkvZPkuovkuJrnvqQsT1
 U95YyX5pa55Y2O5Yib6ZuG5ZuiLERDPW5tYyxEQz1jb20sREM9Y24=
sAMAccountName: waner

# \E9\A9\AC\E5\BF\97\E5\87\AF, \E8\BD\AF\E4\BB\B6\E7\AE\A1\E7\90\86\E9\83\A8, \
 E8\BD\AF\E4\BB\B6\E5\B7\A5\E7\A8\8B\E4\B8\AD\E5\BF\83, \E6\8A\80\E6\9C\AF\E4\B
 D\93\E7\B3\BB, \E5\8C\97\E6\96\B9\E5\BE\AE\E7\94\B5\E5\AD\90, \E5\8D\8A\E5\AF\
 BC\E4\BD\93\E4\BA\8B\E4\B8\9A\E7\BE\A4, \E5\8C\97\E6\96\B9\E5\8D\8E\E5\88\9B\E
 9\9B\86\E5\9B\A2, LX.com.cn
dn:: Q0496ams5b+X5YevLE9VPei9r+S7tueuoeeQhumDqCxPVT3ova/ku7blt6XnqIvkuK3lv4MsT
 1U95oqA5pyv5L2T57O7LE9VPeWMl+aWueW+rueUteWtkCxPVT3ljYrlr7zkvZPkuovkuJrnvqQsT1
 U95YyX5pa55Y2O5Yib6ZuG5ZuiLERDPW5tYyxEQz1jb20sREM9Y24=
sAMAccountName: lisi

# \E6\A2\81\E5\B0\8F\E7\A5\8E, \E8\BD\AF\E4\BB\B6\E7\AE\A1\E7\90\86\E9\83\A8, \
 E8\BD\AF\E4\BB\B6\E5\B7\A5\E7\A8\8B\E4\B8\AD\E5\BF\83, \E6\8A\80\E6\9C\AF\E4\B
 D\93\E7\B3\BB, \E5\8C\97\E6\96\B9\E5\BE\AE\E7\94\B5\E5\AD\90, \E5\8D\8A\E5\AF\
 BC\E4\BD\93\E4\BA\8B\E4\B8\9A\E7\BE\A4, \E5\8C\97\E6\96\B9\E5\8D\8E\E5\88\9B\E
 9\9B\86\E5\9B\A2, LX.com.cn
dn:: Q0495qKB5bCP56WOLE9VPei9r+S7tueuoeeQhumDqCxPVT3ova/ku7blt6XnqIvkuK3lv4MsT
 1U95oqA5pyv5L2T57O7LE9VPeWMl+aWueW+rueUteWtkCxPVT3ljYrlr7zkvZPkuovkuJrnvqQsT1
 U95YyX5pa55Y2O5Yib6ZuG5ZuiLERDPW5tYyxEQz1jb20sREM9Y24=
sAMAccountName: zhangsan

# search result
search: 2
result: 0 Success

# numResponses: 4
# numEntries: 3
观察输出是否包含域用户账号。

重新启动Gitlab

gitlab-ctl restart
ok: run: alertmanager: (pid 28490) 1s
ok: run: gitaly: (pid 28502) 0s
ok: run: gitlab-monitor: (pid 28522) 1s
ok: run: gitlab-workhorse: (pid 28527) 0s
ok: run: logrotate: (pid 28538) 1s
ok: run: nginx: (pid 28548) 0s
ok: run: node-exporter: (pid 28556) 0s
ok: run: postgres-exporter: (pid 28560) 1s
ok: run: postgresql: (pid 28569) 0s
ok: run: prometheus: (pid 28577) 1s
ok: run: redis: (pid 28663) 0s
ok: run: redis-exporter: (pid 28689) 1s
ok: run: sidekiq: (pid 28703) 0s
ok: run: unico

登录Gitlab查看效果

Gitlab AD 集成
    





            
Gitlab AD 集成

简述

Gitlab支持集成LDAP用户认证系统。兼容包括Microsoft Active Directory, Apple Open Directory, Open LDAP, 与389 Server等。 演示使
用的版本是 Gitlab CE 11.8.2社区版,LDAP用户认证服务使用的是Microsoft Active Directory。 EE企业版支持更高级的功能,包括用
户组同步,同时支持多LDAP服务器等, 有需要可以安装EE版。

测试LDAP查询参数与查询条件

在修改Gitlab配置之前先测试一下是否可以正常从域控上获取用户信息。我这里设置了一个过滤条件,只获取LX_SE,LX_EE组内的用户。

修改配置文件

修改Gitlab的YAML格式配置模板 /etc/gitlab/gitlab.rb ,在其中添加以下内容。

gitlab_rails['ldap_enabled'] = true
# gitlab_rails['prevent_ldap_sign_in'] = 

###! **remember to close this block with 'EOS' below**
 gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
   main: # 'main' is the GitLab 'provider ID' of this LDAP server
     label: 'AD 认证'
     host: '192.168.101.90'
     port: 389
     uid: 'sAMAccountName'
     bind_dn: 'CN=Administrator,CN=Users,DC=LX,DC=com,DC=cn' #认证用户
     password: 'password' #认证密码
     encryption: 'plain' # "start_tls" or "simple_tls" or "plain"
     verify_certificates: true
#     smartcard_auth: false
     active_directory: true
#     allow_username_or_email_login: false
#     lowercase_usernames: false
     block_auto_created_users: false
     base: 'DC=LX,DC=com,DC=cn'
     user_filter: '(&(objectcategory=user)(|(memberOf=CN=LX_SE,CN=Users,DC=LX,DC=com,DC=cn)(memberOf=CN=LX_SE,CN=Users,DC=LX,DC=com,DC=cn)))'

参数详解:

label: AD认证窗口上显示的标题,仅起提示作用,请根据需要填写,配置成功后会出现在登录页面。
host: 用于AD认证的域控服务器。
bind_dn: 与AD交互所使用的的用户账号,由于域控禁用了anonymousbind,所以需要建立一个用户来进行交互。
encryption: 密码加密方式,我这里使用的明文。
user_filter: 用户登录权限控制,格式为LDAP查询条件,我这里是按用户组进行控制。

重新配置Gitlab

...
此处省略日志输出一万行
...
Running handlers:
Running handlers complete
Chef Client finished, 8/8/635 resources updated in 47 seconds
gitlab Reconfigured!

测试获取AD域用户列表

ldapsearch -h 192.168.101.90 -D administrator@LX.com.cn -w LANXIANG@LX0929 -b "DC=LX,DC=com,DC=cn" "(&(objectcategory=user)(|(memberOf=CN=LX_SE,CN=Users,DC=LX,DC=com,DC=cn)(memberOf=CN=LX_SE,CN=Users,DC=LX,DC=com,DC=cn)))" sAMAccountName
# extended LDIF
#
# LDAPv3
# base <DC=LX,DC=com,DC=cn> with scope subtree
# filter: (&(objectcategory=user)(|(memberOf=CN=LX_SE,CN=Users,DC=LX,DC=com,DC=cn)(memberOf=CN=LX_SE,CN=Users,DC=LX,DC=com,DC=cn)))
# requesting: sAMAccountName 
#

# \E5\AD\99\E9\B9\8F\E9\A3\9E, \E8\BD\AF\E4\BB\B6\E7\AE\A1\E7\90\86\E9\83\A8, \
 E8\BD\AF\E4\BB\B6\E5\B7\A5\E7\A8\8B\E4\B8\AD\E5\BF\83, \E6\8A\80\E6\9C\AF\E4\B
 D\93\E7\B3\BB, \E5\8C\97\E6\96\B9\E5\BE\AE\E7\94\B5\E5\AD\90, \E5\8D\8A\E5\AF\
 BC\E4\BD\93\E4\BA\8B\E4\B8\9A\E7\BE\A4, \E5\8C\97\E6\96\B9\E5\8D\8E\E5\88\9B\E
 9\9B\86\E5\9B\A2, LX.com.cn
dn:: Q0495a2Z6bmP6aOeLE9VPei9r+S7tueuoeeQhumDqCxPVT3ova/ku7blt6XnqIvkuK3lv4MsT
 1U95oqA5pyv5L2T57O7LE9VPeWMl+aWueW+rueUteWtkCxPVT3ljYrlr7zkvZPkuovkuJrnvqQsT1
 U95YyX5pa55Y2O5Yib6ZuG5ZuiLERDPW5tYyxEQz1jb20sREM9Y24=
sAMAccountName: waner

# \E9\A9\AC\E5\BF\97\E5\87\AF, \E8\BD\AF\E4\BB\B6\E7\AE\A1\E7\90\86\E9\83\A8, \
 E8\BD\AF\E4\BB\B6\E5\B7\A5\E7\A8\8B\E4\B8\AD\E5\BF\83, \E6\8A\80\E6\9C\AF\E4\B
 D\93\E7\B3\BB, \E5\8C\97\E6\96\B9\E5\BE\AE\E7\94\B5\E5\AD\90, \E5\8D\8A\E5\AF\
 BC\E4\BD\93\E4\BA\8B\E4\B8\9A\E7\BE\A4, \E5\8C\97\E6\96\B9\E5\8D\8E\E5\88\9B\E
 9\9B\86\E5\9B\A2, LX.com.cn
dn:: Q0496ams5b+X5YevLE9VPei9r+S7tueuoeeQhumDqCxPVT3ova/ku7blt6XnqIvkuK3lv4MsT
 1U95oqA5pyv5L2T57O7LE9VPeWMl+aWueW+rueUteWtkCxPVT3ljYrlr7zkvZPkuovkuJrnvqQsT1
 U95YyX5pa55Y2O5Yib6ZuG5ZuiLERDPW5tYyxEQz1jb20sREM9Y24=
sAMAccountName: lisi

# \E6\A2\81\E5\B0\8F\E7\A5\8E, \E8\BD\AF\E4\BB\B6\E7\AE\A1\E7\90\86\E9\83\A8, \
 E8\BD\AF\E4\BB\B6\E5\B7\A5\E7\A8\8B\E4\B8\AD\E5\BF\83, \E6\8A\80\E6\9C\AF\E4\B
 D\93\E7\B3\BB, \E5\8C\97\E6\96\B9\E5\BE\AE\E7\94\B5\E5\AD\90, \E5\8D\8A\E5\AF\
 BC\E4\BD\93\E4\BA\8B\E4\B8\9A\E7\BE\A4, \E5\8C\97\E6\96\B9\E5\8D\8E\E5\88\9B\E
 9\9B\86\E5\9B\A2, LX.com.cn
dn:: Q0495qKB5bCP56WOLE9VPei9r+S7tueuoeeQhumDqCxPVT3ova/ku7blt6XnqIvkuK3lv4MsT
 1U95oqA5pyv5L2T57O7LE9VPeWMl+aWueW+rueUteWtkCxPVT3ljYrlr7zkvZPkuovkuJrnvqQsT1
 U95YyX5pa55Y2O5Yib6ZuG5ZuiLERDPW5tYyxEQz1jb20sREM9Y24=
sAMAccountName: zhangsan

# search result
search: 2
result: 0 Success

# numResponses: 4
# numEntries: 3
观察输出是否包含域用户账号。

重新启动Gitlab

gitlab-ctl restart
ok: run: alertmanager: (pid 28490) 1s
ok: run: gitaly: (pid 28502) 0s
ok: run: gitlab-monitor: (pid 28522) 1s
ok: run: gitlab-workhorse: (pid 28527) 0s
ok: run: logrotate: (pid 28538) 1s
ok: run: nginx: (pid 28548) 0s
ok: run: node-exporter: (pid 28556) 0s
ok: run: postgres-exporter: (pid 28560) 1s
ok: run: postgresql: (pid 28569) 0s
ok: run: prometheus: (pid 28577) 1s
ok: run: redis: (pid 28663) 0s
ok: run: redis-exporter: (pid 28689) 1s
ok: run: sidekiq: (pid 28703) 0s
ok: run: unico

登录Gitlab查看效果

Gitlab AD 集成
    





            
Gitlab AD 集成

相关文章:

  • 2021-07-12
  • 2022-01-04
  • 2022-12-23
  • 2022-01-30
  • 2021-08-26
  • 2021-09-10
  • 2022-12-23
猜你喜欢
  • 2021-04-26
  • 2022-12-23
  • 2021-08-23
  • 2020-02-10
  • 2021-10-06
  • 2021-06-18
相关资源
相似解决方案