企业微信-AD同步工具--基于ldaps协议

项目介绍

本工具用于实现企业微信组织架构与Active Directory (AD)域之间的自动同步,帮助企业维护统一的用户目录和组织结构。通过定期同步,可以确保企业微信中的部门和用户信息与AD域保持一致。

注:基于ldaps协议同步修改,注意启用AD域控的ldaps协议,具体可以AI或者百度开启教程;源码和编译好的程序包在附件中,请根据文档注意生成config.ini文件。

核心特性

  • 安全可靠:采用LDAPS (LDAP over SSL)协议进行AD域通信,确保数据传输安全
  • 智能容错:内置continue-on-error机制,单个操作失败不影响整体同步
  • 批量优化:使用批量操作减少网络往返,显著提升同步性能
  • 增量同步:支持仅同步变更的用户,大幅提升效率
  • 详细审计:自动生成操作日志(CSV)和验证报告(TXT)

主要功能

  • 自动同步企业微信组织架构到AD域:将企业微信的部门结构自动同步到AD域中的OU结构
  • 用户账户自动管理:自动创建、更新和禁用AD用户账户
  • 组成员批量管理:批量处理用户组分配,提升同步效率
  • 定时任务:支持按计划定时执行同步任务
  • 实时监控:直观的界面展示同步进度和结果统计
  • 日志记录:详细记录同步过程,支持日志过滤和导出
  • 系统托盘运行:可最小化到系统托盘在后台运行
  • 机器人通知:支持同步结果通过企业微信机器人通知
  • 同步取消:支持优雅地中断正在进行的同步任务

系统要求

  • Windows操作系统(Windows 10/11 或 Windows Server 2016/2019/2022)
  • Active Directory域环境,支持LDAPS (端口636)
  • 拥有足够权限的域管理员账户
  • Python 3.9+(如使用打包版本则无需单独安装Python)
  • 企业微信自建应用及管理员权限

安装方式

方式一:使用打包好的可执行文件(推荐)

  1. 下载 dist 目录下的可执行文件
  2. 将以下文件复制到同一目录:
    • WeCom-AD-Sync.exe - GUI主程序
    • WeCom-AD-Sync-Console.exe - 控制台版本(可查看详细输出)
    • Test-LDAP.exe - LDAP连接测试工具
    • Test-WeCom-API.exe - 企业微信API测试工具
    • config.ini - 配置文件
  3. 双击运行 WeCom-AD-Sync.exe

方式二:从源码运行

  1. 克隆或下载此仓库
  2. 创建虚拟环境(可选但推荐):
    python -m venv venv
    venv\Scripts\activate
    
  3. 安装依赖:
    pip install -r requirements.txt
    
  4. 运行程序:
    python wecom_sync_ui.py
    

配置说明

首次运行程序时,需要在配置选项卡中填写以下信息:

企业微信配置

  • 企业ID(CorpID):企业微信管理后台获取的企业ID
  • 应用AgentID:自建应用的AgentID(必填)
  • 应用Secret:自建应用的Secret(必填)
  • 机器人Webhook:用于发送通知的企业微信机器人Webhook地址(可选)

重要提示:本工具使用自建应用方式访问企业微信API,需要:

  1. 在企业微信管理后台创建自建应用
  2. 为应用配置"通讯录读权限"
  3. 将所有需要同步的部门添加到应用的"可见范围"
  4. 将服务器IP地址添加到企业微信"API接口调用许可IP"白名单

LDAP/AD域配置

  • LDAP服务器:AD域控制器的地址,例如 dc.example.com192.168.1.10
  • 域名:AD域的完整域名,例如 example.com
  • 用户名:具有管理权限的域账户,格式:DOMAIN\username
  • 密码:域账户密码
  • 使用SSL:是否使用LDAPS(强烈推荐,选择"是")
  • 端口:LDAP端口,LDAPS默认为636,非SSL为389

安全建议:强烈建议启用SSL(LDAPS)以确保数据传输安全

AD基础配置

  • 基础DN:用户OU的基础DN,例如 OU=Users,DC=example,DC=com
  • 排除的用户:不需要同步的系统账户,用逗号分隔,例如 admin,administrator,guest

计划任务配置

  • 每日执行时间:设置每天定时执行同步的时间(格式:HH:MM)
  • 执行间隔:设置定时执行的间隔时间(分钟)
  • 最大重试次数:同步失败时的最大重试次数

高级配置

可以通过编辑 config.ini 文件进行更多高级配置:

[WeChat]
CorpID = 企业微信ID
AgentID = 自建应用AgentID
CorpSecret = 自建应用Secret

[WeChatBot]
WebhookUrl = 机器人webhook地址

[LDAP]
Server = dc.example.com
Domain = example.com
Username = DOMAIN\admin
Password = your_password
UseSSL = True
Port = 636

[AD]
BaseDN = OU=Users,DC=example,DC=com
ExcludeUsers = admin,administrator,guest,krbtgt

[Account]
DefaultPassword = default password
ForceChangePassword = true

[Schedule]
Time = 03:00
Interval = 1440
MaxRetries = 3

[Sync]
IncrementalSync = true
ContinueOnError = true
BatchSize = 50

[Logging]
Level = INFO
DetailedLogging = true
KeepLogsDays = 30

使用说明

初次使用

  1. 配置企业微信

    • 在企业微信管理后台创建自建应用
    • 获取 CorpID、AgentID 和 Secret
    • 配置应用可见范围(包含需要同步的所有部门)
    • 添加服务器IP到API白名单
  2. 配置LDAP连接

    • 使用 Test-LDAP.exe 测试LDAP连接
    • 确保能够成功连接到域控制器
  3. 配置同步工具

    • 启动 WeCom-AD-Sync.exe
    • 在配置选项卡填写所有必要信息
    • 点击"保存配置"
  4. 测试同步

    • 使用 Test-WeCom-API.exe 测试企业微信API连接
    • 点击"立即同步"执行首次同步
    • 观察日志输出,确认同步正常

