Skip to content

ArchAIHarness/user-center

Repository files navigation

User Center

多租户 SaaS 内核的用户中心

Java Spring Boot License

定位

user-center 是 ArchAIHarness 多租户 SaaS 内核的用户中心,负责用户、账号、访问密钥、角色与用户侧租户权限视图。

它不承载具体业务规则,只提供身份主数据、访问凭据和租户权限查询能力。

核心能力

能力 说明
用户管理 维护用户主体、档案和状态
账号管理 支持多账号体系与登录策略
AccessKey 生成、校验和管理 AK/SK
角色视图 维护用户侧租户角色与权限视图
事件同步 消费 tenant-center 事件并同步租户成员关系
PBAC 提供策略化访问控制基础能力

架构分层

user-center/
├── common/          # 共享内核,纯 Java 基础类型
├── domain/          # 用户领域模型,无 Spring 依赖
├── application/     # 用户用例编排
├── infrastructure/  # JPA / Redis / Kafka / PBAC 等技术实现
├── interfaces/      # Controller / Filter / OpenAPI
└── bootstrap/       # 启动入口与装配

当前实现包名为 top.cloudlab.user。作为公开模板复用时,可按组织命名规范迁移包名。

核心流程

AccessKey 校验

sequenceDiagram
    participant Gateway as gateway
    participant User as user-center
    Gateway->>User: POST /access/validate
    User->>User: verify access id and secret
    User-->>Gateway: user identity and tenant roles
Loading

租户成员同步

sequenceDiagram
    participant Tenant as tenant-center
    participant Kafka as Kafka
    participant User as user-center
    Tenant->>Kafka: publish tenant_user_event_topic
    Kafka->>User: consume tenant user event
    User->>User: upsert tenant role view
Loading

API

方法 路径 说明
GET /user/detail 获取用户信息
POST /api/account/login 账号登录
POST /api/account 创建账号
POST /api/account/bind 绑定账号
POST /api/access-key 创建 AK/SK
GET /api/access-key 查询访问密钥
DELETE /api/access-key/{id} 删除访问密钥
POST /access/validate 校验 AK/SK
GET /access/access_secret 查询访问密钥信息
GET /tenant/role 查询用户租户角色视图

Header 规范

Header 说明
x-user-id 当前访问用户 ID
x-tenant-id 当前租户 ID
x-tenant-ids 用户可访问租户 ID 集合
x-tenant-permissions 租户权限集合
x-trace-id 链路追踪 ID

所有上下文 Header 必须使用小写。

环境变量

变量 默认值 说明
SERVER_PORT 8080 服务端口
DB_URL jdbc:mysql://localhost:3306/user_center 数据库连接地址
DB_USERNAME user_center 数据库用户名
DB_PASSWORD 数据库密码
REDIS_HOST localhost Redis 地址
REDIS_PORT 6379 Redis 端口
REDIS_PASSWORD Redis 密码
KAFKA_BOOTSTRAP_SERVERS localhost:9092 Kafka 地址

快速开始

mvn clean package
java -jar bootstrap/target/bootstrap-1.0.0-SNAPSHOT.jar

Docker

docker build -t <registry>/archaiharness/user-center:latest .
docker push <registry>/archaiharness/user-center:latest

Kubernetes 示例

kubectl set image deployment/user-center user-center=<registry>/archaiharness/user-center:latest -n <namespace>
kubectl logs -n <namespace> -l app=user-center --tail=50 -f

约束

  • domain 不依赖 Spring、JPA、Web。
  • application 不依赖 infrastructureinterfaces
  • interfaces 不直接注入 Repository。
  • 访问密钥明文不得落库。
  • ddl.sql 位于仓库根目录。

License

MIT License

—— Engineered by Architects · Empowered by AI ——

About

用户中心 · 面向多租户体系的用户模型、账号与组织协作能力样例

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors