Docker快速搭建LDAP服务器

# 摘要

OpenLdap可以提供强大的集中账号管理和授权,但其强大的功能依赖多个插件的集成,为方便OpenLdap的编译和部署,我便制作了一个docker 镜像,并通过本文记录该镜像的使用方法。

# 文档环境

ldapsso (opens new window) OpenLdap (opens new window)

  • 本文档中代码的测试环境

# OpenLdap Docker 部署

# 获取镜像

# 建议使用国内加速
cat <<EOF > /etc/docker/daemon.json
{
  "registry-mirrors" : [
    "http://registry.docker-cn.com",
    "http://docker.mirrors.ustc.edu.cn",
    "http://hub-mirror.c.163.com"
  ],
  "insecure-registries" : [
    "registry.docker-cn.com",
    "docker.mirrors.ustc.edu.cn"
  ],
  "debug" : true,
  "experimental" : true
}
EOF
docker push nginxbar/ldapsso:0.2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# 容器启动

docker run -p 389:389 -p 636:636 --name ldapsso --detach nginxbar/ldapsso:0.2
1

# 自定义ldap域

镜像默认的ldap域是nginxbar,根域是dc=nginxbar,dc=com,自定义域可用如下方式修改

docker run -p 389:389 -p 636:636 \
    -e DOMAIN=ldapsso \
    -e BASE_DN=dc=ldapsso,dc=com \
    --name ldapsso --detach nginxbar/ldapsso:0.2
1
2
3
4

# 修改管理员及密码

通过环境变量 ADMIN 及 CONFIG_PASS 修改管理员账号及密码

docker run -p 389:389 -p 636:636 \
    -e ADMIN=superadmin \
    -e CONFIG_PASS=admin \
    --name ldapsso --detach nginxbar/ldapsso:0.2
1
2
3
4

# AD 域集成

镜像已经配置好AD 集成的环境,在使用时,只需配置好AD域的相关参数即可。

docker run -p 389:389 -p 636:636 \
      -e AD_SERVER=xxx.xxx.xxx.xxx \
      -e AD_BASE_DN=DC=office,DC=nginxbar,dc=com \
      -e AD_BIND_DN=CN=admin,CN=Users,DC=office,DC=nginxbar,dc=com \
      -e AD_PASSWD=abcdefg --detach nginxbar/ldapsso:0.2
1
2
3
4
5

# 密码修改

镜像集成了一个自修改密码的web程序,通过8080端口直接访问。

docker run -p 389:389 -p 636:636 -p 8080:8080 --name ldapsso --detach nginxbar/ldapsso:0.2
1

密码修改依赖openldap 的acl配置,配置样例如下

docker exec -it ldapsso /bin/sh
cat <<EOF >/tmp/acl.ldif
dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: to attrs=userPassword,shadowLastChange,mail,givenName,displayName,homePhone,telephoneNumber,sshPublicKey
    by self write
    by anonymous read
    by * none
olcAccess: to *
    by self read
    by anonymous read
EOF

ldapadd -Q -Y EXTERNAL -H ldapi:/// -f /tmp/acl.ldif

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# docker-compose 脚本

version: '3.3'
services:
  ldapsso:
    hostname: ldapsso
    image: nginxbar/ldapsso:0.2
    container_name: ldapsso
    ports:
      - 389:389
      - 636:636
      - 8080:8080
    environment:
      - HOSTNAME=localhost
      - LOG_LEVEL=256
      - ADMIN=root
      - CONFIG_PASS=admin
      - DOMAIN=ldapsso
      - BASE_DN=dc=ldapsso,dc=com
      - AD_SERVER=xxx.xxx.xxx.xxx
      - AD_BASE_DN=DC=office,DC=nginxbar,DC=com
      - AD_BIND_DN=CN=admin,CN=Users,DC=office,DC=nginxbar,dc=com
      - AD_PASSWD=abcdefg
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# openldap 客户端安装

# 首选确认镜像端口8080 可以被外部访问
docker run -p 389:389 -p 636:636 -p 8080:8080 --name ldapsso --detach nginxbar/ldapsso:0.2

# 在Centos 客户机执行如下命令,xxx.xxx.xxx.xxx 为openldap服务器IP
echo "xxx.xxx.xxx.xxx ldap.nginxbar.com" >>/etc/hosts
wget http://ldap.nginxbar.com:8086/scripts/ldapclient.sh -O /tmp/ldapclient.sh && sh /tmp/ldapclient.sh

1
2
3
4
5
6
7

# 参考文档

https://hub.docker.com/repository/docker/nginxbar/ldapsso

上次更新: 2022/12/05, 22:29:05

Initializing...

最近更新
01
git的tag与branch 原创
05-21
02
阿里云SLS日志服务的数据脱敏及安全管理 原创
03-21
03
云平台的成本管理 原创
03-13
更多文章>
×