- vi /etc/gitlab/gitlab.rb
-
- gitlab_rails['ldap_enabled'] = true
- gitlab_rails['prevent_ldap_sign_in'] = false
- gitlab_rails['ldap_servers'] = {
- 'main' => {
- 'label' => 'LDAP', # 随便自定义
- 'host' => 'xxxxxx', # ldap的server地址
- 'port' => 389, # ldap端口
- 'uid' => 'cn', # 配置为cn或者sn都可以,但要注意用户名称将会以此处配置为依据
- 'bind_dn' => 'cn=admin,dc=jettech,dc=com', # 管理员账号
- 'password' => '123456', # 管理员密码
- 'encryption' => 'plain', # 加密
- 'allow_username_or_email_login' => false, # 是否启用邮件作为用户名登陆
- 'block_auto_created_users' => false,
- 'base' => 'dc=aihelp,dc=net', # 核心配置,表示从哪一层读取用户信息
- 'user_filter' => '(memberof=cn=jettech_develop,ou=group,dc=jettech,dc=com)', # LDAP用户进行过滤
- 'lowercase_usernames' => false,
- 'group_base' => '',
- 'admin_group' => '',
- 'external_groups' => [],
- 'sync_ssh_keys' => false
- }
其中:
label 是显示在GitLab登录框的上方文字描述。
host 和 port 是 LDAP 服务的主机地址及端口
bind_dn 和 password 是一个管理 LDAP 的 dn 及密码
base 表示 LDAP 将以该 dn 为 节点,向下查找用户
user_filter 表示以某种过滤条件筛选用户,比如假设我们只希望所属组为 jettech_develop 的用户来访问 GitLab,则可以在这里设置 (memberOf=ou=jettech_develop,ou=group,dc=jettech,dc=com)
gitlab-ctl reconfigure
- $ 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: uid=test01,ou=Users,dc=jettech,dc=com cn: test01
- DN: uid=test02,ou=Users,dc=jettech,dc=com cn: test02
- DN: uid=test03,ou=Users,dc=jettech,dc=com cn: test03
- DN: uid=test04,ou=Users,dc=jettech,dc=com cn: test04
- Checking LDAP ... Finished
使用ldap用户名密码进行登陆即可,此时登陆进去是没有任何项目的权限,如果需要某权限,可以对用户进行组或者单项目的授权。
关于老用户的账号权限问题
在实际情况下,我们一般是先gitlab已有账号,且运行了一段时日。后面的需求是接入LDAP,但是用户和账号是想保留,对于用户来说是无感知的接入
解决办法:
LDAP创建的账号,cn=用户名,description=姓名,mail=邮箱
对映
gitLab创建的账号,Username=用户名,Name=姓名, Email=邮箱
两个账户体系的账号,只要做到LDAP的邮箱mail和gitLab的邮箱Email一致,前者就不会重新创建账号,后者的姓名不会被前者所覆盖。
如果两边的账号邮箱不一致,会存在两个账号。
gitlab: