ldap-demo
Go to file
Guwan 94c219f139 fix: first 2025-08-28 07:24:46 +08:00
src/main fix: first 2025-08-28 07:24:46 +08:00
.gitignore fix: first 2025-08-28 07:24:46 +08:00
README.md fix: first 2025-08-28 07:24:46 +08:00
pom.xml fix: first 2025-08-28 07:24:46 +08:00

README.md

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 文件:

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. 构建和运行

# 克隆项目
git clone <repository-url>
cd ldap-demo

# 构建项目
mvn clean compile

# 运行项目
mvn spring-boot:run

4. 访问应用

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请求示例

创建用户

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"
  }'

创建组

curl -X POST http://localhost:8080/ldap-demo/api/groups \
  -H "Content-Type: application/json" \
  -d '{
    "name": "developers",
    "description": "Software Development Team",
    "category": "department"
  }'

添加用户到组

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服务器使用不同的对象类可以在配置文件中修改

ldap:
  config:
    user-object-class: inetOrgPerson  # 用户对象类
    group-object-class: groupOfNames  # 组对象类

属性映射配置

可以根据您的LDAP架构调整属性映射

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 中启用详细日志:

logging:
  level:
    com.example.ldap: DEBUG
    org.springframework.ldap: DEBUG

贡献

欢迎提交问题和功能请求!

许可证

本项目采用 MIT 许可证。