通过企业微信自助重置 AD 域用户密码

AD Password Self Service 是 @capricornxl 基于 Python + Django 创立的一个密码自助平台,用户通过钉钉或者企业微信授权,可以实现自助重置、解锁 AD 域用户密码。

项目地址:https://github.com/capricornxl/ad-password-self-service

准备工作

本文的测试环境为 CentOS 7.8 操作系统,并且已搭建好 AD 域相关服务。另外你还需要一台带公网 IP 地址的服务器,以通过 API 接口获取企业微信数据。

如果配置过程中遇到项目文件无效,可尝试下载共享链接中的文件。(非必选)

企业微信创建自建应用

1、使用企业微信管理员账号,点击此处 登录到管理后台。

2、选择「我的企业」>「企业信息」,在页面底部找到并记录下「企业 ID」。

通过企业微信自助重置 AD 域用户密码

3、接着选择「应用管理」>「应用」>「自建」,点击「创建应用」。

通过企业微信自助重置 AD 域用户密码

4、上传应用 Logo,并填写应用名称等信息,点击「创建应用」。

通过企业微信自助重置 AD 域用户密码

5、创建完成后进入应用,可以看到 AgentId、Secret 等信息,这些信息在使用企业微信 API 时会用到,选择「查看」Secret。

通过企业微信自助重置 AD 域用户密码

6、应用 Secret 会发送到管理员的消息列表中,请勿向第三方人员泄露密钥信息。

通过企业微信自助重置 AD 域用户密码

7、接着设置应用主页,应用类型选择「网页」,输入网页地址。

通过企业微信自助重置 AD 域用户密码
通过企业微信自助重置 AD 域用户密码

8、找到「开发者接口」下的「网页授权及 JS-SDK」,选择「设置可信域名」。

通过企业微信自助重置 AD 域用户密码

9、在「可信域名」下填写服务器的域名,并完成域名的归属认证。

通过企业微信自助重置 AD 域用户密码

10、接着设置「企业微信授权登录」,在「Web 网页」类型下设置「授权回调域」。

通过企业微信自助重置 AD 域用户密码
通过企业微信自助重置 AD 域用户密码

11、接着为应用配置一个「企业可信 IP」,输入服务器的公网 IP 地址。只有设置的服务器 IP 地址可以通过接口获取企业数据。

通过企业微信自助重置 AD 域用户密码

服务器系统基础配置

1、进入 CentOS 服务器,首先需要禁用 SELINUX 服务,输入以下命令编辑配置文件。

vi /etc/sysconfig/selinux

2、将 SELINUX=enforcing 指令更改为 SELINUX=disabled,保存退出。

通过企业微信自助重置 AD 域用户密码

3、修改成功后重启系统。

reboot

4、安装以下所需组件。

yum -y install wget
yum -y install unzip
yum -y install psmisc 

5、CentOS 7.8 的默认 Python 版本为 2.7.5,需要将其升级到 3.8.2 版本。操作步骤可前往 https://blog.kobin.cn/blog/system/s2/2663.html 进行查看。

配置密码自助平台

1、将项目文件下载到服务器并解压。

cd /opt/
wget https://github.com/capricornxl/ad-password-self-service/archive/refs/heads/master.zip
unzip master.zip

# 这里我将文件夹重命名为对应的版本号,可根据实际情况进行调整
mv ad-password-self-service-master /opt/ad-password-self-service-1.0.6.1

2、使用 pip 安装依赖项,项目目录下的 requestment 文件里记录了所依赖的相关 Python 模块。

cd /opt/ad-password-self-service-1.0.6.1
pip install -r requirement

3、等待所有模块安装完成之后,修改配置文件 local_settings.py 的参数。

vi conf/local_settings.py

4、填写 AD 服务器的配置信息。

通过企业微信自助重置 AD 域用户密码

5、验证类型输入「WEWORK」,补充企业微信的「企业 ID」、「AgentId」和「Secret」信息。

通过企业微信自助重置 AD 域用户密码

6、填写「域名」和「站点标题」,并设置一个 Redis 服务的密码,完成后保存退出。

通过企业微信自助重置 AD 域用户密码

搭建 Redis 服务

参考文章:https://blog.csdn.net/qq_39187538/article/details/126485922

1、获取 Redis 安装包并解压。

cd /opt/
wget https://download.redis.io/releases/redis-7.0.2.tar.gz
tar -zxvf redis-7.0.2.tar.gz

2、 进入解压后的 Redis 目录,使用 make 命令进行编译,并执行安装。

cd redis-7.0.2/ && make
cd src/ && make install
通过企业微信自助重置 AD 域用户密码

3、安装完成后,编辑 redis.conf 配置文件。

vi /opt/redis-7.0.2/redis.conf

4、设置允许 Redis 服务在后台运行。

通过企业微信自助重置 AD 域用户密码

5、Redis 服务默认无密码,需要开启密码保护。此处设置的密码和 local_settings.py 中的密码保持一致。

通过企业微信自助重置 AD 域用户密码

6、设置允许访问 Redis 服务的 IP 地址。

通过企业微信自助重置 AD 域用户密码

7、配置文件修改完成后,保存退出。

8、在系统服务目录里创建 redis.service 文件。

vi /usr/lib/systemd/system/redis.service

9、在文件中添加以下内容,保存退出。

[Unit]
Description=redis-server
After=network.target

