Compare commits
3 Commits
e3e51d8750
...
e7f3f387ce
Author | SHA1 | Date |
---|---|---|
|
e7f3f387ce | |
|
7fa6648d6c | |
|
3c688a0757 |
|
@ -0,0 +1,192 @@
|
|||
# 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. 设置备份策略
|
||||
|
||||
如有问题,请查看日志文件或联系系统管理员。
|
|
@ -0,0 +1,84 @@
|
|||
version: "3.8"
|
||||
|
||||
services:
|
||||
# Mattermost Team Edition
|
||||
mattermost:
|
||||
image: mattermost/mattermost-team-edition:latest
|
||||
container_name: mattermost
|
||||
hostname: mattermost
|
||||
ports:
|
||||
- "8065:8065"
|
||||
environment:
|
||||
# 数据库配置
|
||||
MM_SQLSETTINGS_DRIVERNAME: "postgres"
|
||||
MM_SQLSETTINGS_DATASOURCE: "postgres://mattermost:mattermost_password@postgres:5432/mattermost?sslmode=disable&connect_timeout=10"
|
||||
|
||||
# 服务配置
|
||||
MM_SERVICESETTINGS_SITEURL: "http://localhost:8065"
|
||||
MM_SERVICESETTINGS_LISTENADDRESS: ":8065"
|
||||
MM_SERVICESETTINGS_ENABLEDEVELOPER: "true"
|
||||
|
||||
# 文件存储配置
|
||||
MM_FILESETTINGS_DRIVERNAME: "local"
|
||||
MM_FILESETTINGS_DIRECTORY: "/mattermost/data/"
|
||||
|
||||
# 日志配置
|
||||
MM_LOGSETTINGS_ENABLECONSOLE: "true"
|
||||
MM_LOGSETTINGS_CONSOLELEVEL: "INFO"
|
||||
|
||||
# 用户配置
|
||||
MM_TEAMSETTINGS_ENABLEUSERCREATION: "true"
|
||||
MM_TEAMSETTINGS_ENABLEOPENSERVER: "true"
|
||||
MM_SERVICESETTINGS_ENABLEEMAILINVITATIONS: "false"
|
||||
|
||||
# 安全配置
|
||||
MM_SERVICESETTINGS_ENABLEINSECUREOUTGOINGCONNECTIONS: "true"
|
||||
|
||||
# 插件配置
|
||||
MM_PLUGINSETTINGS_ENABLE: "true"
|
||||
MM_PLUGINSETTINGS_ENABLEUPLOADS: "true"
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
networks:
|
||||
- mattermost_network
|
||||
volumes:
|
||||
- ./mattermost_data:/mattermost/data
|
||||
- ./mattermost_config:/mattermost/config
|
||||
- ./mattermost_logs:/mattermost/logs
|
||||
- ./mattermost_plugins:/mattermost/plugins
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:8065/api/v4/system/ping"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 90s
|
||||
|
||||
# PostgreSQL数据库
|
||||
postgres:
|
||||
image: postgres:13-alpine
|
||||
container_name: mattermost_postgres
|
||||
environment:
|
||||
POSTGRES_DB: mattermost
|
||||
POSTGRES_USER: mattermost
|
||||
POSTGRES_PASSWORD: mattermost_password
|
||||
POSTGRES_INITDB_ARGS: "--encoding=UTF8 --lc-collate=C --lc-ctype=C"
|
||||
volumes:
|
||||
- ./postgres_data:/var/lib/postgresql/data
|
||||
networks:
|
||||
- mattermost_network
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U mattermost -d mattermost"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 30s
|
||||
|
||||
networks:
|
||||
mattermost_network:
|
||||
driver: bridge
|
||||
|
||||
# 使用绑定挂载,数据存储在当前目录下
|
||||
# volumes 部分已删除,因为使用 ./目录 的绑定挂载
|
|
@ -0,0 +1,95 @@
|
|||
version: "3.6"
|
||||
|
||||
services:
|
||||
# OpenLDAP服务器
|
||||
openldap:
|
||||
image: osixia/openldap:1.5.0
|
||||
container_name: openldap
|
||||
hostname: openldap
|
||||
ports:
|
||||
- "389:389"
|
||||
- "636:636"
|
||||
environment:
|
||||
LDAP_LOG_LEVEL: "256"
|
||||
LDAP_ORGANISATION: "Example Inc."
|
||||
LDAP_DOMAIN: "example.com"
|
||||
LDAP_BASE_DN: "dc=example,dc=com"
|
||||
LDAP_ADMIN_PASSWORD: "admin"
|
||||
LDAP_CONFIG_PASSWORD: "config"
|
||||
LDAP_READONLY_USER: "false"
|
||||
LDAP_RFC2307BIS_SCHEMA: "false"
|
||||
LDAP_BACKEND: "mdb"
|
||||
LDAP_TLS: "false"
|
||||
LDAP_REPLICATION: "false"
|
||||
KEEP_EXISTING_CONFIG: "false"
|
||||
LDAP_REMOVE_CONFIG_AFTER_SETUP: "true"
|
||||
volumes:
|
||||
- ./ldap_data:/var/lib/ldap
|
||||
- ./ldap_config:/etc/ldap/slapd.d
|
||||
networks:
|
||||
- gitlab_network
|
||||
restart: unless-stopped
|
||||
|
||||
# LDAP管理界面 (phpLDAPadmin)
|
||||
phpldapadmin:
|
||||
image: osixia/phpldapadmin:latest
|
||||
container_name: phpldapadmin
|
||||
hostname: phpldapadmin
|
||||
ports:
|
||||
- "8081:80"
|
||||
environment:
|
||||
PHPLDAPADMIN_LDAP_HOSTS: "openldap"
|
||||
PHPLDAPADMIN_HTTPS: "false"
|
||||
depends_on:
|
||||
- openldap
|
||||
networks:
|
||||
- gitlab_network
|
||||
restart: unless-stopped
|
||||
|
||||
# GitLab
|
||||
gitlab:
|
||||
image: gitlab/gitlab-ce:latest
|
||||
container_name: gitlab
|
||||
hostname: localhost
|
||||
ports:
|
||||
- "8880:8880"
|
||||
- "443:443"
|
||||
- "22:22"
|
||||
environment:
|
||||
GITLAB_OMNIBUS_CONFIG: |
|
||||
external_url 'http://localhost:8880'
|
||||
gitlab_rails['ldap_enabled'] = true
|
||||
gitlab_rails['ldap_servers'] = {
|
||||
'main' => {
|
||||
'label' => 'LDAP',
|
||||
'host' => 'openldap',
|
||||
'port' => 389,
|
||||
'uid' => 'uid',
|
||||
'bind_dn' => 'cn=admin,dc=example,dc=com',
|
||||
'password' => 'admin',
|
||||
'encryption' => 'plain',
|
||||
'verify_certificates' => false,
|
||||
'timeout' => 10,
|
||||
'active_directory' => false,
|
||||
'user_filter' => '',
|
||||
'base' => 'dc=example,dc=com',
|
||||
'lowercase_usernames' => false,
|
||||
'allow_username_or_email_login' => true,
|
||||
'block_auto_created_users' => false
|
||||
}
|
||||
}
|
||||
volumes:
|
||||
- ./gitlab_config:/etc/gitlab
|
||||
- ./gitlab_log:/var/log/gitlab
|
||||
- ./gitlab_data:/var/opt/gitlab
|
||||
depends_on:
|
||||
- openldap
|
||||
networks:
|
||||
- gitlab_network
|
||||
restart: unless-stopped
|
||||
|
||||
|
||||
|
||||
networks:
|
||||
gitlab_network:
|
||||
driver: bridge
|
|
@ -0,0 +1,97 @@
|
|||
version: "3.6"
|
||||
|
||||
services:
|
||||
# OpenLDAP服务器
|
||||
openldap:
|
||||
image: osixia/openldap:1.5.0
|
||||
container_name: openldap
|
||||
hostname: openldap
|
||||
ports:
|
||||
- "389:389"
|
||||
- "636:636"
|
||||
environment:
|
||||
LDAP_LOG_LEVEL: "256"
|
||||
LDAP_ORGANISATION: "Example Inc."
|
||||
LDAP_DOMAIN: "example.com"
|
||||
LDAP_BASE_DN: "dc=example,dc=com"
|
||||
LDAP_ADMIN_PASSWORD: "admin"
|
||||
LDAP_CONFIG_PASSWORD: "config"
|
||||
LDAP_READONLY_USER: "false"
|
||||
LDAP_RFC2307BIS_SCHEMA: "false"
|
||||
LDAP_BACKEND: "mdb"
|
||||
LDAP_TLS: "false"
|
||||
LDAP_REPLICATION: "false"
|
||||
KEEP_EXISTING_CONFIG: "false"
|
||||
LDAP_REMOVE_CONFIG_AFTER_SETUP: "true"
|
||||
volumes:
|
||||
- ./ldap_data:/var/lib/ldap
|
||||
- ./ldap_config:/etc/ldap/slapd.d
|
||||
networks:
|
||||
- gitlab_network
|
||||
restart: unless-stopped
|
||||
|
||||
# LDAP管理界面 (phpLDAPadmin)
|
||||
phpldapadmin:
|
||||
image: osixia/phpldapadmin:latest
|
||||
container_name: phpldapadmin
|
||||
hostname: phpldapadmin
|
||||
ports:
|
||||
- "8081:80"
|
||||
environment:
|
||||
PHPLDAPADMIN_LDAP_HOSTS: "openldap"
|
||||
PHPLDAPADMIN_HTTPS: "false"
|
||||
depends_on:
|
||||
- openldap
|
||||
networks:
|
||||
- gitlab_network
|
||||
restart: unless-stopped
|
||||
|
||||
# GitLab
|
||||
gitlab:
|
||||
image: gitlab/gitlab-ce:latest
|
||||
container_name: gitlab
|
||||
hostname: localhost
|
||||
ports:
|
||||
- "8880:8880"
|
||||
- "443:443"
|
||||
- "22:22"
|
||||
environment:
|
||||
GITLAB_OMNIBUS_CONFIG: |
|
||||
external_url 'http://localhost:8880'
|
||||
gitlab_rails['ldap_enabled'] = true
|
||||
gitlab_rails['ldap_servers'] = {
|
||||
'main' => {
|
||||
'label' => 'LDAP',
|
||||
'host' => 'openldap',
|
||||
'port' => 389,
|
||||
'uid' => 'uid',
|
||||
'bind_dn' => 'cn=admin,dc=example,dc=com',
|
||||
'password' => 'admin',
|
||||
'encryption' => 'plain',
|
||||
'verify_certificates' => false,
|
||||
'timeout' => 10,
|
||||
'active_directory' => false,
|
||||
'user_filter' => '',
|
||||
'base' => 'dc=example,dc=com',
|
||||
'lowercase_usernames' => false,
|
||||
'allow_username_or_email_login' => true,
|
||||
'block_auto_created_users' => false
|
||||
}
|
||||
}
|
||||
volumes:
|
||||
- /d/23_Gitlab/DockerData/GitlabData/config:/etc/gitlab
|
||||
- /d/23_Gitlab/DockerData/GitlabData/log:/var/log/gitlab
|
||||
- /d/23_Gitlab/DockerData/GitlabData/data:/var/opt/gitlab
|
||||
depends_on:
|
||||
- openldap
|
||||
networks:
|
||||
- gitlab_network
|
||||
restart: unless-stopped
|
||||
|
||||
volumes:
|
||||
ldap_data:
|
||||
ldap_config:
|
||||
|
||||
networks:
|
||||
gitlab_network:
|
||||
driver: bridge
|
|
@ -0,0 +1,66 @@
|
|||
# GitLab LDAP配置文件
|
||||
# 将此配置添加到 /d/23_Gitlab/DockerData/GitlabData/config/gitlab.rb 文件中
|
||||
|
||||
# 外部URL配置
|
||||
external_url 'http://localhost:8880'
|
||||
|
||||
# LDAP配置
|
||||
gitlab_rails['ldap_enabled'] = true
|
||||
gitlab_rails['prevent_ldap_sign_in'] = false
|
||||
|
||||
# LDAP服务器配置
|
||||
gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
|
||||
main: # 'main' 是任意的标签,用于标识LDAP服务器
|
||||
label: 'LDAP'
|
||||
host: 'host.docker.internal' # 如果LDAP服务器在宿主机上运行
|
||||
port: 389
|
||||
uid: 'uid' # 用户名属性,根据您的LDAP架构调整
|
||||
bind_dn: 'cn=admin,dc=example,dc=com' # 管理员DN
|
||||
password: 'admin' # 管理员密码
|
||||
encryption: 'plain' # 可选: 'start_tls' 或 'simple_tls'
|
||||
verify_certificates: false
|
||||
smartcard_auth: false
|
||||
active_directory: false
|
||||
allow_username_or_email_login: true
|
||||
lowercase_usernames: false
|
||||
block_auto_created_users: false
|
||||
base: 'dc=example,dc=com' # LDAP基础DN
|
||||
user_filter: ''
|
||||
## EE only
|
||||
group_base: 'ou=groups,dc=example,dc=com' # 组基础DN
|
||||
admin_group: 'administrators' # 管理员组
|
||||
sync_ssh_keys: false
|
||||
|
||||
# 用户属性映射
|
||||
attributes:
|
||||
username: ['uid', 'userid', 'sAMAccountName']
|
||||
email: ['mail', 'email', 'userPrincipalName']
|
||||
name: 'cn'
|
||||
first_name: 'givenName'
|
||||
last_name: 'sn'
|
||||
EOS
|
||||
|
||||
# 其他GitLab配置
|
||||
gitlab_rails['time_zone'] = 'Asia/Shanghai'
|
||||
|
||||
# 邮件配置(可选)
|
||||
gitlab_rails['gitlab_email_enabled'] = true
|
||||
gitlab_rails['gitlab_email_from'] = 'gitlab@example.com'
|
||||
gitlab_rails['gitlab_email_display_name'] = 'GitLab'
|
||||
|
||||
# 备份配置(可选)
|
||||
gitlab_rails['backup_keep_time'] = 604800 # 7天
|
||||
|
||||
# 日志级别
|
||||
gitlab_rails['log_level'] = 'INFO'
|
||||
|
||||
# 禁用一些不需要的服务以节省资源(可选)
|
||||
prometheus_monitoring['enable'] = false
|
||||
alertmanager['enable'] = false
|
||||
grafana['enable'] = false
|
||||
|
||||
# 如果您想要启用HTTPS,取消注释以下配置
|
||||
# external_url 'https://localhost'
|
||||
# nginx['redirect_http_to_https'] = true
|
||||
# nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.crt"
|
||||
# nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.key"
|
|
@ -0,0 +1,109 @@
|
|||
# LDAP初始化数据文件
|
||||
# 用于创建基本的组织单位、用户和组
|
||||
|
||||
# 创建组织单位 - 用户
|
||||
dn: ou=people,dc=example,dc=com
|
||||
objectClass: organizationalUnit
|
||||
ou: people
|
||||
description: 用户组织单位
|
||||
|
||||
# 创建组织单位 - 组
|
||||
dn: ou=groups,dc=example,dc=com
|
||||
objectClass: organizationalUnit
|
||||
ou: groups
|
||||
description: 组织单位
|
||||
|
||||
# 创建管理员组
|
||||
dn: cn=administrators,ou=groups,dc=example,dc=com
|
||||
objectClass: groupOfNames
|
||||
cn: administrators
|
||||
description: 系统管理员组
|
||||
member: cn=admin,dc=example,dc=com
|
||||
|
||||
# 创建开发者组
|
||||
dn: cn=developers,ou=groups,dc=example,dc=com
|
||||
objectClass: groupOfNames
|
||||
cn: developers
|
||||
description: 开发者组
|
||||
member: cn=admin,dc=example,dc=com
|
||||
|
||||
# 创建测试用户1
|
||||
dn: uid=john.doe,ou=people,dc=example,dc=com
|
||||
objectClass: inetOrgPerson
|
||||
objectClass: posixAccount
|
||||
objectClass: shadowAccount
|
||||
uid: john.doe
|
||||
sn: Doe
|
||||
givenName: John
|
||||
cn: John Doe
|
||||
displayName: John Doe
|
||||
uidNumber: 1001
|
||||
gidNumber: 1001
|
||||
userPassword: password123
|
||||
gecos: John Doe
|
||||
loginShell: /bin/bash
|
||||
homeDirectory: /home/john.doe
|
||||
mail: john.doe@example.com
|
||||
telephoneNumber: +1-555-0001
|
||||
title: Senior Developer
|
||||
departmentNumber: IT
|
||||
description: Senior Software Developer
|
||||
|
||||
# 创建测试用户2
|
||||
dn: uid=jane.smith,ou=people,dc=example,dc=com
|
||||
objectClass: inetOrgPerson
|
||||
objectClass: posixAccount
|
||||
objectClass: shadowAccount
|
||||
uid: jane.smith
|
||||
sn: Smith
|
||||
givenName: Jane
|
||||
cn: Jane Smith
|
||||
displayName: Jane Smith
|
||||
uidNumber: 1002
|
||||
gidNumber: 1002
|
||||
userPassword: password123
|
||||
gecos: Jane Smith
|
||||
loginShell: /bin/bash
|
||||
homeDirectory: /home/jane.smith
|
||||
mail: jane.smith@example.com
|
||||
telephoneNumber: +1-555-0002
|
||||
title: Project Manager
|
||||
departmentNumber: IT
|
||||
description: IT Project Manager
|
||||
|
||||
# 创建测试用户3
|
||||
dn: uid=bob.wilson,ou=people,dc=example,dc=com
|
||||
objectClass: inetOrgPerson
|
||||
objectClass: posixAccount
|
||||
objectClass: shadowAccount
|
||||
uid: bob.wilson
|
||||
sn: Wilson
|
||||
givenName: Bob
|
||||
cn: Bob Wilson
|
||||
displayName: Bob Wilson
|
||||
uidNumber: 1003
|
||||
gidNumber: 1003
|
||||
userPassword: password123
|
||||
gecos: Bob Wilson
|
||||
loginShell: /bin/bash
|
||||
homeDirectory: /home/bob.wilson
|
||||
mail: bob.wilson@example.com
|
||||
telephoneNumber: +1-555-0003
|
||||
title: DevOps Engineer
|
||||
departmentNumber: IT
|
||||
description: DevOps and Infrastructure Engineer
|
||||
|
||||
# 将用户添加到开发者组
|
||||
dn: cn=developers,ou=groups,dc=example,dc=com
|
||||
changetype: modify
|
||||
add: member
|
||||
member: uid=john.doe,ou=people,dc=example,dc=com
|
||||
-
|
||||
add: member
|
||||
member: uid=bob.wilson,ou=people,dc=example,dc=com
|
||||
|
||||
# 将管理员用户添加到管理员组
|
||||
dn: cn=administrators,ou=groups,dc=example,dc=com
|
||||
changetype: modify
|
||||
add: member
|
||||
member: uid=jane.smith,ou=people,dc=example,dc=com
|
|
@ -0,0 +1,49 @@
|
|||
# 将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
|
||||
|
||||
ldap
|
||||
用户DN: cn=admin,dc=example,dc=com
|
||||
密码: admin
|
||||
|
||||
|
||||
|
||||
RDN 是 Relative Distinguished Name(相对可分辨名称)的缩写,是LDAP中的一个重要概念。
|
||||
|
||||
RDN 解释
|
||||
1. 什么是RDN
|
||||
RDN 是LDAP条目在其父容器中的唯一标识符
|
||||
它是DN(Distinguished Name)的最左边部分
|
||||
类似于文件系统中的文件名
|
||||
2. 举例说明
|
||||
完整DN: uid=Guwan,ou=people,dc=example,dc=com
|
||||
|
||||
RDN: uid=Guwan (最左边的部分)
|
||||
父DN: ou=people,dc=example,dc=com
|
||||
3. 常见的RDN格式
|
||||
RDN格式 含义 用途
|
||||
uid=john User ID 用户账户
|
||||
cn=John Doe Common Name 人员或组
|
||||
ou=people Organizational Unit 组织单位
|
||||
dc=example Domain Component 域名组件
|
||||
4. 在您的情况下
|
||||
当您创建用户时,系统会问您要使用什么作为RDN:
|
||||
|
||||
选择 uid: 创建 uid=Guwan,ou=people,dc=example,dc=com
|
||||
选择 cn: 创建 cn=Guwan,ou=people,dc=example,dc=com
|
||||
5. 为什么重要
|
||||
唯一性: 同一容器中不能有相同的RDN
|
||||
引用: 其他系统(如GitLab)通过RDN来识别用户
|
||||
搜索: LDAP搜索时RDN是重要的查找依据
|
||||
6. 在创建用户界面中
|
||||
当您看到RDN选择时:
|
||||
|
||||
选择 uid 如果您想要 uid=Guwan 格式
|
||||
选择 cn 如果您想要 cn=Guwan 格式
|
||||
对于GitLab LDAP集成,通常推荐使用 uid 作为RDN,因为:
|
||||
|
||||
更符合用户账户的标准
|
||||
GitLab配置中使用 uid 字段进行认证
|
||||
与其他现有用户(uid=bob.wilson 等)保持一致
|
|
@ -0,0 +1,15 @@
|
|||
# 更新用户密码
|
||||
dn: uid=john.doe,ou=people,dc=example,dc=com
|
||||
changetype: modify
|
||||
replace: userPassword
|
||||
userPassword: password123
|
||||
|
||||
dn: uid=jane.smith,ou=people,dc=example,dc=com
|
||||
changetype: modify
|
||||
replace: userPassword
|
||||
userPassword: password123
|
||||
|
||||
dn: uid=bob.wilson,ou=people,dc=example,dc=com
|
||||
changetype: modify
|
||||
replace: userPassword
|
||||
userPassword: password123
|
|
@ -0,0 +1,67 @@
|
|||
# 只创建用户,不包含已存在的组织单位
|
||||
|
||||
# 创建测试用户1
|
||||
dn: uid=john.doe,ou=people,dc=example,dc=com
|
||||
objectClass: inetOrgPerson
|
||||
objectClass: posixAccount
|
||||
objectClass: shadowAccount
|
||||
uid: john.doe
|
||||
sn: Doe
|
||||
givenName: John
|
||||
cn: John Doe
|
||||
displayName: John Doe
|
||||
uidNumber: 1001
|
||||
gidNumber: 1001
|
||||
userPassword: password123
|
||||
gecos: John Doe
|
||||
loginShell: /bin/bash
|
||||
homeDirectory: /home/john.doe
|
||||
mail: john.doe@example.com
|
||||
telephoneNumber: +1-555-0001
|
||||
title: Senior Developer
|
||||
departmentNumber: IT
|
||||
description: Senior Software Developer
|
||||
|
||||
# 创建测试用户2
|
||||
dn: uid=jane.smith,ou=people,dc=example,dc=com
|
||||
objectClass: inetOrgPerson
|
||||
objectClass: posixAccount
|
||||
objectClass: shadowAccount
|
||||
uid: jane.smith
|
||||
sn: Smith
|
||||
givenName: Jane
|
||||
cn: Jane Smith
|
||||
displayName: Jane Smith
|
||||
uidNumber: 1002
|
||||
gidNumber: 1002
|
||||
userPassword: password123
|
||||
gecos: Jane Smith
|
||||
loginShell: /bin/bash
|
||||
homeDirectory: /home/jane.smith
|
||||
mail: jane.smith@example.com
|
||||
telephoneNumber: +1-555-0002
|
||||
title: Project Manager
|
||||
departmentNumber: IT
|
||||
description: IT Project Manager
|
||||
|
||||
# 创建测试用户3
|
||||
dn: uid=bob.wilson,ou=people,dc=example,dc=com
|
||||
objectClass: inetOrgPerson
|
||||
objectClass: posixAccount
|
||||
objectClass: shadowAccount
|
||||
uid: bob.wilson
|
||||
sn: Wilson
|
||||
givenName: Bob
|
||||
cn: Bob Wilson
|
||||
displayName: Bob Wilson
|
||||
uidNumber: 1003
|
||||
gidNumber: 1003
|
||||
userPassword: password123
|
||||
gecos: Bob Wilson
|
||||
loginShell: /bin/bash
|
||||
homeDirectory: /home/bob.wilson
|
||||
mail: bob.wilson@example.com
|
||||
telephoneNumber: +1-555-0003
|
||||
title: DevOps Engineer
|
||||
departmentNumber: IT
|
||||
description: DevOps and Infrastructure Engineer
|
Loading…
Reference in New Issue