# g2rain-basis(业务支撑服务)
g2rain-basis 是面向多租户 SaaS 的 业务支撑微服务:承载组织、租户开通、用户与通行证、应用与授权、管控域与控制单元、菜单/页面/API 资源及角色关系等 共享业务域能力。与侧重字典、路由元数据、发号等「纯基础能力」的 g2rain-infra 互补。
源码仓库:github.com/g2rain/g2rain-basis (opens new window)
# 模块结构
g2rain-basis/
├── g2rain-basis-api/ # 对外契约
├── g2rain-basis-biz/ # Controller、Service、DAO
└── g2rain-basis-startup/ # 可执行入口(默认端口 8081)
# 功能域概览
| 领域 | 说明 |
|---|---|
| 组织 / 租户 | /organ、/tenant_provision |
| 用户与通行证 | /user、/passport、/internal_auth |
| 应用与授权 | /application、/application_suite、/application_authorization |
| 资源与权限 | /resource_*、/authority(菜单/资源/API 聚合) |
| 管控域 | /control_domain、/control_unit 及关联 |
| 登录态记录 | /login_token(见下文) |
| 审计日志 | /audit_event(见下文) |
| 静态 API Key | /personal_static_access_token |
| 第三方身份绑定 | /passport_idp_binding、idp_enterprise_organ 等 |
# 登录态模块(login_token)
用户/账号在 IAM 完成认证并发放 JWT 后,g2rain-iam 通过 Feign LoginTokenClient 调用本服务 POST /login_token/save,将当次登录上下文写入表 login_token,包括:
clientId、sessionType(USER / PASSPORT 等)organId、organType、passportId、userId、realNameadminUser、adminCompany等标志
同时提供 fetchTokenContext 等接口,供换票、刷新与网关侧身份构建使用。控制台可按应用维度查询登录态列表/分页(/login_token/list、/page)。
# 网关审计日志(Kafka → audit_event)
当网关开启 Kafka 日志(spring.kafka.enabled=true)时,TraceLoggingFilter 将结构化 GatewayEvent 发往 Kafka topic gateway.exchange.event。
basis 侧 AuditEventListener(需 g2rain.audit.event.enabled=true)消费消息并持久化到 audit_event 表,字段与网关事件 JSON 对齐(路径、方法、用户/组织、耗时、Accept-Language 等)。查询接口:
GET /audit_event/listGET /audit_event/page
默认配置(见 application.yml):
g2rain:
audit:
event:
enabled: false
topic: gateway.exchange.event
group-id: g2rain-basis-audit
# 静态 API Key(OpenAI 兼容接入)
表 personal_static_access_token 管理用户级长期令牌(哈希存储,不明文落库):
- 管理接口:
/personal_static_access_token(CRUD、分页) - 应用须开启
apiKeySupported方可为用户签发 - 网关
ApiKeyFilter调用/login_token下 API Key 解析接口(服务端 SHA-256 查库),映射为静态令牌会话上下文
适用于 OpenAI SDK 兼容的 Authorization: Bearer sk-... 调用模式。
# 第三方身份源(IdP)与钉钉
basis 维护通行证与外部身份源绑定及企业—机构映射,为 IAM 第三方登录提供数据面:
| 能力 | 说明 |
|---|---|
passport_idp_binding | 通行证 ↔ IdP 主体(idp_type + idp_subject) |
idp_enterprise_organ | 企业 IdP 与平台机构映射 |
IdpType 枚举 | DINGTALK(已实现)、FEISHU / WECHAT_WORK(预留) |
IAM 钉钉扫码/OAuth 换票成功后,经 basis 完成绑定校验与机构开通策略(application_idp_provision 等)。
# 资源与权限(前端驱动)
- 权限聚合:
GET /authority/menus、/resources、/user、/apis - 资源维护:
/resource_page、/resource_page_element、/resource_api_endpoint等
详见 资源与权限。
# 集成能力
- Nacos 服务发现与
g2rain-basis.yml动态配置 - Spring Cloud Stream(Redis) 输出
g2rain-syncer(组织名、应用名等变更通知) - 数据隔离:
g2rain.data.isolation.enabled - springdoc-openapi 接口文档
# 环境要求
- JDK 25+、MySQL、Redis、Nacos
git clone https://github.com/g2rain/g2rain-basis.git
mvn clean package -DskipTests
java -jar g2rain-basis-startup/target/g2rain-basis-startup-*.jar