# 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_bindingidp_enterprise_organ

# 登录态模块(login_token)

用户/账号在 IAM 完成认证并发放 JWT 后,g2rain-iam 通过 Feign LoginTokenClient 调用本服务 POST /login_token/save,将当次登录上下文写入表 login_token,包括:

  • clientIdsessionType(USER / PASSPORT 等)
  • organIdorganTypepassportIduserIdrealName
  • adminUseradminCompany 等标志

同时提供 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/list
  • GET /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

# 相关文档