LibrePass/LibrePass-Server
GitHub: LibrePass/LibrePass-Server
LibrePass Server 是一个基于 Spring Boot 和 Kotlin 构建的密码管理器云端后端,提供端到端加密、跨设备同步和安全的 RESTful API 服务。
Stars: 23 | Forks: 1
# LibrePass Server
LibrePass Server 是 LibrePass 密码管理器的云端后端基础设施,构建时重点关注**安全性、可扩展性和可靠性**。该服务器提供 API、数据库服务和同步功能,能够支持跨多个设备的安全密码管理。
## ⚠️ 项目状态
本项目是一个**业余项目**,为我提供了极佳的学习体验。它教会了我以下方面的宝贵经验:
- 基于 Spring Boot 的**后端架构**和微服务模式
- 后端系统中的**密码学与安全**实现
- 针对敏感数据存储的**数据库设计**和优化
- **RESTful API 设计**和身份验证机制
- 包含共享库的**多模块项目结构**
- **Docker 容器化**和部署策略
- **云端同步**协议与冲突解决
虽然该项目不再维护,但其代码库依然是这些学习成果的证明,并可作为安全后端密码管理系统的参考实现。
## 🔐 核心功能
- ✅ **端到端加密** — 所有密码在传输前均在客户端进行加密
- ✅ **安全的 API 身份验证** — 基于 token 的身份验证与数据库存储
- ✅ **密码库管理** — 创建、读取、更新和删除加密的密码库
- ✅ **跨设备同步** — 在多个设备间同步加密数据
- ✅ **用户账户管理** — 注册、登录和账户设置
- ✅ **数据库持久化** — 通过 Spring Data JPA 实现可靠的存储
- ✅ **Docker 支持** — 开箱即用的容器化应用程序
- ✅ **RESTful API** — 为客户端应用程序提供简洁且文档完善的 API endpoint
- ✅ **TOTP 支持** — 通过基于时间的一次性密码进行双因素身份验证
- ✅ **离线同步** — 通过服务器协调处理客户端的离线更改
## 🛠️ 技术栈
### 框架与平台
- **Spring Boot** — 现代的 Java/Kotlin Web 框架 (v3.3.2)
- **Kotlin** — 用于类型安全开发的主要语言 (v2.0.0)
- **Java** — JDK 21 (通过 Eclipse Temurin)
### 数据与安全
- **Spring Data JPA** — 数据库抽象与 ORM
- **密码学** — 用于加密/解密的自定义 libcrypto 库
- **GSON** — JSON 序列化与反序列化
### 部署
- **Docker** — 使用多阶段构建生成优化的容器镜像
- **Maven** — 项目构建与依赖管理
## 📋 项目结构
本项目采用多模块 Maven 结构进行组织:
```
LibrePass-Server/
├── server/ # Spring Boot REST API server
├── client/ # Client library for interacting with APIs
├── shared/ # Shared utilities and models
├── docker-compose.yml
├── Dockerfile # Multi-stage Docker build
└── pom.xml # Parent POM configuration
```
### 模块
- **server** — 包含 REST endpoint 和业务逻辑的主 Spring Boot 应用程序
- **client** — 供客户端与 LibrePass Server API 交互的库
- **shared** — 跨模块使用的共享代码、模型和实用程序
## 📚 文档
有关详细的设置说明、API 文档和部署指南,请参阅 [LibrePass 文档](https://github.com/LibrePass/LibrePass-Docs/tree/main/docs)。
## 🔐 安全考量
该后端实施了多项安全措施:
1. **端到端加密** — 密码在传输到服务器之前已加密
2. **安全的身份验证** — 使用数据库存储的 token 进行请求验证
3. **HTTPS 通信** — 所有 API 流量在传输过程中均已加密
4. **密码哈希** — 使用行业标准算法对用户凭证进行哈希处理
5. **无明文存储** — 数据库中绝不以未加密方式存储密码
6. **输入验证** — 验证并清理所有 API 输入
7. **速率限制** — 防御暴力破解和 DOS 攻击
## 📄 许可证
本项目基于 **GNU Affero General Public License v3.0** (AGPL-3.0) 授权
## 🔗 相关项目
- **[LibrePass Android](https://github.com/LibrePass/LibrePass-Android)** — Android 移动端客户端
## 💡 我的收获
这个业余项目教会了我以下方面的宝贵经验:
### 后端开发
- ✅ 构建具有多模块架构的可扩展 Spring Boot 应用程序
- ✅ RESTful API 设计原则与最佳实践
- ✅ 用于数据库抽象和 ORM 的 Spring Data JPA
- ✅ 依赖注入和控制反转模式
- ✅ 异常处理和错误响应标准化
- ✅ API 版本控制和向后兼容性
### 密码学与安全
- ✅ 在后端系统中实现端到端加密
- ✅ 安全的密码处理和哈希策略
- ✅ Token 生成和基于数据库的验证
- ✅ 用户身份验证和授权流程
- ✅ HTTPS/TLS 通信安全
- ✅ 保护传输中和静态的敏感用户数据
- ✅ 速率限制和 DOS 保护机制
### 数据库与持久化
- ✅ 针对加密数据的关系型数据库设计
- ✅ JPA 实体关系和约束
- ✅ 数据库迁移策略
- ✅ 索引和查询优化
- ✅ 处理并发访问和事务
### DevOps 与部署
- ✅ 用于优化镜像的多阶段 Docker 构建
- ✅ 用于本地开发和测试的 Docker Compose
- ✅ 环境配置和密钥管理
- ✅ 容器化应用程序部署模式
### 架构与设计模式
- ✅ 微服务和模块化架构
- ✅ 云同步协议
- ✅ 数据一致性和冲突解决
- ✅ 关注点分离和 SOLID 原则
- ✅ 后端服务的测试策略
本项目是一次全面的学习体验,将实际的后端开发与现实世界中的安全挑战结合在一起。它让我深入了解了安全的云服务是如何运作的,以及保护敏感用户凭证所涉及的复杂性。
**怀着 ❤️ 构建,作为一次关于后端开发与安全的学习体验**
标签:Docker, RESTful API, Spring Boot, 后端开发, 安全防御评估, 密码管理器, 提示词优化, 端到端加密, 请求拦截