[Service]
Type=forking

ExecStart=/usr/local/bin/redis-server /opt/redis-7.0.2/redis.conf
PrivateTmp=true

[Install]
WantedBy=multi-user.target

10、重载系统服务,并启动 Redis 服务。

systemctl daemon-reload
systemctl enable redis
systemctl start redis

配置 uwsgi 服务

1、修改 uwsig.ini 配置文件。

vi /opt/ad-password-self-service-1.0.6.1/uwsgi.ini 

2、设置项目目录的所在路径,以及线程数,完成后保存退出。

通过企业微信自助重置 AD 域用户密码

3、编辑 uwsgiserver 文件,设置项目目录的所在路径,以及 uwsgi 服务的所在路径,完成后保存退出。

vi /opt/ad-password-self-service-1.0.6.1/uwsgiserver

# 查看 uwsgi 的安装位置
whereis uwsgi
通过企业微信自助重置 AD 域用户密码

4、将项目目录下的 uwsgiserver 复制到 /etc/init.d/,给予执行权限。

cp /opt/ad-password-self-service-1.0.6.1/uwsgiserver /etc/init.d/uwsgiserver
chmod +x /etc/init.d/uwsgiserver

5、在系统服务目录里创建 uwsgiserver.service 文件。

vi /usr/lib/systemd/system/uwsgiserver.service

6、在文件中添加以下内容,保存退出。

[Unit]
Description=uwsgiserver
After=network.target 

[Service] 
Type=forking 
ExecStart=/etc/init.d/uwsgiserver start
ExecReload=/etc/init.d/uwsgiserver restart
ExecStop=/etc/init.d/uwsgiserver stop
PrivateTmp=true 

[Install] 
WantedBy=multi-user.target

7、重载系统服务,并启动 uwsgiserver 服务。

systemctl daemon-reload
systemctl enable uwsgiserver
systemctl start uwsgiserver

搭建 Nginx 服务

参考文章:https://blog.csdn.net/qq_33381971/article/details/123328191

1、安装所需依赖项。

yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel

2、获取 Nginx 安装包并解压。

cd /opt/
wget -c https://nginx.org/download/nginx-1.18.0.tar.gz
tar -zxvf nginx-1.18.0.tar.gz

3、进入解压后的 Nginx 目录,执行安装。

cd nginx-1.18.0/
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make && make install

4、编辑 Nginx 配置文件,修改完成后保存退出。

vi /usr/local/nginx/conf/nginx.conf

# 在 http 中添加以下命令
include vhosts/*.conf
通过企业微信自助重置 AD 域用户密码

5、创建虚拟主机文件夹和证书文件夹,并将 SSL 加密证书上传到该路径下。

mkdir -p /usr/local/nginx/conf/vhosts/cert/ad-password-self-service

6、创建虚拟主机配置文件。

vi /usr/local/nginx/conf/vhosts/ad-password-self-service.conf

7、添加以下内容后,保存退出。

server {
    listen 80;
    listen 443 ssl;
    server_name *****.com;   # 此处输入站点域名

    # 强制跳转HTTPS
    if ($server_port !~ 443){
        rewrite ^(/.*)$ https://$host$1 permanent;
    }

    # 证书所在路径
    ssl_certificate        /usr/local/nginx/conf/vhosts/cert/ad-password-self-service/*****.pem;
    ssl_certificate_key    /usr/local/nginx/conf/vhosts/cert/ad-password-self-service/*****.key;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_session_timeout 10m;
    ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
    ssl_prefer_server_ciphers on;

    location / {
        proxy_pass         http://192.168.*.*:8443;   # 此处输入公网 IP 地址和 uwsgi 服务端口
        proxy_set_header   Host              $host;
        proxy_set_header   X-Real-IP         $remote_addr;
        proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
    }

    access_log  off;
}

8、在系统服务目录里创建 nginx.service 文件。

vi /usr/lib/systemd/system/nginx.service

9、添加以下内容后,保存退出。

[Unit]
Description=nginx service
After=network.target 
   
[Service] 
Type=forking 
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true 
   
[Install] 
WantedBy=multi-user.target

10、重载系统服务,并启动 Nginx 服务。

systemctl daemon-reload
systemctl enable nginx
systemctl start nginx

应用上线测试

1、放行防火墙端口。

firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=8443/tcp
firewall-cmd --reload

2、检查服务端口占用。

yum -y install net-tools
netstat -tunlp
通过企业微信自助重置 AD 域用户密码

3、打开企业微信客户端,点击工作台,选择我们创建的应用。软件提示信息授权,点击同意。

通过企业微信自助重置 AD 域用户密码
通过企业微信自助重置 AD 域用户密码

4、成功进入应用页面,尝试进行密码重置操作。服务搭建完成。

通过企业微信自助重置 AD 域用户密码
本文为原创文章,著作权归作者所有:来自「KOBIN 技术随笔」作者的原创作品,转载请标明出处。
通过企业微信自助重置 AD 域用户密码
https://blog.kobin.cn/blog/program/p3/2671.html
(1)

相关文章

发表评论

您的电子邮箱地址不会被公开。

CAPTCHAis initialing...

评论列表(1条)

  • nico.li 2023/04/20 16:36

    想部署私人chatgpt吗?可以参考我这篇教程https://tech.sharespace.top/myself-chatgpt-web/