使用 Self Service Password 实现员工自助修改 Active Directory 密码(含 Docker 部署)
在企业 IT 运维工作中,“帮员工改 AD 密码”几乎是永恒的工单之王:
密码过期
密码忘记
出差 / 远程无法联系 IT
半夜 VPN 登不上来
如果每一次都靠人工处理,不仅效率低,还存在明显的安全隐患。
本文将结合真实企业环境,介绍如何使用 Self Service Password 构建一个 员工自助修改 AD 密码的平台,并重点讲解 Docker 生产级部署方案。
一、什么是 Self Service Password?
Self Service Password(SSP) 是 LDAP Tool Box 项目提供的一款开源 Web 应用,专门用于 LDAP / Active Directory 用户自助修改或重置密码。
它支持:
标准密码修改(旧密码 → 新密码)
邮件令牌找回密码
安全问题验证
密码复杂度策略
Active Directory 原生支持
多语言界面(支持中文)
官方文档地址:
👉 https://self-service-password.readthedocs.io/en/latest/index.html
二、为什么企业一定要做“密码自助服务”?
传统人工重置的痛点
❌ 工单量极大,浪费运维时间
❌ 人工重置存在社工风险
❌ 员工体验极差(等、催、反复确认)
❌ 夜间 / 节假日无法及时处理
自助修改后的变化
✅ 员工 7×24 小时自助操作
✅ 无需 IT 介入
✅ 标准化流程,安全可控
✅ 运维彻底解放
一句话总结:
这是一个“投入一次,长期减负”的系统。
三、工作原理(运维视角)
Self Service Password 的核心逻辑非常清晰:
员工浏览器
↓ HTTPS
Web 页面(SSP)
↓ LDAPS 636
Active Directory
流程:
员工访问 Web 页面
输入用户名 + 验证方式(旧密码 / 邮件)
SSP 使用 LDAP 协议连接 AD
通过 LDAPS 修改密码
返回结果
⚠️ 注意:
Active Directory 必须使用 LDAPS(636),否则无法修改密码。
四、部署方案选择建议
👉 本文重点使用 Docker 部署(生产推荐)
五、Docker 部署 Self Service Password(生产推荐)
1️⃣ 准备 Docker 环境
适用于 Rocky Linux / CentOS / Ubuntu:
curl -fsSL https://get.docker.com | bash
systemctl enable docker --now
docker version
2️⃣ 创建宿主机目录
mkdir -p /opt/self-service-password/{conf,logs}
cd /opt/self-service-password
3️⃣ 编写核心配置文件
vim conf/config.inc.php
AD / LDAP 核心配置
<?php
$ldap_url = "ldaps://ad.example.com:636";
$ldap_starttls = false;
$ldap_binddn = "CN=ssp-user,OU=ServiceAccounts,DC=example,DC=com";
$ldap_bindpw = "BindUserPassword";
$ldap_base = "DC=example,DC=com";
$ldap_login_attribute = "sAMAccountName";
$ad_mode = true;
$ad_options['force_unlock'] = true;
$ad_options['change_expired_password'] = true;
密码策略示例
$pwd_min_length = 12;
$pwd_complexity = 3;
$pwd_no_reuse = true;
邮件找回(可选)
$mail_enable = true;
$mail_from = 'noreply@example.com';
$mail_host = 'smtp.example.com';
$mail_port = 587;
$mail_username = 'smtp-user';
$mail_password = 'smtp-password';
$mail_secure = 'tls';
4️⃣ 使用 Docker Compose 启动
version: "3.8"
services:
ssp:
image: tiredofit/self-service-password
container_name: self-service-password
ports:
- "8080:80"
volumes:
- ./conf:/var/www/conf
- ./logs:/var/log
restart: unless-stopped
docker compose up -d
访问:
http://服务器IP:8080
六、Nginx + HTTPS(强烈建议)
示例 Nginx 配置
server {
listen 443 ssl;
server_name password.example.com;
ssl_certificate /etc/nginx/ssl/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
七、AD / LDAPS 常见坑(真实踩坑)
❌ 1. LDAPS 连不上
openssl s_client -connect ad.example.com:636
常见原因:
域控未部署证书
防火墙未放行 636
DNS 解析异常
❌ 2. 修改密码提示权限不足
原因:
绑定账号无重置权限
解决:
给绑定账号委派 “重置用户密码” 权限
八、员工最终使用体验
1️⃣ 打开
https://password.example.com
2️⃣ 输入用户名
3️⃣ 验证身份
4️⃣ 修改密码
5️⃣ AD 即时生效
无需 IT 介入,工单量直接归零。
九、总结(运维角度)
Self Service Password + Docker
是目前企业内部 AD 密码自助服务的成熟解决方案之一。
它解决的不是“技术问题”,而是:
运维效率
安全合规
员工体验