【运维开发】PHP开发的LDAP密码修改工具

在企业环境中,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版

WEUI前端页面

Layui版

Layui前端页面

邮件界面

邮件模板

五、优化方向

  1. 前端体验优化
    ● 密码强度实时提示
    ● 验证码倒计时功能
  2. 安全增强
    ● 密码修改历史记录
    ● 异常请求检测
  3. 扩展能力
    ● 对接企业微信身份验证
    ● 对接企业微信通知
    ● 多LDAP服务器支持

项目GitHub地址:

WEUI版本:https://github.com/WannaCryZ/ldap-password-reset.git
LAYUI版本:https://github.com/WannaCryZ/ldap-password-reset-layui.git
注:实际部署需配置 config.php 中的LDAP连接参数和数据库凭证