English Version | 简体中文
Brick 认证服务,提供用户认证、JWT 令牌管理和权限控制功能。
- 角色基础访问控制 (RBAC): 支持角色和权限的精细化管理
- 资源-操作权限模型:
resource/action格式的权限控制 - 动态权限分配: 支持运行时权限分配和修改
- 密码策略: 可配置的密码复杂度要求
- 会话管理: 支持会话跟踪和自动清理
- 审计日志: 完整的用户操作审计记录
- 登录限制: 可配置的登录尝试限制
- 规范化结构: 消除数据冗余,提高数据一致性
- 外键约束: 确保数据完整性
- 可扩展性: 易于添加新的角色和权限
- 环境变量支持: 全面的环境变量配置
- 配置文件: JSON格式的配置文件支持
- 配置验证: 启动时配置验证
- 运行时配置: 支持运行时配置重载
brick-auth/
├── cmd/ # 应用程序入口
│ ├── auth/ # 主认证服务
│ └── seeder/ # 数据种子工具
├── pkg/ # 核心包
│ ├── auth/ # 认证核心逻辑
│ ├── user/ # 用户管理
│ ├── httpapi/ # HTTP API 路由
│ ├── config/ # 配置管理
│ ├── database/ # 数据库管理
│ └── models/ # 数据模型
├── doc/ # 文档
│ ├── API_REFERENCE.md # API 参考文档
│ ├── DEPLOYMENT.md # 部署指南
│ └── DATABASE_REDESIGN.md # 数据库设计
├── scripts/ # 脚本文件
├── data/ # 数据文件
├── config/ # 配置文件
├── Dockerfile # Docker 构建文件
├── entrypoint.sh # 容器入口脚本
├── go.mod # Go 模块文件
└── README.md # 本文档
/etc/brick-auth/- 配置文件/var/log/brick-auth/- 日志文件/var/lib/brick-auth/- 数据文件/app/- 应用程序文件
BRICK_AUTH_PORT- 服务端口 (默认: 17001)BRICK_AUTH_HOST- 服务主机 (默认: 0.0.0.0)BRICK_AUTH_DB_PATH- 数据库路径 (默认: /var/lib/brick-auth/auth.db)BRICK_AUTH_PRIVATE_KEY_PATH- 私钥路径 (默认: /app/private.pem)BRICK_AUTH_TOKEN_EXPIRY- 令牌过期时间 (默认: 24h)BRICK_AUTH_PASSWORD_MIN_LENGTH- 密码最小长度 (默认: 8)BRICK_AUTH_MAX_LOGIN_ATTEMPTS- 最大登录尝试次数 (默认: 5)BRICK_AUTH_ENABLE_AUDIT_LOG- 启用审计日志 (默认: true)BRICK_AUTH_ENABLE_SESSION_TRACKING- 启用会话跟踪 (默认: true)
- 非 root 用户运行 (brick:1000)
- 标准 Linux 目录结构
- 健康检查端点
- 环境变量配置
- 合并的 RUN 命令减少镜像层数
docker build -t brick-auth:latest .cd ../brick-deployment
docker-compose up authcurl http://localhost:17001/healthcurl http://localhost:17001/versionPOST /login- 用户登录POST /validate- 验证 JWT 令牌GET /validate- 验证 JWT 令牌 (兼容性)POST /refresh- 刷新令牌GET /me- 获取当前用户信息POST /token/decode- 解码令牌
GET /health- 健康检查GET /version- 版本信息
GET /admin/users- 获取所有用户POST /admin/users- 创建用户GET /admin/users/:id- 获取用户详情PUT /admin/users/:id- 更新用户DELETE /admin/users/:id- 删除用户
GET /admin/roles- 获取所有角色POST /admin/roles- 创建角色GET /admin/roles/:id- 获取角色详情PUT /admin/roles/:id- 更新角色DELETE /admin/roles/:id- 删除角色
GET /admin/permissions- 获取所有权限POST /admin/permissions- 创建权限GET /admin/permissions/:id- 获取权限详情PUT /admin/permissions/:id- 更新权限DELETE /admin/permissions/:id- 删除权限
- 用户名:
brick-super-admin - 密码:
brickpass - 角色:
super-admin - 权限: 所有权限,包括用户、角色、权限管理
- 用户名:
brick-admin - 密码:
brickpass - 角色:
admin - 权限: 时钟管理和用户查看权限
- 用户名:
brick - 密码:
brickpass - 角色:
user - 权限: 基本时钟查看权限
权限采用 resource/action 格式:
clock/view- 查看时钟状态clock/clients- 查看时钟客户端clock/server_mode- 管理时钟服务器模式clock/servers- 管理时钟服务器user/read- 读取用户信息user/create- 创建用户user/update- 更新用户user/delete- 删除用户role/*- 角色管理权限permission/*- 权限管理权限
| 权限 | super-admin | admin | user |
|---|---|---|---|
| clock/view | ✅ | ✅ | ✅ |
| clock/clients | ✅ | ✅ | ✅ |
| clock/server_mode | ✅ | ✅ | ❌ |
| clock/servers | ✅ | ✅ | ❌ |
| user/read | ✅ | ✅ | ❌ |
| user/create | ✅ | ❌ | ❌ |
| user/update | ✅ | ❌ | ❌ |
| user/delete | ✅ | ❌ | ❌ |
| role/* | ✅ | ❌ | ❌ |
| permission/* | ✅ | ❌ | ❌ |
- 位置:
/var/log/brick-auth/app.log - 格式:JSON 格式
- 轮转:自动日志轮转
- 端点:
http://localhost:17001/health - 响应:服务状态和版本信息
- 自动记录所有认证事件
- 包含用户操作、IP地址、用户代理等信息
- 自动清理90天前的日志
- 使用 SQLite 数据库存储用户信息
- RSA 密钥对进行 JWT 签名
- bcrypt 密码哈希
- 基于角色的权限控制
- 24小时 JWT 令牌过期时间
- 支持 PKCS1 和 PKCS8 私钥格式
- 自动会话和审计日志清理
- CORS 支持
- 配置验证和错误处理
- 最小长度:8个字符
- 要求大写字母:是
- 要求小写字母:是
- 要求数字:是
- 要求特殊字符:否
- 最大登录尝试次数:5次
- 锁定时间:15分钟
- 令牌过期时间:24小时
- 刷新令牌过期时间:7天
- 会话过期时间:24小时
-
数据库连接失败
- 检查数据库文件权限
- 确保目录存在且可写
-
私钥加载失败
- 检查私钥文件路径
- 验证私钥格式 (PKCS1 或 PKCS8)
-
权限验证失败
- 检查用户角色和权限分配
- 验证令牌有效性
-
配置错误
- 检查环境变量设置
- 验证配置文件格式
# 检查服务状态
docker ps | grep brick-auth
# 查看服务日志
docker logs brick-auth
# 测试认证端点
curl -X POST http://localhost:17001/login \
-H "Content-Type: application/json" \
-d '{"username":"brick-admin","password":"brickpass"}'
# 测试令牌验证
curl -H "Authorization: Bearer <token>" \
http://localhost:17001/validate
# 测试超级管理员API
curl -H "Authorization: Bearer <super-admin-token>" \
http://localhost:17001/admin/users详细文档请查看 doc/ 目录:
- 用户管理 API ✅
- 角色管理 API ✅
- 权限管理 API ✅
- JWT 令牌管理 ✅
- 会话管理 ✅
- 审计日志 ✅
- 密码策略配置
- 会话管理增强
- 审计日志界面
- 密码重置功能
- 多因素认证
- API 版本控制