|
||
---|---|---|
src/main | ||
.gitignore | ||
GITLAB-LDAP-SETUP.md | ||
README.md | ||
dex_config.yaml | ||
docker-compose-mattermost.yml | ||
docker-compose.yml | ||
docker-compose1.yml | ||
gitlab-ldap-config.rb | ||
ldap-init.ldif | ||
pom.xml | ||
step.md | ||
update-passwords.ldif | ||
users-only.ldif |
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 # 组角色属性
安全考虑
- 密码加密: 用户密码使用BCrypt加密存储
- LDAP连接: 支持LDAP连接池配置
- API安全: 可以集成Spring Security进行API认证
- 输入验证: 所有输入都经过验证和清理
故障排除
常见问题
-
连接LDAP失败
- 检查LDAP服务器地址和端口
- 验证管理员凭据
- 确认网络连接
-
用户创建失败
- 检查用户DN格式
- 验证必填字段
- 确认LDAP权限
-
组管理错误
- 验证组对象类配置
- 检查成员属性设置
日志配置
在 application.yml
中启用详细日志:
logging:
level:
com.example.ldap: DEBUG
org.springframework.ldap: DEBUG
贡献
欢迎提交问题和功能请求!
许可证
本项目采用 MIT 许可证。