# GitLab LDAP集成部署指南 本指南将帮助您将现有的GitLab实例与LDAP服务器集成,实现统一的用户认证。 ## 部署方案 我们提供了两种部署方案: ### 方案一:使用Docker Compose(推荐) 使用提供的 `docker-compose.yml` 文件,一次性部署GitLab + OpenLDAP + phpLDAPadmin ### 方案二:修改现有GitLab配置 修改您现有的GitLab容器配置以连接到LDAP服务器 ## 快速开始 ### 1. 停止现有的GitLab容器 ```bash docker stop gitlab docker rm gitlab ``` ### 2. 使用Docker Compose部署 ```bash # 在项目目录中运行 docker-compose up -d ``` 这将启动以下服务: - **OpenLDAP**: LDAP服务器 (端口 389) - **phpLDAPadmin**: LDAP管理界面 (端口 8081) - **GitLab**: GitLab服务器 (端口 8880) ### 3. 初始化LDAP数据 等待所有容器启动后,导入初始数据: ```bash # 将LDIF文件复制到OpenLDAP容器 docker cp ldap-init.ldif openldap:/tmp/ # 导入数据 docker exec openldap ldapadd -x -D "cn=admin,dc=example,dc=com" -w admin -f /tmp/ldap-init.ldif ``` ### 4. 验证部署 #### 访问服务 - **GitLab**: http://localhost:8880 - **phpLDAPadmin**: http://localhost:8081 - **LDAP管理系统**: http://localhost:8080/ldap-demo/web/ #### 测试LDAP连接 ```bash # 测试LDAP连接 docker exec openldap ldapsearch -x -H ldap://localhost -b dc=example,dc=com -D "cn=admin,dc=example,dc=com" -w admin ``` ## 配置说明 ### LDAP服务器配置 - **服务器地址**: openldap (容器内) / localhost:389 (外部) - **基础DN**: dc=example,dc=com - **管理员DN**: cn=admin,dc=example,dc=com - **管理员密码**: admin - **用户基础**: ou=people,dc=example,dc=com - **组基础**: ou=groups,dc=example,dc=com ### GitLab LDAP配置 GitLab已配置为: - 允许LDAP用户登录 - 自动创建LDAP用户账户 - 支持用户名或邮箱登录 - 映射LDAP属性到GitLab用户信息 ### 测试用户 系统已创建以下测试用户: | 用户名 | 密码 | 邮箱 | 角色 | 组 | |--------|------|------|------|-----| | john.doe | password123 | john.doe@example.com | Senior Developer | developers | | jane.smith | password123 | jane.smith@example.com | Project Manager | administrators | | bob.wilson | password123 | bob.wilson@example.com | DevOps Engineer | developers | ## 使用您现有的GitLab容器 如果您想继续使用现有的GitLab容器,请按以下步骤操作: ### 1. 启动LDAP服务器 ```bash # 只启动LDAP相关服务 docker-compose up -d openldap phpldapadmin ``` ### 2. 修改GitLab配置 将 `gitlab-ldap-config.rb` 中的配置添加到您的GitLab配置文件: `/d/23_Gitlab/DockerData/GitlabData/config/gitlab.rb` ### 3. 重新配置GitLab ```bash docker exec gitlab gitlab-ctl reconfigure docker exec gitlab gitlab-ctl restart ``` ## 自定义配置 ### 修改LDAP域名 如果您想使用不同的域名,请修改以下文件: - `docker-compose.yml` 中的环境变量 - `ldap-init.ldif` 中的DN - GitLab配置中的base DN ### 添加更多用户 您可以通过以下方式添加用户: 1. 使用phpLDAPadmin Web界面 (http://localhost:8081) 2. 使用您的LDAP管理系统 (http://localhost:8080/ldap-demo/web/) 3. 使用LDIF文件和ldapadd命令 ### SSL/TLS配置 生产环境建议启用SSL/TLS: ```bash # 生成自签名证书(仅用于测试) docker exec openldap openssl req -new -x509 -nodes -out /container/service/slapd/assets/certs/ldap.crt -keyout /container/service/slapd/assets/certs/ldap.key -days 365 ``` ## 故障排除 ### 常见问题 1. **GitLab无法连接LDAP** - 检查容器网络连接 - 验证LDAP服务器是否正常运行 - 检查防火墙设置 2. **LDAP用户无法登录GitLab** - 验证用户DN格式 - 检查用户密码 - 查看GitLab日志 3. **权限问题** - 确保LDAP管理员有足够权限 - 检查组映射配置 ### 查看日志 ```bash # GitLab日志 docker logs gitlab # LDAP日志 docker logs openldap # GitLab LDAP调试 docker exec gitlab grep -i ldap /var/log/gitlab/gitlab-rails/production.log ``` ### 测试LDAP认证 ```bash # 测试用户认证 docker exec openldap ldapwhoami -x -D "uid=john.doe,ou=people,dc=example,dc=com" -w password123 ``` ## 安全建议 1. **更改默认密码**: 修改LDAP管理员密码 2. **启用TLS**: 在生产环境中启用LDAP over TLS 3. **网络隔离**: 使用防火墙限制LDAP服务器访问 4. **定期备份**: 备份LDAP数据和GitLab配置 5. **监控日志**: 定期检查认证日志 ## 下一步 1. 测试LDAP用户登录GitLab 2. 配置GitLab项目权限 3. 设置LDAP组到GitLab角色的映射 4. 配置邮件通知 5. 设置备份策略 如有问题,请查看日志文件或联系系统管理员。