1.前提
前提条件是已配置完成好OpenLDAP服务及相关设置,并创建好用户信息,具体可以查看此文章:安装OpenLDAP及添加相关用户和组
2.修改GitLab配置信息集成OpenLDAP
1.配置信息
# 修改GitLab的配置信息
vim /etc/gitlab/gitlab.rb
配置信息如下:
gitlab_rails['ldap_enabled'] = true
# gitlab_rails['prevent_ldap_sign_in'] = false
###! **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: 'My LDAP Server' # LDAP服务标签名,可以自行命名
host: '192.168.226.129' # server_ip or server_hostname
port: 389 # SSl一般是636
uid: 'cn' # 这里指的是登陆时用的是LDAP信息中的那个字段,一般来说,是类似于用户名、用户ID这样的字段,根据实际情况修改
bind_dn: 'cn=admin,dc=demo,dc=com' # cn=gitlab可能代表一个用户名,ou=users代表一个active directory中的组织单位,可能的说明是:gitlab这个对象处在domain.com域的Users组织单元中
password: 'admin123'
encryption: 'plain' # "start_tls" or "simple_tls" or "plain" 加密方式
verify_certificates: true # 如果加密方式是SSL,这里的验证会生效
timeout: 10 # 设定对LDAP服务器的查询超时时间,以防请求得不到响应被阻塞住
ca_file: '' # pem格式的ca验证文件,比如类似"/etc/ca.pem"
active_directory: true # 判断是不是Active Directory类型的LDAP服务
allow_username_or_email_login: ture # 如果前面使用Active Directory中的uid字段进行登录,这里要设置为false
block_auto_created_users: false
base: 'dc=demo,dc=com' # 以此为基础,进行用户查询
user_filter: ''
# 下面的参数指定GitLab会使用LDAP中的哪些属性值作为自己的用户信息,比如GitLab中的username信息会按照先后顺序匹配LDAP中的'uid'/'userid'/'sAMAccountName'属性
值中的一个,fist_name字段就直接对LDAP中的'givenName'属性
attributes:
email: ['mail']
name: 'Administrator'
first_name: 'givenName'
last_name: 'sn'
EOS
修改完成后,保存并退出
2.重新加载GitLab配置
# 重新加载配置
gitlab-ctl reconfigure
3.检查配置是否成功
# 使用GitLab的指令列出所有用户列表以及cn
gitlab-rake gitlab:ldap:check
4. 重新访问GitLab地址使用LDAP用户登录
这里使用之前创建好的其中一个用户账号:ldapuser1/111111.登录GitLab
到此,便完成了GitLab和OpenLDAP的集成。