PHP自助重置Windows AD域账号密码
![](https://ww4.sinaimg.cn/large/6c6bde05jw1egnzoyyj5pj20b408cjs6.jpg)
公司通过 Windows活动目录 为内部各系统提供 账号、密码认证服务,系统版本为windows server 2012,但是有同事经常有密码遗忘、账号解锁的需求,于是打算弄一个自助服务的系统,对于这种琐碎的事情能自个儿处理。
这里记载搭建过程中遇到的几个坑和需要注意的点,有同样需求的朋友可以参考:
基础:
一、
安装Nginx、PHP、PHP-FPM,需要启用php_ldap扩展,直接yum安装即可。 注:后面用到的开源库,需要php7以上支持,这里可以直接安装php7 二、
AD域修改密码必须通过SSL/TLS链接,SSL基本已经废弃。通过TLS连接AD,需要在AD上安装证书服务,然后导出域服务器的CA证书,并导入到 服务器的 受信任证书办法机构里面。 否则php发起TLS连接的时候会因为证书不受信任而拒绝连接。连接的时候需要使用AD的域名进行链接。 安装配置: 一、安装Adldap2: 使用了,Github上的Adldap2( https://github.com/Adldap2/Adldap2 )这个库,里面封装好了很多现成的类函数,可以直接调用,避免重复工作。 可以通过composer直接安装:composer require adldap2/adldap2 二、windows时间戳到linux时间戳的转换: 通过AD域读取到的时间需要转换成unix时间戳,转换关系: unixtime=windowstime/10000000 - 11644473600 也可以直接调用Adldap 里面的 Utilities::convertWindowsTimeToUnixTime($time) 三、鉴权用户: 可以通过用户的旧密码进行鉴权然后授权相关操作。 但是针对密码遗忘的,可以读取AD登记的用户邮箱、手机号,然后发送短信、邮件验证码进行鉴权。
安装Nginx、PHP、PHP-FPM,需要启用php_ldap扩展,直接yum安装即可。 注:后面用到的开源库,需要php7以上支持,这里可以直接安装php7 二、
AD域修改密码必须通过SSL/TLS链接,SSL基本已经废弃。通过TLS连接AD,需要在AD上安装证书服务,然后导出域服务器的CA证书,并导入到 服务器的 受信任证书办法机构里面。 否则php发起TLS连接的时候会因为证书不受信任而拒绝连接。连接的时候需要使用AD的域名进行链接。 安装配置: 一、安装Adldap2: 使用了,Github上的Adldap2( https://github.com/Adldap2/Adldap2 )这个库,里面封装好了很多现成的类函数,可以直接调用,避免重复工作。 可以通过composer直接安装:composer require adldap2/adldap2 二、windows时间戳到linux时间戳的转换: 通过AD域读取到的时间需要转换成unix时间戳,转换关系: unixtime=windowstime/10000000 - 11644473600 也可以直接调用Adldap 里面的 Utilities::convertWindowsTimeToUnixTime($time) 三、鉴权用户: 可以通过用户的旧密码进行鉴权然后授权相关操作。 但是针对密码遗忘的,可以读取AD登记的用户邮箱、手机号,然后发送短信、邮件验证码进行鉴权。