在实际情况下,我们一般是先gitlab已有账号,且运行了一段时日。后面的需求是接入LDAP,但是用户和账号是想保留,对于用户来说是无感知的接入。
LDAP创建的账号,cn=用户名,description=姓名,mail=邮箱 对应 gitLab创建的账号,Username=用户名,Name=姓名, Email=邮箱
两个账户体系的账号,只要做到LDAP的邮箱mail和gitLab的邮箱Email一致,前者就不会重新创建账号,后者的姓名不会被前者所覆盖。
如果两边的账号邮箱不一致,会存在两个账号。
1、修改/home/admin/infra/gitlab/config/gitlab.rb
配置文件,添加LDAP相关配置信息
gitlab_rails['ldap_enabled'] = true
gitlab_rails['ldap_servers'] = {
'main' => {
'label' => 'LDAP',
'host' => 'ldap.mydomain.com',
'port' => 636,
'uid' => 'sAMAccountName',
'bind_dn' => '<bind_user_uid>', # 绑定用户的uid
'password' => '<bind_user_password>',
'encryption' => 'plain',
'verify_certificates' => false,
'timeout' => 10,
'active_directory' => false,
'base' => 'dc=example,dc=com',
'lowercase_usernames' => 'false',
'retry_empty_result_with_codes' => [80],
'allow_username_or_email_login' => false,
'block_auto_created_users' => false,
'attributes' => {
'username' => ['uid', 'userid', 'sAMAccountName'],
'name' => ['uid','userid', 'sAMAccountName'],
'email' => ['email', 'userPrincipalName']
}
}
}
2、重新配置docker exec -it gitlab gitlab-ctl reconfigure
,使其生效
3、执行LDAP check Rake task,测试bind_dn和密码凭证(如果已配置),并列出LDAP用户docker exec -it gitlab gitlab-rake gitlab:ldap:check
4、使用域账号登陆
对接LDAP后进行的一些配置
1、关闭标准登录页面,只允许LDAP登录
2、关于LDAP同步,社区版 GitLab 不支持调整,默认每天在服务器时间凌晨01:30运行一次worker,根据LDAP检查和更新GitLab用户。
问题:
1、登陆提示:Could not authenticate you from Ldapmain because "Connection timed out - openssl connection read timeout".
解决:设置'verify_certificates' => false
参考链接:
https://docs.gitlab.com/ee/administration/auth/ldap/index.html
https://docs.gitlab.com/ee/administration/raketasks/ldap.html
https://docs.gitlab.com/ee/administration/auth/ldap/ldap_synchronization.html#adjust-ldap-user-sync-schedule
https://docs.gitlab.com/ee/administration/auth/ldap/ldap-troubleshooting.html
https://gitlab.cn/docs/jh/administration/raketasks/ldap.html