当前位置: 首页 > news >正文

51CTO_开源的密码自助平台Self Service Password

开源的密码自助平台Self Service Password

开源的密码自助平台 Self Service Password封面图.png

阅读原文

建议阅读原文,始终查看最新文档版本,获得最佳阅读体验:《开源的密码自助平台Self Service Password》

https://docs.dingtalk.com/i/nodes/gpG2NdyVX3Z65nZ2sydD1x1jWMwvDqPk

引言

企业环境中,一般都是将各个系统的账号统一对接到活动目录中,方便管理,用户也不用记住一堆用户名和密码,修改密码也比较方便,很多企业都会自己部署密码自助修改平台,方便用户自行重置密码。我在github上发现了一个开源项目,可以实现自助修改密码,操作简单,页面支持多语言,在生产环境中应用也是完全OK的,我写了一盘文章介绍这个开源项目,并详细说明了如何利用docker快速部署,以及验证。

LTB简介

LTB(LDAP Tool Box)旗下的 Self Service Password 是一个用于 LDAP / Active Directory 的自助密码管理 Web 应用。🚀
用户可以通过这个系统自己修改密码、重置密码、解锁账户等,而无需 IT 人员干预,大幅减轻密码相关运维负担。该项目在 GitHub 上以 MIT/GPL 类开源许可证发布,并提供 Docker 镜像方便部署。

核心特性

  • 支持标准 LDAPv3 目录服务(如 OpenLDAP、389 Directory、ApacheDS),同时也兼容 Active Directory 模式。

  • 本地密码策略支持:密码最小/最大长度、禁止字符、自定义复杂度规则、禁止重用历史密码等。

  • 提供多种重置方式:邮件令牌、中途安全问题、SMS(通过外部服务接口)等。

  • 带有验证码机制(防止自动脚本滥用)、邮件通知、钩子脚本(允许在密码变更前后插入自定义逻辑)。

  • 提供官方 Docker 镜像,部署方式灵活:从源码、打包、Docker 均可使用。

优点与适用场景(可在你的文章中强调)

  • 部署轻量、运维成本低 — 只需 PHP + LDAP 扩展环境,借助 Docker 可以快速上线。

  • 可扩展性强 — 钩子机制、外部服务接口(如邮件、SMS)、多语言支持都具备。

  • 安全性可控 — 支持 SSL / LDAPS、证书验证、密码策略、禁用账户检查等。

  • 用户友好 — 对终端用户界面直观,减少忘记密码带来的支持工单量。

相似的开源项目

pwm-project/pwm: pwm

github网址

https://github.com/ltb-project/self-service-password

官方文档

LDAP Tool Box Self Service Password documentation — LDAP Tool Box Self Service Password documentation

用docker快速部署

官方文档:Installation — LDAP Tool Box Self Service Password documentation

管理AD证书

文档:LDAP connection — LDAP Tool Box Self Service Password documentation

https://ltb-project.org/documentation/active_directory_certificates.html

如果要通过LTB来更改域账号的密码,则必须要通过LDAPS连接到AD,也就是要用到证书。其实这个证书就是CA的根证书,所以可以通过任意一台加入域的计算机导出根证书。

首先得有证书颁发机构,如果还没有安装,可以参考我写的这篇文章:《自建bitwarden密码管理服务器》

然后随便找一台加入域的计算机,运行窗口中输入mmc,然后回车进入Microsoft控制台

image.png

添加/删除管理单元

image.pngimage.png

image.png

我的环境中,证书颁发机构是直接部署在域控制器上的,下图红色箭头所示的就是证书颁发机构的根CA,我们就是要导出这个root ca

image.png

image.png

image.png

image.pngimage.png

image.pngimage.png

如此,便成功导出了root ca。

image.png

将到处的root ca文件放到服务器的/home/ubuntu目录中,并复制到/etc/ssl/certs/目录下。下文的docker要用到(通过卷映射)

创建配置文件

先创建一个目录,配置文件放到这个目录里

mkdir ltb
cd ltb

下面是我使用的配置文件

参考文档:LDAP connection — LDAP Tool Box Self Service Password documentation

