在企业环境中,LDAP(轻量级目录访问协议)被广泛用于集中管理用户身份信息。员工密码变更作为日常操作,需要一个便捷安全的方式来实现。使用 PHP 开发一个 Web 界面的 LDAP 密码修改工具,可以让员工自主完成密码修改,减轻 IT 部门的负担。
开发思路,个人浅见,如有巧合,以你为准
一、技术实现
环境准备
- CentOS 7
- Apache
- PHP 7.0+,启用 LDAP 扩展
- MySQL 5.5+
功能设计
1、密码修改
在 PHP 中,可以使用 LDAP 扩展提供的函数来与 LDAP 服务器交互,实现密码修改功能。
PHP-LDAP扩展函数:https://www.php.net/manual/zh/ref.ldap.php ldap_bind函数尝试绑定以验证用户旧密码;ldap_get_entries函数查询LDAP用户信息;ldap_modify函数操作直接修改 userPassword 属性实现密码修改;2、邮件发送
- 使用
PHPMailer函数包。直接用PHP就可以发送,无需搭建额外的Email服务。3、前端样式
- 使用
WeUI样式库 - 使用
Layui样式库
https://weui.io/
WeUI 是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信内网页和微信小程序量身设计,令用户的使用感知更加统一。技术架构
1、前端使用WEUI样式/Layui样式
2、后端使用PHP语言开发
3、数据库使用MySQL
技术方案
用户记得旧密码:
- 使用旧密码验证修改密码,连接到LDAP使用ldap_bind验证用户旧密码是否正确,如果正确,则使用ldap_modify执行修改;
- 修改完成后,将日志写入到MySQL数据库,发送邮件通知用户;
用户不记得旧密码:
- 使用邮箱找回密码,提交邮箱后,后端生成唯一token并存储到数据库,将带有token的链接使用PHPMailer发送邮件给用户;
- 用户点击邮件链接后,先验证code是否有效,无效则跳转到无效提示页面,有效则携带相关用户参数跳转到密码填写页面;
- 用户提交新密码后,连接到MySQL数据库,验证用户名、token;
- 验证通过后,连接LDAP,使用ldap_modify执行密码修改;
- 修改完成后,update数据库,将token标记为无效,将日志写入到MySQL数据库,发送邮件通知用户;
二、 核心功能模块
提供两种修改密码方式修改LDAP密码:
1、旧密码验证修改:用户请求 → 旧密码验证 → 密码修改 → 日志记录
2、通过邮箱找回密码:用户请求 → 邮箱验证 → 验证码生成 → 密码修改 → 日志记录
三、 技术细节设计
1、 前端
- WEUI版,匹配企业微信界面,可嵌入到企微工作台应用;
- Layui版,PC使用体验更好;
- 输入框实时验证,验证密码强度,邮箱有效性;
- 按钮实时验证,表单填写无误后方可提交;
2、 后端
- PHPMailer邮件发送;
- 邮件验证链接时效性验证;
- 修改日志记录;
3、目录结构

四、界面展示
WEUI版

Layui版

邮件界面

五、优化方向
- 前端体验优化
● 密码强度实时提示
● 验证码倒计时功能 - 安全增强
● 密码修改历史记录
● 异常请求检测 - 扩展能力
● 对接企业微信身份验证
● 对接企业微信通知
● 多LDAP服务器支持
项目GitHub地址:
WEUI版本:https://github.com/WannaCryZ/ldap-password-reset.git
LAYUI版本:https://github.com/WannaCryZ/ldap-password-reset-layui.git
注:实际部署需配置 config.php 中的LDAP连接参数和数据库凭证