# WeCom Server 企业微信验证服务器 - 基于 Rust 和 Axum 框架实现的 Web 服务器,用于企业微信应用的服务器验证。 ## 功能特性 - 基于 Axum 0.7 框架的高性能 Web 服务器 - 企业微信服务器验证接口 - SHA1 签名验证 - 异步处理(基于 Tokio) ## 技术栈 - **Rust** 2021 Edition - **Axum** 0.7 - Web 框架 - **Tokio** 1.0 - 异步运行时 - **Serde** 1.0 - 序列化/反序列化 - **SHA1** 0.10 - 哈希算法 - **Tracing** 0.1 - 日志追踪 ## 项目结构 ``` WeCom/ ├── Cargo.toml # 项目配置和依赖 ├── README.md # 项目说明文档 └── src/ └── main.rs # 主程序入口 ``` ## 安装 确保已安装 Rust 工具链(建议使用 rustup): ```bash rustup update stable ``` 克隆项目后,进入项目目录: ```bash cd d:\Projects\trunk\JoyD\WeCom ``` ## 运行 开发模式运行: ```bash cargo run ``` 生产构建: ```bash cargo build --release ``` 运行生产版本: ```bash .\target\release\wecom_server.exe ``` ## 配置 在 `src/main.rs` 中修改以下配置: ```rust const WECOM_TOKEN: &str = "mytoken123456"; // 企业微信后台填写的 Token ``` 服务器默认监听地址:`127.0.0.1:8000` ## API 接口 ### GET /wecom 企业微信服务器验证接口。 **请求参数:** - `msg_signature` - 消息签名 - `timestamp` - 时间戳 - `nonce` - 随机数 - `echostr` - 随机字符串 **响应:** - 验证成功:返回 `echostr` 原值 - 验证失败:返回 `"invalid"` ## 验证逻辑 1. 接收企业微信发送的验证请求 2. 将 `token`、`timestamp`、`nonce`、`echostr` 四个参数进行字典序排序 3. 将排序后的字符串拼接成一个字符串 4. 对拼接后的字符串进行 SHA1 哈希 5. 将哈希值与 `msg_signature` 进行比较 6. 验证成功返回 `echostr`,失败返回 `"invalid"` ## 开发 代码检查: ```bash cargo check ``` 代码格式化: ```bash cargo fmt ``` 运行 linter: ```bash cargo clippy ``` 运行测试: ```bash cargo test ``` ## 注意事项 - 确保 Token 与企业微信后台配置一致 - 服务器需要能够被企业微信服务器访问(如需外网访问,请配置端口转发或使用公网 IP) - 生产环境建议使用环境变量管理敏感配置 ## 许可证 本项目仅供学习和参考使用。