<?php
// ======================================================
// Self Service Password (SSP) 配置文件
// 环境:Microsoft Active Directory + LDAPS
// 作者:tornadoami
// 网站:https://docs.dingtalk.com/i/nodes/gpG2NdyVX3Z65nZ2sydD1x1jWMwvDqPk
// ======================================================// 🔐 SSP 内部加密密钥(用于临时令牌、验证码等加密)
//   可自定义为复杂字符串,生产环境务必修改
$keyphrase = "mysecret";// 🧩 调试模式
//   true:启用详细日志(调试阶段用)
//   false:生产环境建议关闭
$debug = true;// 🏢 启用 Active Directory 模式
$ad_mode = true;// 👤 LDAP 用户过滤器
//   - sAMAccountName:登录用户名属性
//   - userAccountControl:...:排除被禁用账户
$ldap_filter = "(&(objectClass=user)(sAMAccountName={login})(!(userAccountControl:1.2.840.113556.1.4.803:=2)))";// ⚙️ AD 特定选项
$ad_options['force_unlock'] = true;                // 密码修改时自动解锁账户
$ad_options['change_expired_password'] = true;     // 支持修改过期密码// 🌐 LDAP 服务器地址(LDAPS 模式)
// 注意:LDAP的url,不应使用ip地址,而是应该用服务器的计算机全名,这是因为证书中的san通常都是计算机名而不是ip地址,如果用ip地址,则会导致绑定失败。
$ldap_url = "ldaps://dc-t.dltornado2.com";// 🧷 禁用 StartTLS(LDAPS 已使用 SSL)
$ldap_starttls = false;// 🧾 设定 LDAP SSL 安全参数(通过 putenv 注入)
//   demand = 必须验证服务器证书(生产推荐)
//   allow  = 允许但不强制验证(测试时可用)
putenv("LDAPTLS_REQCERT=demand");// 📜 指定 AD 根证书路径(容器挂载时定义)
//   注意:必须与 docker run 中的挂载路径一致
putenv("LDAPTLS_CACERT=/etc/ssl/certs/dltornado2.com-root-ca.cer");// 🔑 绑定账户(具有 LDAP 查询权限)
//   建议使用仅限查询权限的服务账户
$ldap_binddn = "CN=it.django,OU=SpecialAccount,OU=myse,DC=dltornado2,DC=com";
$ldap_bindpw = "<此处要输入域用户it.django的密码>";// 🗂️ LDAP 搜索起始点(用户所在 OU)
$ldap_base = "OU=myse,DC=dltornado2,DC=com";// 👥 登录使用的属性(AD 中通常是 sAMAccountName)
$ldap_login_attribute = "sAMAccountName";// ======================================================
// ✉️ 邮件通知功能(可选)
// ======================================================
// 如果需要在用户密码修改后发送确认邮件,请启用以下配置$mail_attribute = "mail";          // AD 邮箱属性字段
$mail_from = "noreply@dltornado2.com";
$mail_from_name = "密码自助系统";
$mail_signature = "此邮件由系统自动发送,请勿回复。";$mail_smtp_server = "smtp.dltornado2.com";
$mail_smtp_port = 587;
$mail_smtp_auth = true;
$mail_smtp_user = "noreply@dltornado2.com";
$mail_smtp_password = "你的SMTP密码";
$mail_tls = true;// ======================================================
// ✅ 结束
// ======================================================
?>

运行容器

官方提供了容器镜像

注意:LDAP的url,不应使用ip地址,而是应该用服务器的计算机全名,这是因为证书中的san通常都是计算机名而不是ip地址,如果用ip地址,则会导致绑定失败。

docker run -d \-p 8001:80 \-v /home/ubuntu/ltb/:/var/www/conf/ \-v /home/ubuntu/dltornado2.com-root-ca.cer:/etc/ssl/certs/dltornado2.com-root-ca.cer:ro \-e LDAP_URL="ldaps://dc-t.dltornado2.com" \-e LDAP_TLS_CACERTFILE="/etc/ssl/certs/dltornado2.com-root-ca.cer" \-e LDAP_TLS_REQCERT="demand" \docker.io/ltbproject/self-service-password:latest

image.png

验证

image.png

我随便选了一个用户,测试能否正常修改密码

image.png

密码修改成功

image.png

image.png

验证

[外链图片转存中…(img-dcKsBvVf-1761556967594)]

我随便选了一个用户,测试能否正常修改密码

[外链图片转存中…(img-UWKL5OqB-1761556967594)]

密码修改成功

[外链图片转存中…(img-YxbG5q6w-1761556967594)]

[外链图片转存中…(img-l6mU15Cy-1761556967594)]

梦幻智能logo-01(无水印).png

http://www.dtcms.com/a/536706.html

相关文章:

  • DB-GPT 0.7.4 版本更新|开源蚂蚁集团Text2SQL数据集:Falcon、支持GLM-4.5大模型
  • 网站基本维护安庆建设网站
  • 【Android Audio】安卓音频中Surround mode切换流程
  • 2026版基于python的旅游景点推荐系统
  • 直白理解 NTRU 公钥加密系统
  • 如何在物联网产品应用串行psram
  • 1.2、实战准备:AI安全研究环境搭建与工具链
  • 鞋材加工东莞网站建设山西网页制作
  • 网站建设基本流程包括哪几个步骤工装设计方案网站
  • 苏州手机网站建设报价logo设计网站平台
  • 数据驱动AI落地:交通运维与仓储管理的智能化破局方法论与技术实践
  • 多功能雷达行为辨识与预测技术研究
  • Rust面试题及详细答案120道(115-120)-- 对比其他语言
  • LeetCode算法学习之移除元素
  • allWebPlugin中间件IE特别版发布
  • 前端八股之HTTP
  • rust笔记
  • 西安招聘网站建设多多鱼网页设计代码
  • 中国团队开发出有效的钙钛矿电池缓冲液
  • 使用mybatis-plus,实现将排序时,字段值为NULL的数据排在最后
  • Websocket两台服务器之间的通信
  • 网站技能培训班有哪些做网站用什么软件ps字体
  • 摩根大通将支持比特币和以太坊作为抵押品
  • 绿园区住房和城乡建设局网站c2c平台是什么意思
  • Web前端开发:用JavaScript阻止表单提交
  • 从 TCP 粘包到线程池:一起了解用 QRunnable 重构 Qt 高并发网络通信架构
  • Blender入门学习07 - 形态键
  • 网站推广常用方法包括二手车 东莞网站建设
  • LUMI 大模型分拣机器人应用 和 Lumi视觉标定
  • 开源项目分享:Gitee热榜项目 2025-10-27 日榜