OpenLDAP主要用做对各种服务访问做后台认证以及用户数据权限管控。(例如,访问 Samba 时,LDAP 可以起到域控制器的作用;或者 Linux 系统认证 时代替 /etc/passwd 的作用。)
LDAP主要用做用户信息查询(如邮箱、电话等)或对各种服务访问做后台认证以及用户数据权限管控。
通常,在实际工作环境中,都会通过LDAP来构建一个统一的账号管理、身份验证平台,实现SSO单点登录机制
LDAP端口号:389,636
389 明文端口
636 加密端口 (SSL/TLS)
关系大致是: 组和人员是多对多关心,一个用户可以拥有多个组,一个组也可以拥有多个用户。
【很详细】统一身份认证系统OpenLDAP 完整部署(含高可用) - 知乎 (zhihu.com)
3.LDAP 相关名词
DC:domain component一般为公司名,例如:dc=163,dc=com
OU:organization unit为组织单元,最多可以有四级,每级最长32个字符,可以为中文
CN:common name为用户名或者服务器名,最长可以到80个字符,可以为中文
DN:distinguished name为一条LDAP记录项的名字,有唯一性,例如:dn:"cn=admin,ou=developer,dc=163,dc=com"
2 OpenLDAP安装
环境:Ubuntu 22.04
使用docker安装
mkdir /opt/ldap -p
cd /opt/ldap
vim docker-compose.yaml
version: '2'
services:
openldap:
image: osixia/openldap:1.5.0 ### 如果有私有仓库可以从自己的私有仓库拉取镜像
container_name: openldap
restart: always
environment:
LDAP_LOG_LEVEL: "256"
LDAP_ORGANISATION: "test" ### 您的组织名称
LDAP_DOMAIN: "smile.test" ### 公司域名
LDAP_BASE_DN: "dc=smile,dc=test" ### 根据域名组成
LDAP_ADMIN_PASSWORD: "smile123" ### 密码自己来设置
LDAP_CONFIG_PASSWORD: "smile123"
LDAP_READONLY_USER: "false"
#LDAP_READONLY_USER_USERNAME: "readonly"
#LDAP_READONLY_USER_PASSWORD: "readonly"
LDAP_RFC2307BIS_SCHEMA: "false"
LDAP_BACKEND: "mdb"
#LDAP_TLS: "true"
#LDAP_TLS_CRT_FILENAME: "smile.test.pem"
#LDAP_TLS_KEY_FILENAME: "smile.test.key"
#LDAP_TLS_DH_PARAM_FILENAME: "dhparam.pem"
#LDAP_TLS_CA_CRT_FILENAME: "ca.crt"
#LDAP_TLS_ENFORCE: "false"
#LDAP_TLS_CIPHER_SUITE: "SECURE256:-VERS-SSL3.0"
# LDAP_TLS_VERIFY_CLIENT: "demand"
LDAP_REPLICATION: "false"
#LDAP_REPLICATION_CONFIG_SYNCPROV: 'binddn="cn=admin,cn=config" bindmethod=simple credentials="$$LDAP_CONFIG_PASSWORD" searchbase="cn=config" type=refreshAndPersist retry="60 +" timeout=1 starttls=critical'
#LDAP_REPLICATION_DB_SYNCPROV: 'binddn="cn=admin,$$LDAP_BASE_DN" bindmethod=simple credentials="$$LDAP_ADMIN_PASSWORD" searchbase="$$LDAP_BASE_DN" type=refreshAndPersist interval=00:00:00:10 retry="60 +" timeout=1 starttls=critical'
#LDAP_REPLICATION_HOSTS: "#PYTHON2BASH:['ldap://ldap.example.org','ldap://ldap2.example.org']"
KEEP_EXISTING_CONFIG: "false"
LDAP_REMOVE_CONFIG_AFTER_SETUP: "true"
#LDAP_SSL_HELPER_PREFIX: "ldap"
tty: true
stdin_open: true
volumes:
- /opt/openldap/ldap:/var/lib/ldap
- /opt/openldap/slapd.d:/etc/ldap/slapd.d
- /opt/openldap/certs:/container/service/lapd/assets/certs
ports:
- "389:389"
- "636:636"
# For replication to work correctly, domainname and hostname must be
# set correctly so that "hostname"."domainname" equates to the
# fully-qualified domain name for the host.
domainname: "smile.test"
hostname: "ldap-server"
phpldapadmin:
image: osixia/phpldapadmin:latest
container_name: phpldapadmin
restart: always
environment:
PHPLDAPADMIN_LDAP_HOSTS: "openldap" ### 如果部署后登录不进去有可能是这里出了问题,直接换为部署openldap服务的公网IP试试
PHPLDAPADMIN_HTTPS: "false"
ports:
- "50081:80"
depends_on:
- openldap
self-service-password:
container_name: self-service-password
image: tiredofit/self-service-password:latest
restart: always
ports:
- "50080:80"
environment:
- LDAP_SERVER=ldap://openldap:389
- LDAP_BINDDN=cn=admin,dc=smile,dc=test
- LDAP_BINDPASS=XXXX
- LDAP_BASE_SEARCH=dc=smile,dc=test
- MAIL_FROM=it@open.com
- MAIL_FROM_NAME=账号自助服务平台
- SMTP_DEBUG=0
- SMTP_HOST=smtp.qiye.aliyun.com
- SMTP_USER=it@open.com
- SMTP_PASS=jYda52VZ8Ftw1111
- SMTP_PORT=465
- SMTP_SECURE_TYPE=ssl
- SMTP_AUTH_ON=true
- NOTIFY_ON_CHANGE=true
volumes:
- /etc/localtime:/etc/localtime
- /opt/openldap/self-service-password/htdocs:/www/ssp
- /opt/openldap/self-service-password/logs:/www/logs
deploy:
resources:
limits:
memory: 2G
reservations:
memory: 512M
启动:
docker compose up -d
登录:
http://10.0.0.203:50081/
用户名密码:
cn=admin,dc=smile,dc=test
smile123
用户名:LDAP_BINDDN cn=admin,dc=smile,dc=test
密码:LDAP_ADMIN_PASSWORD
3- 使用
1-创建用户
这里先在dc下面创建一个ou=group和一个ou=person。暂时先不按部分区分,如果想再按部分区分则就先创建一个ou,再在该ou下创建一个ou=group即可。
1、创建ou (组织机构)
提交后可以看到如下:
接着在创建一个 创建 group 和person 两个ou
ou =person
2、创建Group (创建团队)
在ou=group下创建dev
选择 generic: posix group
3、创建User Account (单个用户)
在ou=people下创建用户
然后点击 create object
4、 为用户填写其他属性
为用户添加真实姓名和邮箱(有些系统需要用户的这两个信息!比如gitlab)
然后点击下边的
配置完成后的效果: