# AD域管理系统 **Repository Path**: djsf12/ad-domain-management ## Basic Information - **Project Name**: AD域管理系统 - **Description**: 本项目是一个基于Flask框架开发的Windows Server AD域用户管理系统,专为企业环境中的Active Directory域管理设计。系统提供了完整的用户管理、自助服务和域资源监控功能,兼容Windows Server 2008 R2和Windows Server 2016环境。 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: https://gitee.com/djsf12/ad-domain-management - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-12 - **Last Updated**: 2026-02-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AD域用户管理系统 ## 项目简介 AD域用户管理系统是一个基于Flask开发的Web应用,专门用于简化Windows Server Active Directory域环境中的用户、计算机、组织单位和组的管理工作。该系统提供了友好的Web界面,使管理员能够高效地进行域账户管理,同时也为终端用户提供了自助服务功能。 ## 核心特性 - **完整的AD域集成**:支持用户、计算机、组织单位、域组的全面管理 - **账户安全策略**:支持密码策略和账户锁定策略配置 - **批量操作支持**:支持用户和计算机的批量管理操作 - **自助服务功能**:用户可自助修改密码和解锁账户 - **密码到期自动提醒**:自动向密码即将到期的用户发送提醒邮件 - **法定假日管理**:集成法定假日管理,支持工作时间智能识别 - **操作审计**:完整的操作日志记录和审计功能 - **定时任务**:支持定时执行域管理任务 ## 技术栈 ### 后端技术 - **Web框架**: Flask 1.1.4 - **数据库ORM**: SQLAlchemy 1.4.37 - **表单处理**: Flask-WTF 0.15.1 - **数据库迁移**: Alembic 1.7.7 - **定时任务**: APScheduler 3.9.1 ### AD域集成 - **Windows AD集成**: pywin32 300, pyad 0.5.20 - **连接方式**: 支持ADODB、LDAP、WinNT等多种连接方式 - **安全策略**: 完整的密码策略和账户锁定策略管理 ### 安全与加密 - **数据加密**: cryptography 36.0.2 - **密码存储**: PBKDF2HMAC加密算法 - **会话管理**: Flask Session管理 - **邮箱验证**: email-validator 2.3.0 ### 部署与运维 - **部署服务器**: Waitress 2.0.0 - **环境配置**: python-dotenv 0.20.0 - **数据库**: SQLite (默认配置,支持多环境) - **日志管理**: 完整的日志记录和轮转机制 ### 前端技术 - **模板引擎**: Jinja2 2.11.3 - **UI框架**: Bootstrap + AdminLTE - **图标库**: Font Awesome - **表单验证**: 客户端和服务端双重验证 ## 功能特性 ### 管理员功能 #### 1. AD域用户管理 - 用户列表查询与筛选(支持按姓名、用户名、状态等条件) - 用户创建、编辑、禁用、启用 - 密码重置与账户解锁 - 用户组织单位移动 - 用户信息批量操作(批量禁用、启用、移动等) #### 2. 组织单位管理 - 组织单位列表展示 - 组织单位创建、编辑、删除 - 组织单位树形结构查看 - 组织单位内对象管理 #### 3. 计算机管理 - 计算机列表查询 - 计算机描述更新 - 计算机组织单位移动 - 计算机批量操作 - 计算机状态监控 #### 4. 域组管理 - 组列表查询 - 组成员添加与移除 - 组信息查看 - 组权限管理 #### 5. 安全策略管理 - **密码策略配置**:最大密码有效期、最小密码长度、密码历史记录 - **账户锁定策略配置**:账户锁定阈值、锁定期间、重置计数器时间 - 安全策略的实时获取和修改 #### 6. 系统配置 - AD域连接配置(支持多种连接方式) - 邮件服务器设置 - 系统参数调整 - 环境配置管理 #### 7. 日志审计 - 操作日志记录(完整记录所有管理操作) - 管理员登录日志查看 - 自助解锁活动报表 - 安全事件追踪和分析 #### 8. 法定假日管理 - 法定假日列表管理 - 假日批量导入和导出 - 工作时间智能识别 - 假日相关业务逻辑处理 #### 9. 密码到期自动提醒 - **邮件提醒配置**:设置密码到期提醒天数、发送时间、周末/节假日发送开关 - **功能总开关**:控制是否启用邮件提醒功能 - **自动发送机制**:每日定时检查并向符合条件的用户发送提醒邮件 - **智能筛选**:自动过滤密码已过期(剩余天数为0)的用户,只发送给有效用户 - **邮件模板**:支持自定义邮件主题和内容 - **发送日志**:记录邮件发送成功/失败记录,便于问题排查 - **0天到期处理**:对于密码已过期的用户,只记录日志,不发送邮件,确保提醒的有效性 ### 用户自助服务 - 密码自助修改 - 账户自助解锁 - 个人信息查看 - 密码过期提醒 ## 系统要求 - Windows Server 2008 R2/2016/2019/2022 - Python 3.6.4 或更高版本(推荐Python 3.8+) - Windows AD域环境 - 4GB 以上内存 - 50GB 以上磁盘空间 ## 安装部署 ### 快速安装(推荐) 1. **环境准备** 根据您的Windows Server版本运行相应的环境配置脚本: - Windows Server 2008 R2: 运行 `1、setup_environment_win 2008r2.bat` - Windows Server 2016: 运行 `1、setup_environment_win2016.bat` 2. **环境检查** 运行环境检查脚本确保所有依赖已正确安装: - Windows Server 2008 R2: 运行 `2、check_environment_win 2008r2.bat` - Windows Server 2016: 运行 `2、check_environment_win2016.bat` 3. **启动系统** 直接运行 `3、域管理运行平台.bat` 启动系统 ### 手动安装步骤 1. **克隆项目** ```bash git clone https://gitee.com/your-username/AdDomainManagement.git cd AdDomainManagement ``` 2. **配置环境变量** 复制环境配置文件并根据实际情况修改: ```bash cp .env.example .env.development # 开发环境 cp .env.example .env.production # 生产环境 ``` 编辑相应的环境配置文件,设置数据库连接、AD域信息等参数。 3. **初始化数据库** ```bash # 创建开发环境数据库 python init_db.py development # 或者创建生产环境数据库 python init_db.py production ``` 4. **安装依赖** ```bash pip install -r requirements.txt ``` 5. **启动服务** **开发环境:** ```bash python run.py --env development ``` **生产环境:** ```bash # 使用内置脚本启动 3、域管理运行平台.bat # 或者手动使用Waitress服务器部署 python deploy/waitress_server.py ``` ### 防火墙配置 生产环境中,可运行 `deploy/configure_firewall.bat` 自动配置防火墙规则,允许Web服务器端口访问。 ## 配置说明 ### AD域连接配置 系统首次启动后,需要在管理界面中设置AD域连接信息: - **AD域控制器地址**:域控制器的IP地址或主机名 - **域管理员账户**:具有Domain Admins权限的账户 - **域管理员密码**:自动加密存储,确保安全性 - **基础DN**:域的Distinguished Name,如DC=example,DC=com ### 安全策略配置 #### 密码策略 - **最大密码有效期**:密码的最长有效天数 - **最小密码长度**:密码的最小字符数要求 - **密码历史记录**:防止重复使用最近N个密码 #### 账户锁定策略 - **账户锁定阈值**:0-999次无效登录尝试(0表示永不锁定) - **账户锁定期间**:0-99999分钟(0表示需要管理员手动解锁) - **重置账户锁定计数器的时间**:0-99999分钟(在指定时间后重置失败计数器) ### 邮件服务器配置 为使用密码重置和提醒功能,需要配置邮件服务器: - **SMTP服务器地址**:邮件服务器地址 - **SMTP端口**:通常为25、465或587 - **发件人邮箱**:系统通知的发件人地址 - **邮箱密码**:自动加密存储 - **是否使用TLS加密**:启用安全连接 ### 密码到期自动提醒配置 - **提醒天数**:设置密码到期前多少天发送提醒邮件 - **发送时间**:设置每日发送邮件的具体时间(24小时制) - **周末发送开关**:控制是否在周六、周日发送提醒邮件 - **节假日发送开关**:控制是否在国家法定假日发送提醒邮件 - **功能总开关**:控制是否启用邮件提醒功能 ## 项目结构 ``` AdDomainManagement/ ├── app/ # 应用主目录 │ ├── __init__.py # 应用工厂,初始化配置 │ ├── admin/ # 管理员模块 │ │ ├── __init__.py # 蓝图初始化 │ │ ├── decorators.py # 装饰器(权限控制、登录验证等) │ │ ├── forms.py # 表单定义(登录、用户管理、配置等) │ │ └── views.py # 视图函数 │ ├── user/ # 用户自助服务模块 │ │ ├── __init__.py # 蓝图初始化 │ │ ├── forms.py # 表单定义(登录、密码修改等) │ │ └── views.py # 视图函数 │ ├── models.py # 数据模型定义(Admin、Oplog、SystemConfig等) │ ├── static/ # 静态资源文件 │ │ ├── admin/ # 管理员界面资源 │ │ ├── base/ # 基础资源 │ │ ├── ckeditor/ # 富文本编辑器 │ │ └── uploads/ # 文件上传目录 │ └── templates/ # HTML模板 │ ├── admin/ # 管理员模板 │ │ ├── admin.html # 基础模板 │ │ ├── menu.html # 导航菜单 │ │ ├── password_policy.html # 密码策略页面 │ │ └── account_lockout_policy.html # 账户锁定策略页面 │ ├── common/ # 通用模板 │ └── user/ # 用户模板 ├── config.py # 配置文件 ├── deploy/ # 部署相关文件 │ ├── configure_firewall.bat # 防火墙配置脚本 │ └── waitress_server.py # Waitress服务器配置 ├── migrations/ # 数据库迁移文件 ├── init_db.py # 数据库初始化脚本 ├── requirements.txt # Python依赖列表 ├── run.py # 应用启动脚本 ├── .env.example # 环境变量示例 ├── .env.development # 开发环境配置 ├── .env.production # 生产环境配置 ├── ad_domain_management.sql # 数据库备份文件 ├── ad_domain_management_dev.db # 开发环境数据库 ├── ad_domain_management_prod.db # 生产环境数据库 ├── 1、setup_environment_win 2008r2.bat # Windows Server 2008 R2环境配置脚本 ├── 1、setup_environment_win2016.bat # Windows Server 2016环境配置脚本 ├── 2、check_environment_win 2008r2.bat # Windows Server 2008 R2环境检查脚本 ├── 2、check_environment_win2016.bat # Windows Server 2016环境检查脚本 └── 3、域管理运行平台.bat # 系统启动脚本 ``` ## 安全注意事项 1. 首次登录系统后请立即修改管理员密码 2. 确保使用具有适当权限的AD账户进行配置 3. 定期备份数据库和配置文件 4. 生产环境中建议使用HTTPS协议 5. 定期审查操作日志,监控异常活动 6. 系统支持账户锁定机制,防止暴力破解 ## 故障排除 ### 常见问题 1. **AD连接失败**:检查域控制器地址、管理员账户和密码是否正确 2. **权限不足**:确保AD账户具有足够的权限执行相应操作 3. **数据库错误**:检查数据库文件权限,确保应用有读写权限 4. **端口占用**:如果端口被占用,可通过 `run.py --port 其他端口` 指定不同端口 5. **模板文件找不到**:确保工作目录正确,应用会自动检测并配置模板路径 ## 许可证 本项目采用[MIT License](https://opensource.org/licenses/MIT)开源许可证。 ## 更新日志 ### 最新版本 v2.0 - **新增功能**:密码到期自动邮件提醒 - 支持自定义密码到期提醒天数 - 支持配置每日发送时间 - 支持周末/节假日发送开关配置 - 支持功能总开关控制 - 自动向密码即将到期的用户发送提醒邮件 - 记录完整的邮件发送日志 - 智能筛选:自动过滤密码已过期(剩余天数为0)的用户 - 0天到期处理:只记录日志,不发送邮件,确保提醒有效性 - **新增功能**:完整的账户锁定策略管理 - 支持账户锁定阈值配置(0-999次无效尝试) - 支持账户锁定期间配置(0-99999分钟) - 支持重置账户锁定计数器时间配置 - 完整的AD域集成和实时策略同步 - **安全增强**: - 增强密码策略管理功能 - 改进账户安全机制 - 优化权限控制和访问验证 - **技术优化**: - 支持多种AD连接方式(ADODB、LDAP、WinNT) - 改进错误处理和用户提示 - 优化界面交互体验 - 更新依赖库版本,提高系统稳定性 - 优化密码到期提醒逻辑,提高邮件发送的准确性 ### 历史版本 v1.0 - 初始版本发布 - 实现AD域用户、计算机、组织单位和组的基本管理功能 - 支持批量操作和定时任务 - 提供用户自助服务功能 - 集成法定假日管理,支持工作时间智能识别 - 增强账户安全,添加锁定机制和验证码功能 ## 贡献指南 ### 在Gitee上贡献代码 1. **Fork项目**:点击项目页面右上角的"Fork"按钮 2. **克隆您的Fork**:`git clone https://gitee.com/您的用户名/AdDomainManagement.git` 3. **创建功能分支**:`git checkout -b feature/您的功能名` 4. **提交更改**:`git commit -am '添加新功能'` 5. **推送分支**:`git push origin feature/您的功能名` 6. **创建Pull Request**:在Gitee项目页面发起Pull Request ### Issue规范 提交Issue时请遵循以下格式: - **Bug报告**:标题使用`[Bug]`前缀,描述中包含环境信息、复现步骤和预期结果 - **功能请求**:标题使用`[Feature]`前缀,描述清晰的功能需求和使用场景 - **问题咨询**:标题使用`[Question]`前缀,详细描述您的疑问 ## 联系信息 如有问题或建议,请在Gitee项目页面提交Issue或联系项目维护者。