# LDAP管理系统 一个基于Spring Boot的LDAP目录管理系统,提供用户和组的完整管理功能。 ## 功能特性 ### 用户管理 - ✅ 创建、查看、编辑、删除用户 - ✅ 用户密码管理 - ✅ 用户信息搜索 - ✅ 批量用户操作 - ✅ 用户统计信息 ### 组管理 - ✅ 创建、查看、编辑、删除组 - ✅ 组成员管理(添加/移除用户) - ✅ 批量成员操作 - ✅ 组搜索功能 - ✅ 组统计信息 ### Web界面 - ✅ 现代化的响应式Web UI - ✅ 用户友好的操作界面 - ✅ 实时数据更新 - ✅ 错误处理和用户反馈 ### REST API - ✅ 完整的RESTful API接口 - ✅ 统一的响应格式 - ✅ 全局异常处理 - ✅ API文档和示例 ## 技术栈 - **后端框架**: Spring Boot 3.2.0 - **LDAP集成**: Spring LDAP, Spring Security LDAP - **Web框架**: Spring MVC - **模板引擎**: Thymeleaf - **前端**: Bootstrap 5 + Font Awesome - **构建工具**: Maven - **Java版本**: 17 ## 快速开始 ### 1. 环境要求 - Java 17+ - Maven 3.6+ - LDAP服务器(如OpenLDAP、Active Directory等) ### 2. 配置LDAP连接 编辑 `src/main/resources/application.yml` 文件: ```yaml spring: ldap: urls: ldap://localhost:389 # 您的LDAP服务器地址 base: dc=example,dc=com # LDAP基础DN username: cn=admin,dc=example,dc=com # 管理员DN password: admin # 管理员密码 ldap: config: user-search-base: ou=people # 用户搜索基础 group-search-base: ou=groups # 组搜索基础 # 其他LDAP配置... ``` ### 3. 构建和运行 ```bash # 克隆项目 git clone cd ldap-demo # 构建项目 mvn clean compile # 运行项目 mvn spring-boot:run ``` ### 4. 访问应用 - **Web界面**: http://localhost:8080/ldap-demo/web/ - **API接口**: http://localhost:8080/ldap-demo/api/ ## API接口文档 ### 用户管理 API | 方法 | 路径 | 说明 | |------|------|------| | GET | `/api/users` | 获取所有用户 | | GET | `/api/users/{username}` | 获取指定用户 | | POST | `/api/users` | 创建新用户 | | PUT | `/api/users/{username}` | 更新用户信息 | | DELETE | `/api/users/{username}` | 删除用户 | | GET | `/api/users/search?keyword={keyword}` | 搜索用户 | | PUT | `/api/users/{username}/password` | 更新用户密码 | | POST | `/api/users/{username}/validate` | 验证用户密码 | | POST | `/api/users/batch` | 批量创建用户 | | GET | `/api/users/statistics` | 获取用户统计 | ### 组管理 API | 方法 | 路径 | 说明 | |------|------|------| | GET | `/api/groups` | 获取所有组 | | GET | `/api/groups/{groupName}` | 获取指定组 | | POST | `/api/groups` | 创建新组 | | PUT | `/api/groups/{groupName}` | 更新组信息 | | DELETE | `/api/groups/{groupName}` | 删除组 | | GET | `/api/groups/search?keyword={keyword}` | 搜索组 | | POST | `/api/groups/{groupName}/members/{username}` | 添加用户到组 | | DELETE | `/api/groups/{groupName}/members/{username}` | 从组中移除用户 | | GET | `/api/groups/{groupName}/members` | 获取组成员 | | GET | `/api/groups/user/{username}` | 获取用户所属组 | | POST | `/api/groups/{groupName}/members/batch` | 批量添加用户到组 | | DELETE | `/api/groups/{groupName}/members/batch` | 批量从组中移除用户 | | GET | `/api/groups/statistics` | 获取组统计 | ### API请求示例 #### 创建用户 ```bash curl -X POST http://localhost:8080/ldap-demo/api/users \ -H "Content-Type: application/json" \ -d '{ "username": "john.doe", "password": "password123", "commonName": "John Doe", "surname": "Doe", "givenName": "John", "email": "john.doe@example.com", "department": "IT", "title": "Software Engineer" }' ``` #### 创建组 ```bash curl -X POST http://localhost:8080/ldap-demo/api/groups \ -H "Content-Type: application/json" \ -d '{ "name": "developers", "description": "Software Development Team", "category": "department" }' ``` #### 添加用户到组 ```bash curl -X POST http://localhost:8080/ldap-demo/api/groups/developers/members/john.doe ``` ## 项目结构 ``` src/ ├── main/ │ ├── java/com/example/ldap/ │ │ ├── config/ # 配置类 │ │ ├── controller/ # 控制器 │ │ ├── dto/ # 数据传输对象 │ │ ├── entity/ # 实体类 │ │ ├── exception/ # 异常处理 │ │ └── service/ # 服务层 │ └── resources/ │ ├── templates/ # Thymeleaf模板 │ └── application.yml # 配置文件 └── test/ # 测试代码 ``` ## 自定义配置 ### LDAP对象类配置 如果您的LDAP服务器使用不同的对象类,可以在配置文件中修改: ```yaml ldap: config: user-object-class: inetOrgPerson # 用户对象类 group-object-class: groupOfNames # 组对象类 ``` ### 属性映射配置 可以根据您的LDAP架构调整属性映射: ```yaml ldap: config: group-member-attribute: member # 组成员属性 group-role-attribute: cn # 组角色属性 ``` ## 安全考虑 1. **密码加密**: 用户密码使用BCrypt加密存储 2. **LDAP连接**: 支持LDAP连接池配置 3. **API安全**: 可以集成Spring Security进行API认证 4. **输入验证**: 所有输入都经过验证和清理 ## 故障排除 ### 常见问题 1. **连接LDAP失败** - 检查LDAP服务器地址和端口 - 验证管理员凭据 - 确认网络连接 2. **用户创建失败** - 检查用户DN格式 - 验证必填字段 - 确认LDAP权限 3. **组管理错误** - 验证组对象类配置 - 检查成员属性设置 ### 日志配置 在 `application.yml` 中启用详细日志: ```yaml logging: level: com.example.ldap: DEBUG org.springframework.ldap: DEBUG ``` ## 贡献 欢迎提交问题和功能请求! ## 许可证 本项目采用 MIT 许可证。