日常使用

  1. 程序启动后会自动根据配置的计划任务定时同步
  2. 可以随时点击"立即同步"按钮手动触发同步
  3. 同步过程中可以在状态页面查看进度和统计
  4. 支持点击"停止同步"按钮取消正在进行的同步
  5. 使用日志过滤功能筛选特定级别或关键词的日志
  6. 支持导出或复制日志以便分析
  7. 程序可以最小化到系统托盘,右键点击托盘图标查看菜单

查看同步结果

同步完成后会在 logs 目录生成以下文件:

  • ad_wecom_sync_YYYYMMDD_HHMMSS.log - 简要日志
  • ad_wecom_sync_detailed_YYYYMMDD_HHMMSS.log - 详细日志
  • sync_operations_YYYYMMDD_HHMMSS.csv - 操作记录(CSV格式)
  • sync_validation_YYYYMMDD_HHMMSS.txt - 验证报告

注意事项

安全相关

  • 强烈建议启用LDAPS (SSL):确保AD通信安全,防止密码泄露
  • 妥善保管配置文件config.ini包含敏感信息,建议设置文件访问权限
  • 使用强密码:为新建用户设置符合企业安全策略的强密码
  • 最小权限原则:域账户仅需要OU和用户管理权限,避免使用域管理员账户

同步相关

  • 首次同步时间:首次同步可能需要较长时间,尤其是组织结构复杂时
  • 测试环境验证:建议先在测试环境验证配置,确认无误后再在生产环境使用
  • 禁用而非删除:企业微信中删除的用户在AD中会被禁用而非删除,防止数据丢失
  • 多部门用户:用户属于多个部门时,会被放置在主部门OU中,并加入所有部门对应的安全组
  • 增量同步:启用增量同步后,仅处理有变化的用户,显著提升效率

维护相关

  • 定期清理日志:同步过程会创建日志文件,建议定期清理旧日志
  • 监控同步状态:关注企业微信机器人通知,及时发现同步异常
  • IP白名单更新:服务器IP变更时,需同步更新企业微信API白名单

常见问题

Q: 提示"unsupported hash type MD4"错误?
A: 这是Python 3.9+版本的NTLM认证兼容性问题。程序已内置自动回退到SIMPLE认证,无需手动处理。

Q: 提示"错误码=60020, not allow to access from your ip"?
A: 需要将服务器IP添加到企业微信管理后台的"API接口调用许可IP"白名单中。

Q: 提示"错误码=60011, no privilege to access/modify contact/party"?
A: 自建应用缺少通讯录读权限,需要在应用配置中开启。

Q: 提示"department not found"或部门不在可见范围?
A: 需要将所有需要同步的部门添加到自建应用的"可见范围"中。

Q: LDAP连接失败?
A: 请检查:

  • LDAP服务器地址是否正确(域控制器地址)
  • 端口是否正确(LDAPS: 636, LDAP: 389)
  • 域控制器是否启用了LDAPS服务
  • 防火墙是否允许相应端口
  • 域账户用户名格式是否正确(DOMAIN\username

Q: 同步过程中出现网络错误怎么办?
A: 程序内置了重试机制和continue-on-error功能,会自动尝试重新连接。如果持续失败,请检查网络连接和防火墙设置。

Q: 如何排除特定用户不被同步?
A: 在配置文件的 [AD] 部分的 ExcludeUsers 中添加要排除的用户名,用逗号分隔。

Q: 是否支持将AD域信息同步到企业微信?
A: 当前版本仅支持从企业微信同步到AD域,不支持反向同步。

Q: 如何修改新创建用户的默认密码?
A: 在配置文件的 [Account] 部分修改 DefaultPassword 值。

Q: 如何启用增量同步?
A: 在配置文件的 [Sync] 部分设置 IncrementalSync = true

Q: 程序运行时没有反应或闪退?
A: 使用控制台版本 WeCom-AD-Sync-Console.exe 查看详细错误信息。

技术架构

  • 界面框架:PyQt5
  • LDAP库:ldap3(支持LDAPS)
  • HTTP库:requests(企业微信API调用)
  • 任务调度:schedule
  • 打包工具:PyInstaller

更新日志

v2.0.0 (2025-10-11)

  • 🚀 从PowerShell迁移到LDAPS,显著提升性能和安全性
  • 🔐 支持NTLM和SIMPLE认证,自动回退机制
  • 🏢 从通讯录API迁移到自建应用API
  • ⚡ 批量操作优化,减少网络往返
  • 📊 增量同步支持,仅处理变更用户
  • 🛡️ Continue-on-error机制,提高容错能力
  • 📝 自动生成操作日志(CSV)和验证报告(TXT)
  • 🎯 支持优雅取消同步任务
  • 🔍 配置验证和连接测试
  • 📦 独立可执行文件打包

技术支持

如遇到问题,请:

  1. 查看详细日志文件(logs目录)
  2. 使用测试工具验证连接(Test-LDAP.exe, Test-WeCom-API.exe
  3. 使用控制台版本查看详细错误(WeCom-AD-Sync-Console.exe
  4. 联系系统管理员或技术支持

免责声明

本工具仅用于辅助企业管理,使用前请确保已经获得相关授权和权限。使用本工具导致的任何数据问题,本工具开发者不承担责任。建议在生产环境使用前,先在测试环境充分验证。


© 2025 大刘讲IT

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值