环境:
centos 7.9
docker 20.10.10
openldap 当前最新版
一.安装ldap
1.拉取openldap镜像
执行docker pullosixia/openldap
2.创建映射目录
执行mkdir -p /usr/local/ldap
cd /usr/local/ldap
3.启动ldap容易
dockerrun \
-d \
-p 389:389 \
-p 636:636 \
-v /usr/local/ldap:/usr/local/ldap \
--name ldap \
osixia/openldap
配置LDAP域:--env LDAP_DOMAIN="***.com"
配置LDA密码:--env LDAP_ADMIN_PASSWORD="***"
补充:openLDAP环境变量
可以通过 --env [环境变量名] = [环境变量值] 为启动的openLDAP服务容器设置初始值,例如:
常用的环境变量如下:
LDAP_ORGANISATION 组织名称。默认为Example Inc.
LDAP_DOMAIN Ldap域。默认为example.org
LDAP_BASE_DN Ldap基本DN。如果为空,则自动从LDAP_DOMAIN值设置。默认为(empty)
LDAP_ADMIN_PASSWORD Ldap管理员密码。默认为admin
LDAP_CONFIG_PASSWORD Ldap配置密码。默认为config
LDAP_READONLY_USER 添加只读用户。默认为false
LDAP_READONLY_USER_USERNAME 只读用户名。默认为readonly
LDAP_READONLY_USER_PASSWORD 只读用户密码。默认为readonly
与TLS相关的环境变量如下:
LDAP_TLS 添加openldap TLS功能。设置为true后无法删除。默认为true。
LDAP_TLS_CRT_FILENAME Ldap ssl证书文件名。默认为ldap.crt
LDAP_TLS_KEY_FILENAME Ldap ssl证书私钥文件名。默认为ldap.key
LDAP_TLS_CA_CRT_FILENAME Ldap ssl CA证书文件名。默认为ca.crt
LDAP_TLS_ENFORCE 强制执行TLS但ldapi连接除外。设置为true后无法禁用。默认为false。
LDAP_TLS_CIPHER_SUITE TLS密码套件。默认为SECURE256:+SECURE128:-VERS-TLS-ALL:+VERS-TLS1.2:-RSA:-DHE-DSS:-CAMELLIA-128-CBC:-CAMELLIA-256-CBC,基于Red Hat的TLS强化指南
LDAP_TLS_VERIFY_CLIENT TLS验证客户端。默认为demand
与复制操作相关的环境变量如下:
LDAP_REPLICATION 添加openldap复制功能。默认为false
LDAP_REPLICATION_CONFIG_SYNCPROV 用于配置数据库的olcSyncRepl选项。没有基于LDAP_REPLICATION_HOSTS自动添加的rid和provider。默认为binddn="cn=admin,cn=config"bindmethod=simple credentials=$LDAP_CONFIG_PASSWORDsearchbase="cn=config" type=refreshAndPersist retry="60 +"timeout=1 starttls=critical
LDAP_REPLICATION_DB_SYNCPROV 用于数据库的olcSyncRepl选项。没有基于LDAP_REPLICATION_HOSTS自动添加的rid和provider。默认为binddn=“cn=admin,L D A P B A S ED N " b i n d m e t h o d = s i m p l e c r e d e n t i a l s =LDAP_BASE_DN" bindmethod=simple credentials=LDAP
BASEDN"bindmethod=simplecredentials=LDAP_ADMIN_PASSWORDsearchbase=”$LDAP_BASE_DN" type=refreshAndPersist interval=00:00:00:10retry=“60 +” timeout=1 starttls=critical
LDAP_REPLICATION_HOSTS 复制主机列表,必须包含由docker run命令上的–hostname设置的当前容器主机名。默认为:
- ldap://ldap.example.org
- ldap://ldap2.example.org12
如果要在docker run命令中设置此变量,请添加标记#PYTHON2BASH:并在python中转换yaml:dockerrun --envLDAP_REPLICATION_HOSTS="#PYTHON2BASH:['ldap://ldap.example.org','ldap://ldap2.example.org']"--detach osixia/openldap:1.2.21
其他环境变量如下:
KEEP_EXISTING_CONFIG 不要更改ldap配置。默认为false
如果使用现有数据库设置为true,则config将保持不变。imagetls和复制配置将不会运行。容器可以使用LDAP_ADMIN_PASSWORD和LDAP_CONFIG_PASSWORD空启动或填充假数据。
如果在引导新数据库时设置为true,则不会添加bootstap ldif和schema,并且不会运行tls和replicationconfig。12
LDAP_REMOVE_CONFIG_AFTER_SETUP 安装后删除配置文件夹。默认为true
LDAP_SSL_HELPER_PREFIX ssl-helper环境变量前缀。默认为ldap,ssl-helper在SSL_HELPER_ *变量之前首先从LDAP_SSL_HELPER_ *变量中搜索配置。
HOSTNAME 设置正在运行的openldap服务器的主机名。默认为docker创建的任何内容。
4.验证openldap
#进入容器
执行 docker exec-it ldap /bin/bash
# 执行查询
执行ldapsearch -x-H ldap://localhost:389 -b dc=example,dc=org -D"cn=admin,dc=example,dc=org" -w admin
# 或直接在容器外执行查询
执行docker exec-it ldap ldapsearch -x -H ldap://localhost:389 -b dc=example,dc=org -D"cn=admin,dc=example,dc=org" -w admin
5.默认配置描述
dn dc=example,dc=org
admin admin,dc=example,dc=org
password admin
二.安装phpldapadmin
1.拉去phpldapadmin镜像
执行docker pull osixia/phpldapadmin
2.启动容器
dockerrun -dit \
-p 8081:80 \
--link ldap \
--name pla \
--envPHPLDAPADMIN_HTTPS=false \
--env PHPLDAPADMIN_LDAP_HOSTS=ldap\
--restart always\
--detachosixia/phpldapadmin
三.登录
浏览器输入http://ip:8081/
登录名:cn=admin,dc=example,dc=org
密码:admin
四.Ldapaccountmanager安装
1. 拉取镜像
执行docker pull ldapaccountmanager/lam
2. 启动容器
执行docker run -p 8082:80 -it -d ldapaccountmanager/lam:stable
3.登录
http://ip:8082/lam
用户:admin
密码:admin
3.1配置修改
可选择语言为中文






补充
openLDAP常见的属性如下:

常用属性介绍
dn:唯一标志名,类似于linux文件系统中的绝对路径,每个条目都有一个标识名,例如uid=zhangsan,ou=people,dc=baidu,dc=com,在整个openldap中是唯一的,类似于mysql表中的主键
rdn:通常指相对标识名,类似于linux文件系统中的相对路径,如uid=zhangsan
uid:通常指一个用户的登陆名称,例如:uid=zhangsan
sn:通常指一个人的姓氏,例如:sn: zhang
giveName: 通常指一个人的名字。giveName:zhangsan
objectClass: objectClass是特殊的属性,用来指定条目包含哪些对象类。如 objectClass:person
dc:通常指定一个域名,例如 dc=baidu,dc=com
ou: 指定一个组织单元的名称:
ou=people,dc=baidu,dc=com
ou=group,dc=baidu,dc=com
mail: 邮箱 mail: didi@baidu.com




