|
|
|
|
|
# VBase 文档
|
|
|
|
|
|
|
|
|
|
|
|
欢迎来到 VBase 文档中心。
|
|
|
|
|
|
|
|
|
|
|
|
## 快速导航
|
|
|
|
|
|
|
|
|
|
|
|
| 文档 | 说明 |
|
|
|
|
|
|
|------|------|
|
|
|
|
|
|
| [API 文档](./api.md) | 完整的 API 接口文档,包含请求/响应格式 |
|
|
|
|
|
|
| [架构设计](./architecture.md) | 系统架构、模块设计、数据模型、BaaS 资源管理 |
|
|
|
|
|
|
| [部署指南](./deployment.md) | 环境配置、Docker 部署、运维指南 |
|
|
|
|
|
|
| [权限系统](./permission.md) | RBAC+ABAC 权限模型、三级权限体系使用指南 |
|
|
|
|
|
|
|
|
|
|
|
|
## 项目定位:可私有化部署的 IAM + BaaS 产品
|
|
|
|
|
|
|
|
|
|
|
|
VBase 是一个 **产品化的 IAM + BaaS 平台**,你可以将其**售卖/部署**给终端客户:
|
|
|
|
|
|
|
|
|
|
|
|
### 三层级架构
|
|
|
|
|
|
|
|
|
|
|
|
| 层级 | 角色 | 说明 |
|
|
|
|
|
|
|------|------|------|
|
|
|
|
|
|
| **平台层** | 平台运营商(你) | 管理 VBase 产品,提供部署和运维服务 |
|
|
|
|
|
|
| **实例层** | 客户(2C/2B/混合) | 独立部署 VBase 实例,完全隔离 |
|
|
|
|
|
|
| **业务层** | 终端用户 | 使用客户的产品,与你无直接关系 |
|
|
|
|
|
|
|
|
|
|
|
|
### 两种交付模式
|
|
|
|
|
|
|
|
|
|
|
|
1. **托管部署**:你在自己的云基础设施上为客户部署 VBase 实例,负责运维
|
|
|
|
|
|
2. **客户自托管**:客户在自己的环境中部署,数据完全自主可控
|
|
|
|
|
|
|
|
|
|
|
|
### 客户类型
|
|
|
|
|
|
|
|
|
|
|
|
- **2C 产品公司**(社交 App、电商平台):用 VBase 管理用户注册、登录、个人数据
|
|
|
|
|
|
- **2B 产品公司**(SaaS、企业软件):用 VBase 做多租户隔离、组织架构、权限管理
|
|
|
|
|
|
- **混合产品公司**(电商平台、O2O):同时管理 C 端用户和 B 端企业
|
|
|
|
|
|
|
|
|
|
|
|
## 核心特性
|
|
|
|
|
|
|
|
|
|
|
|
- **项目-资源隔离**: 多项目数据隔离,支持个人/团队场景
|
|
|
|
|
|
- **三级权限体系**: 平台级 → 项目级 → 资源级
|
|
|
|
|
|
- **RBAC + ABAC**: 角色与策略结合的细粒度权限控制
|
|
|
|
|
|
- **Redis 缓存**: 权限缓存 1 分钟 TTL,平衡性能与实时性
|
|
|
|
|
|
- **资源级权限**: 数据库、存储、函数、API 密钥的细粒度控制
|
|
|
|
|
|
|
|
|
|
|
|
## 快速开始
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 启动服务
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 使用 Docker Compose
|
|
|
|
|
|
docker-compose up -d
|
|
|
|
|
|
|
|
|
|
|
|
# 或使用源码
|
|
|
|
|
|
go run ./cli/main.go
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 2. 获取初始管理员密码
|
|
|
|
|
|
|
|
|
|
|
|
查看日志获取自动生成的管理员密码:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
docker logs vbase_app_1 | grep -A 5 "Initial admin"
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 3. 调用 API
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 登录
|
|
|
|
|
|
curl -X POST http://localhost:8080/auth/login \
|
|
|
|
|
|
-H "Content-Type: application/json" \
|
|
|
|
|
|
-d '{"username":"admin","password":"your-password"}'
|
|
|
|
|
|
|
|
|
|
|
|
# 访问用户列表
|
|
|
|
|
|
curl http://localhost:8080/users \
|
|
|
|
|
|
-H "Authorization: Bearer your-access-token"
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 配置 OAuth 登录
|
|
|
|
|
|
|
|
|
|
|
|
### Google 登录
|
|
|
|
|
|
|
|
|
|
|
|
1. 访问 [Google Cloud Console](https://console.cloud.google.com/)
|
|
|
|
|
|
2. 创建 OAuth 2.0 客户端
|
|
|
|
|
|
3. 配置环境变量:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
OAUTH_GOOGLE_ENABLED=true
|
|
|
|
|
|
OAUTH_GOOGLE_CLIENT_ID=your-client-id
|
|
|
|
|
|
OAUTH_GOOGLE_CLIENT_SECRET=your-client-secret
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### GitHub 登录
|
|
|
|
|
|
|
|
|
|
|
|
1. 访问 [GitHub Settings](https://github.com/settings/developers)
|
|
|
|
|
|
2. 创建 OAuth App
|
|
|
|
|
|
3. 配置环境变量:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
OAUTH_GITHUB_ENABLED=true
|
|
|
|
|
|
OAUTH_GITHUB_CLIENT_ID=your-client-id
|
|
|
|
|
|
OAUTH_GITHUB_CLIENT_SECRET=your-client-secret
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 常见问题
|
|
|
|
|
|
|
|
|
|
|
|
### Q: 首次启动时管理员密码是什么?
|
|
|
|
|
|
|
|
|
|
|
|
A: 如果未设置 `INIT_ADMIN_PASSWORD`,系统会自动生成随机密码并打印在日志中。
|
|
|
|
|
|
|
|
|
|
|
|
### Q: 如何重置管理员密码?
|
|
|
|
|
|
|
|
|
|
|
|
A: 直接修改数据库中的 `users` 表,使用 bcrypt 生成新密码哈希。
|
|
|
|
|
|
|
|
|
|
|
|
### Q: 支持哪些数据库?
|
|
|
|
|
|
|
|
|
|
|
|
A: 支持 MySQL 5.7+、PostgreSQL 12+、SQLite 3。
|
|
|
|
|
|
|
|
|
|
|
|
### Q: 如何实现单点登录(SSO)?
|
|
|
|
|
|
|
|
|
|
|
|
A: VBase 可以作为 OAuth2.0/OIDC 服务端,其他应用配置为 OAuth 客户端即可实现 SSO。
|
|
|
|
|
|
|
|
|
|
|
|
## 贡献指南
|
|
|
|
|
|
|
|
|
|
|
|
欢迎提交 Issue 和 PR。
|
|
|
|
|
|
|
|
|
|
|
|
## 许可证
|
|
|
|
|
|
|
|
|
|
|
|
MIT License
|